核心認知

我的想法是,第一專業永遠比第二專業重要。如果寫了程式(或學習其他領域知識)以後欲罷不能,甚至覺得為此課業不及格也可以,那我會建議趕快離開醫學界吧,免得以後當了 intern 害死人。

  1. 第一專業 醫學本行 的遊刃有餘絕對是跨界必勝的先決條件。如果新思維的蔡依橙校長只是一個庸庸碌碌沒什麼成就的看片機器,能夠組織起今天的新思維?
  2. 吾輩醫學生當問問自己,我為何而學?我需要學編譯原理、寫編譯器嗎?我需要學會怎麼架設防火牆當 cracker 嗎?我覺得,第二專業的目的乃在於充分輔助第一專業之突破。所以,應該仔細思考自己未來的定位並且選擇正確的指導者及技能樹投入。

基本

基本部分含三個項目,即基本的程式技能、電腦知識、網路知識。

  1. 程式技能,我想 Codecademy 雖然被業界人士詬笑,但他確實可以練出一點基本的 sense
  2. 基本的電腦知識與網路概論:去找一本計算機概論讀一遍是最快的方法。(書很多,大同小異,去圖書館找一本吧)

何種語言?

對於醫學生來說,我推薦使用 Python。它目前已經是大數據、建模、機器學習、計算機視覺化等與醫療關聯性強的領域的「原型」語言(用來快速解決問題)(有效率的解決方案多是 C++/Java)。在其他領域,例如動態網站(Django / Flask)、網路爬蟲、系統管理(Ansible)也有數一數二的表現。

在前往 Python 大道的路上,有幾點建議

  1. 做完 Codecademy 上的 Python 課程
  2. 理解 Python2 / Python3 的差異:維基百科:Python
  3. 安裝 Anaconda (到官網下載)並學會開啟 Jupyter 環境 Youtubee:Jupyter 操作入門。Youtube 上有不少影片,不要連按搜尋鍵都懶哪。
  4. 挑選一本好的教科書(以往推 A Bite of Python,現改推薦 Think Python),真槍實彈的在沒有提示下寫 code。注意 Python 2 和 Python3 的差異性。

其他醫學生也可以學習的語言包括 R / Matlab / Java。

中階

路有很多,我個人覺得迅速熟練底下幾個(按順序):

  1. 學會 STFW,瞭解 StackOverflow 這個網站的操作、關鍵字選取及搜尋。
  2. 追蹤 Planet Python
  3. 學習程式碼進階操作
    1. 包括如何安裝 package
    2. 如何維持良好的程式碼組織架構
    3. Python 內豐富的資料結構的熟練操作

進階

雖然名曰進階,其實是新手的進階

  1. 該找演算法的書來讀了。
  2. 加入社群
  3. 嘗試設計一些東西或解決自己生活上的重複事項(如看股票。能不能讓程式自己去抓、存為 Excel 檔案呢?)
  4. 挑戰一些題目

結語

好啦,到了這邊,差不多來到了新手村的出口了(再說一遍,上面那些都完成後,也只不過來到了新手村的出口!。到了這裡想說:「我只要學這樣,有基本的概念就能理解世界的運作了」,是太小看數十年來承先啟後的工程師啦!未來的路還很遙遠呢,甚至,我們連資料視覺化機器學習關聯性數據庫的毛皮都還沒開始講!

補充(2016/04/09 更新)

其實我現在已經沒有再寫 python 了,我現在主要使用 R 來處理我的各種問題。個人的興趣在於資料科學這一塊,而在資料處理上,R 相比於 Python 沒有弱勢(在微軟加入戰局買下 Revolution Analytics 之後又更強了)。另外,使用 Shiny 架設資料展事頁面也非常方便。不過,在機器視覺化部分,可能會讀 Python 但是做 Matlab 方面的學習(因為未來要加入 BCI 實驗室)所以 Python 比較像是思考工具 XD

手頭上有的 Python 讀物,大致上就是機器學習、計算機視覺、科學計算(如建模、小波轉換),可能用語言去體會算法,再把算法知識應用到 Matlab 跟 R 上。