對於數學或理論背景的碩博士生來說,學習編程往往是一項挑戰。特別是在閱讀原始碼時,我們習慣以數學的邏輯思考——從函數定義開始,再逐漸推演具體的應用。但日本作者西尾泰和在《エンジニアの知的生産術》中提出的閱讀原始碼順序,讓我重新思考了程式閱讀的策略。
他的框架讓我體會到,工程師思考的重點是「先掌握全局,再逐層深入」,這種系統化的閱讀方式能有效提升學習效率。以下是他提出的閱讀原始碼的七個步驟,以及我對如何套用在研究中的思考:
1. 如果有解說內部構造的文檔,就先讀
2. 讀目錄資料夾 (Directory) 的構造
3. 讀檔案 (File) 的構成
4. 調查各種簡寫
5. 了解數據 (Data) 的結構
6. 把握函數之間的關係
7. 最後才深入閱讀函數
▋數學思維與工程思維的差異
數學背景的訓練通常從函數定義開始,並專注於理論與公式的邏輯一致性。我們往往在抽象層面完成推演後就結束討論,很少深入探討具體的實作細節。
但西尾泰和的框架提醒我,工程師的思維是從系統輸出開始,然後一步步回推,直到釐清每個輸入、處理環節與輸出之間的關係。這種先掌握全局、再逐步拆解的方式,與數學的「由小到大」推演完全相反。
這種工程思維讓我理解到,編程不只是寫出函數,更重要的是理解整個系統如何協同運作,並在系統中找到最有效率的解法。
▋如何練習工程師的程式閱讀思維
為了從數學思維切換到工程思維,我開始嘗試用西尾泰和的步驟來閱讀新的程式碼。以下是我將這七個步驟應用於工作中的具體做法:
1. 先看說明文件|閱讀專案的內部說明文件,快速了解系統的運作目的與整體架構。這能幫助我在閱讀程式碼前,掌握輸出目標。
2. 檢視目錄結構|了解程式專案中資料夾的邏輯排列,搞清楚不同模組的責任範圍,建立初步的全局認知。
3. 理解檔案構成|深入研究各檔案的功能與用途,釐清它們如何共同構成完整系統。
4. 調查簡寫與縮寫|針對程式中的縮寫或專有名詞,透過查詢補充知識,避免因不熟悉術語而卡住。
5. 把握數據結構|理解資料如何在系統中流動,這一步能幫助我釐清資料處理的邏輯,避免後續錯誤解讀。
6. 建立函數之間的關係圖|繪製出各個函數之間的相互關聯,這讓我能夠直觀理解哪些函數負責哪些環節的處理。
7. 最後深入閱讀函數細節|在掌握了全局與結構後,再進一步研究每個函數的具體實作。這時,閱讀函數的效率會大幅提升。
▋如何在研究專案中應用工程師思維
我發現,這種「從輸出目標開始,逐步拆解系統」的方式,不只適用於程式碼閱讀,對碩博士研究也非常有幫助。以下是我實踐的幾個步驟:
1. 設定研究的最終成果|從期刊論文或研究報告的預期成果開始,思考這篇論文需要回答什麼問題、解決什麼難題。
2. 明確研究輸入|確認研究需要哪些資料或工具作為輸入,例如數據集、實驗設備或程式模組。
3. 規劃研究過程中的每個環節|拆解整個研究過程,包括資料收集、分析方法、理論驗證等,確認每一環節的預期成果。
4. 每週檢視進度與拆解問題|每週逐步檢討研究進度,針對每個環節中的問題深入追問。這能讓研究不斷向前推進,並且在遇到瓶頸時,快速找出解法。
5. 在10到12週內達成階段性成果|透過每週的逐步累積,在一個學期內完成具有明確成果的研究報告或論文。
▋小結:從全局掌握到逐步實踐
透過這幾年的學習與實踐,我逐漸體會到,程式設計不只是寫出正確的程式碼,而是要掌握整個系統的運作。研究工作也是如此,我們必須先定義最終目標,然後逐層拆解問題,直到每個細節都清晰可見。
無論是在閱讀程式碼還是進行研究,這種工程師的思維都能幫助我們有效管理工作進度,避免迷失在細節中。希望這些心得能幫助碩博士生們,在學習程式設計或進行研究時,更加順利有效地完成每個階段的目標。