致年輕開發者的一封信

伯樂線上讀者發表於2011-09-22

我收到了很多年輕開發人員寫給我的郵件,希望可以提升自己的程式設計能力。我肯定不是第一個討論這個話題的人,所以我不確定還可以說出什麼新意。然而,我認為,這裡還是有幾個重要點,非常值得列出:

● 要跟其他開發者一起工作。我們正處在科技史上的黃金時期,這是第一次,身處何地,僱主是誰變得不那麼重要。只要你的網路頻寬足夠,你就可以與身處地球任何位置的另一位開發者搭檔共同編寫程式碼。越來越多我認識的資深開發者都在貢獻自己的時間分享這樣的知識。我朋友Evan Light有“開放辦公時間”,而且還在開發一個網站幫助 Rubyists 搭檔。我也這樣做了好一陣了。想要研究FLOSS程式碼?發郵件給我,我們會把事情安排好。

編注:Rubyist 是指那些對Ruby的關心程度超過常人的人。
編注:“開放辦公室時間”是美國大學的傳統,作法是學校每週開放辦公室數小時,學生不需事先預約就能和老師面談。
編注:Free/Libre/Open Source Software 免費/自由/開源軟體。

● 閱讀經典書籍。如《程式碼大全》、《程式設計師修煉之道》、《程式設計實踐》、《設計模式》等。(《國外程式設計師推薦:每個程式設計師都應讀的書》)

● 要讀 WikiWiki (有時又叫做 WardsWiki)。這一點非常重要。有時我覺得,在我的學習遇到瓶頸時,我就是通過瀏覽WikiWiki 而得以學到所有我真正需要的東西的。

● 要閱讀他人編寫的程式碼。為GitHub 喝彩!如果你想以編撰得更好的作品為開始而你又對 Ruby、有所瞭解,那麼就試一試解決Ruby Quiz上的問題。(關於這個話題,Alan Skorkin 寫過一篇很全面的文章:《閱讀優秀程式碼是提高開發人員修為的一種捷徑》。)

● Ruby,一種為簡單快捷物件導向程式設計(物件導向程式設計)而創的指令碼語言,由日本人松本行弘開發,遵守GPL協議和Ruby License。Ruby的作者認為Ruby > Smalltalk Perl,表示Ruby是一個語法像Smalltalk一樣完全物件導向、指令碼執行、又有Perl強大的文書處理功能的程式語言。其它特色包括: 運算子過載 自動垃圾回收、在Windows上,載入DLL 巨大的標準庫。

● 加入本地使用者組。如果沒有這樣的群,那就建立一個,然後開始交流。我不在意你是一個多麼差勁的菜鳥。要想使你全面瞭解一個問題,再沒有比這更好的方法了。

● 開一個部落格。不要擔心自己會成為異類。一些最有用的部落格其實主要記錄了一個程式設計師的經驗和錯誤以及他們是如何克服困難。反思是學習的最重要的一部分,而寫作則會幫助你反思。並且,在你思考之前,你又會從其他程式設計師那得到反饋。

● 我相信你已經聽說過這一點了:為一個開源專案提交補丁。如果你想參與到開源專案中去,卻又不知道從何入手,《非程式設計天才參與開源專案的14種方式》這篇文章提供一些參考方法,或許能給你提供一些幫助,哪怕你對你目前的技術還缺乏自信都不要緊。

● 用擲硬幣的方式來作決定。正面朝上就選擇 Vim,背面朝上就選Emacs。開始學習容易上手的編輯器。這兩種中的任何一種都會在你剩餘的程式設計生涯中一直與你同在。強大、靈活的工具能使優秀程式設計師更加優秀。(編注:看來國外很多程式設計師都在用Vim或Emacs,Akash Manohar 在《寫給即將入行的程式設計師的一封信》這篇文章中,也是推薦這些工具。)

● 學習多種程式語言。但首先你得學好一編種程語言。你需要一種可以使你得到靈感並且快速掌握的在一天內迅速地寫出第一個版本的程式語言,從而不用花費大量的時間去學習你會很容易忘記的語言細節。然而,一旦你已經掌握了這門語言,你就要去學習新的語言,來挑戰所有你從之前所學習的語言中學到的假設。要選擇風格完全不同的程式語言。我所看過的一本書《七週掌握七門語言》 中就對程式設計思維模型進行了全面、廣泛的概括。(相關閱讀:《學習不同程式語言的重要性》)

● 為你所使用的程式語言和平臺建立郵件列表。人們有時會忘記在部落格、Hacker News和推特以外還有很多討論是非常有益的。跟其它場合比起來郵件列表通常是文明而有用的工具。

● StackOverflow 是你的良師益友。

● 不要花費太多的時間去為某物找尋“最好”的工具。我過去常常會花費好幾天或幾個星期,去試著為我即將開始的專案尋找最好的框架,以致我的工作進度停滯不前。不要掉進這個陷阱裡。當你已經是個相對有經驗的開發人員時,選擇那些有很多人在用的語言和框架。在你遇到困難時,知道如何繼續下去比選擇完美的工具要重要。

● 尋找練習的機會

● 當然,還有一點就是:練習、練習、練習。上班時寫程式碼。在家寫程式碼。練習 code katas 。程式設計與其它技能一樣:說到底,它的本質還是練習。

相關文章