譯文丨爲何作程序員會讓我成爲一個更好的醫生?

clipboard.png

Stanford Medicine Unplugged 是一個爲學生提供的論壇,記錄他們在醫學院的經歷。學生們撰寫的文章在學年期間每週在Scope上發表一次;整個系列博客能夠在Stanford Medicine Unplugged分類中找到。程序員

原文連接:https://scopeblog.stanford.ed...算法


Tim Keyes Published on March 18, 2020

做爲一名醫學博士生,個人研究方向更多的是機器學習和算法開發,而不是生物學,我花了大量的時間來思考我所須要的研究技能和做爲一名將來的醫生提供良好的臨牀護理所須要的技能之間的脫節。編程

個人研究重點是創建小兒癌症治療反應和復發的預測模型,因此個人大部分時間都是在寫 R 和 Python 代碼,用來整理、可視化和建模從患者那裏收集的數據。然而,儘管我把大部分時間都花在了編程上,但我知道,在臨牀環境中,編碼並非護理病人所需的前 20 名(.........或者說前 100 名)的技能。機器學習

不過,幾年來在這兩種環境下的經驗告訴我,我從作程序員的過程當中學到的一些教訓,能夠很好地應用到我做爲一名醫學生的生活中--這也是我將來平衡這兩個世界的好兆頭。函數

如下是個人一些感悟。學習

將問題分解成子問題

對於任何數據科學或編程項目來講,將你的整體目標分解成一系列更小、更易管理的目標,每次都能處理好的目標是相當重要的。例如,若是你要實現一個有三個不一樣步驟的算法,一個最佳的策略一般是先寫出分別實現每一個步驟的代碼,而後再寫出一個將它們結合在一塊兒的函數。經過這樣作,你可讓你的代碼保持有條理、高效和易懂。測試

我發現本身在醫學上也應用了一樣的原則。例如,在記錄病史時,將對話分紅幾個獨立的步驟,即 「如今的病史」、「過去的病史」、「社會史」等,每個步驟都對應着病人的背景和需求的一小部分。這樣一來,我就能可靠地得到我所須要的全部信息,不會遺漏任何重要的信息。編碼

備忘錄式記憶法

在計算機科學中,「備忘錄化」是一種編碼技術,能夠經過重用以前已經解決過的問題的答案來加快算法的速度。換句話說,「備忘錄化」的算法只須要花時間從頭開始解決一個問題一次 —— 之後每次遇到一樣的問題,它就會簡單地查找舊的解決方案(就像備忘同樣),而不是第二次從頭開始從新解決問題。這意味着,算法第一次解決問題的速度會比較慢,但在之後解決一樣的問題時,效率會提升不少。spa

從不少方面來講,我以爲作醫學生就像上了一堂記憶力的大師課。不少東西剛開始學的時候都會讓人目不暇接,必需要掌握好小的步驟,才能向大的方向發展。好比說,在醫學院的第一個季度,我在聽診器上掙扎着要經過聽診器聽出任何心臟的聲音,我和同窗們練習了好幾遍才終於成功。他們向我展現了他們的聽診器放置方法,若是對我也有效,我就把它做爲個人過程的一部分。blog

一年後,全面的心臟檢查 -- 包括聽雜音、摩擦和心跳加速--成爲個人反射性工做,以致於我幾乎不須要考慮。儘管一開始很慢,但我最終仍是掌握了每個步驟,並結合過去對我(或個人同窗們)有效的方法,造成了一套徹底「備忘錄式記憶」的方法。

常常檢查邊緣案例

在編程中,「邊緣案例」指的是你一般不會想到的狀況。例如,在一個計算機程序中,比較兩個數字並告訴你哪個大,「邊緣狀況」多是指當兩個數字徹底相同時發生的狀況(由於從技術上講,兩個數字都不比另外一個大)。通常來講,思考和測試邊緣案例對於確保你的代碼不會在看到一些意料以外的東西時崩潰是很重要的 -- 這可能會致使災難性的結果!

在醫學中,對邊緣案例的核算須要對邊緣案例進行覈算,這就要求咱們在編寫代碼時,要考慮到邊緣案例的重要性。

在醫學上對邊緣案例進行覈算,須要和編程中同樣的創造力和前瞻性思惟。一般狀況下,醫生們必須進行「若是」的思考,以考慮到多種診斷的可能性,即便看起來只有一兩個可能性。例如,我和個人顧問有一個病例,一個病人在開始化療前一天就出現了流鼻涕。基於病人過去的季節性過敏史和那天的高花粉量,大多數跡象彷佛代表沒有什麼可擔憂的。可是,爲了排除病人感染了急性病毒性感染的可能性不大,當他的免疫系統被化療壓制後可能會變得嚴重的「邊緣狀況」,個人顧問在開始治療前必定要作一些常見的蟲子的測試。

儘管計算機科學和醫學看似不一樣,但我已經開始欣賞他們的許多類似的思惟方式。其中包括對創造力、深思熟慮和高效解決問題的共同承諾。基於這些緣由以及更多的緣由,我但願 —— 儘管我不太可能在病房裏直接使用個人編碼技能 —— 但做爲一名程序員最終會讓我成爲一名更好的醫生。

clipboard.png

相關文章
相關標籤/搜索