英文原文:All Programmers Are Self-Taught,編譯:外刊IT評論
在我十幾歲的時候就開始玩甲級級棒球。我水平很差,但當我決定要做好什麼事時,最終總能如我願。現在我是計算機專業3年紀的學生。在程式設計上,有些事情和體育是截然不同的:棒球教練可以教會你如何打棒球,但一個計算機教授卻不能教你如何程式設計。
我很吃驚,在整個大一期間,我的老師或教授從來不點評我的程式碼,大二時更是如此。我們的作業很多,題目很難,但在完成了資料結構課上的2000行的程式碼後,我從來沒有收到過老師的任何一條評論——只要程式能編譯通過,單元測試顯示沒有錯誤,這就行了。直到遇到了一個小組開發的專案,我才認識到我的程式碼寫的多爛,我才開始詢問:好的程式應該如何寫。
但是,什麼樣的程式碼才是好的程式碼?我花了大量的時間來提高程式碼的可讀性,新增註釋。我努力模仿UNIX的哲學觀,力求簡約,首先讓程式能跑起來,在此基礎之上,在需要的情況在進行優化。複雜的東西要逐步增加。除非必要,我不使用執行緒。但是,說實話,我不知道這是不是好的程式碼(說實話,我覺得自己水平很差)。
我很幸運,能和一群優秀同學一起工作,他們都是出色的程式設計師,他們在微軟、谷歌、亞馬遜等公司實習。他們的觀點都很一致,認為自己的知識都是自己總結或從其他程式設計師那裡學到的。即使是非常資深的軟體工程師也有這樣的看法。所以,我的結論是:
所有程式設計師都是自學成才的。
我受的教育給了我很好的基礎:資料結構,演算法,資料庫設計,平行計算,網路程式設計,敏捷開發以及各種程式設計模式。但所有的這些,即使是它們使得程式設計更高效和更精巧,你仍然可能用錯它們——我曾經看過一些學生在這些課程上學習成績非常好,但寫的程式碼卻讓人想哭。
我並不認為學過電腦科學、軟體工程或得到一個大學文憑會有多大的用處,如果你想靠寫程式碼為生,自學是你不可缺少的途徑。