能清楚解釋自己的程式邏輯給別人聽,才能算是真正掌握了技術。
2009年,我踏入了軟體開發的職場。這份工作是在校內的就業博覽會上找到的,是一家新創公司。相信待過新創公司的人都知道,這樣的公司沒有什麼正式的教育訓練,大多數時候都是在實際工作中邊做邊學。
但畢竟這些都是真實的專案,所以核心功能仍由資深工程師負責,菜鳥工程師只做支線任務,而這給了我第一次與主管協作機會。主管經常邀請我觀摩他的開發過程,讓我搬張椅子坐在旁邊,並鼓勵我隨時提問。他會暫停工作,耐心解釋每一個步驟。現在回想起來,這其實就是我第一次體驗結對開發(Pair Programming),儘管當時我還不知道這個專業名詞。
由於我在大四時已修完大部分學分,我向公司提出了畢業前提早進入工作崗位的請求,公司欣然同意。這讓我比其他應屆畢業生提前了兩個月進入職場,積累了更多實戰經驗。而自然而然,成為了帶領其他新人上手的角色。
我嘗試模仿主管的做法,與另一位新人進行結對開發。這次,我負責寫程式並向對方解釋邏輯。然而,我很快就發現,同時一邊程式一邊解釋程式邏輯,整個過程遠比想像中困難許多。在回答同事的問題時,我常常發現自己對某些概念的理解存在誤解或盲點。
這段經歷讓我意識到,許多優秀的工程師,都具備清晰解釋複雜程式邏輯的能力。僅僅能寫出可以執行的程式,只是最基本的要求。真正的挑戰在於:
只有同時達到這兩點,才能說是真正掌握了這項技術。
著名物理學家 Richard Feynman 曾說:「如果你不能夠用簡單的語言向他人解釋一個概念,那麼你自己也還沒有真正理解它。」
費曼學習法強調:
費曼學習法不僅適用於物理學,在軟體開發領域同樣適用。當我們嘗試向他人解釋程式邏輯時,往往能發現自己理解中的不足,從而促進更深入的學習。
幸運的是,結對開發在當今已是廣為人知。只要主動尋求協作機會,通常不難找到願意一起進行結對開發的同事。然而,即使在無法找到實際夥伴的情況下,我們仍有替代方案,利用 ChatGPT 作為虛擬夥伴。
你可以將一段程式碼提供給 ChatGPT,並進行角色扮演,模擬結對開發的過程。例如:
[在此處插入你的程式碼]
---
你是我結對開發的夥伴,讓我們開始進行結對開發吧。請你扮演一個經驗豐富的
軟體工程師,仔細審視我的程式碼,並提出問題或建議。