我收到了不少新手的來信,他們都希望能成長為一名真正的程序員,
給年輕程序員的幾句話
。我絕對不是第一個談?wù)撨@個話題的人,所以,我不知道應(yīng)該做哪方面的補充。不管怎樣,下面的是一些一直記在我心頭的、有必要讀一下的建議:找其他開發(fā)人員合作開發(fā)。我們正處在科技?xì)v史上第一個絕好的時代,你幾乎不用在意在哪工作、為誰工作。只要你有一個還過得去的網(wǎng)絡(luò),你就可以和另外一個在世界任何角落里的人一起來完成某段程序。我知道,越來越多的有經(jīng)驗的開發(fā)人員開始把他們的一部分時間投入到這種知識共享里。我的朋友Evan Light特地留出了時間來開發(fā)一個幫助Ruby愛好者合作行動的網(wǎng)站。我從事這樣的事情也有一段時間了。你想開發(fā)一些FLOSS程序嗎?發(fā)郵件給我,我們會幫你準(zhǔn)備些東西。
閱讀經(jīng)典著作:《代碼大全(第二版)》,《程序員修煉之道》,《程序設(shè)計實踐》,《設(shè)計模式》 等。
閱讀WikiWiki (有時也被稱作WardsWiki)。這一條怎么強調(diào)也不為過。經(jīng)常我會感覺到所有我學(xué)到的真正關(guān)于編程的知識都是在瀏覽這些網(wǎng)站的過程中慢慢的學(xué)到的。
學(xué)習(xí)別人的代碼。GitHub萬歲!如果你會一點Ruby,想從別人整理好的現(xiàn)成經(jīng)驗入手,你可以讀一下《Best of Ruby Quiz》。
參與開發(fā)者論壇。如果沒有這樣的網(wǎng)站,創(chuàng)建一個。
討論問題。我不在意你認(rèn)為自己是一個多么菜的菜鳥。沒有任何一種形式能比通過討論一個問題來學(xué)習(xí)這個問題更有效的方法了。
寫博客。不要在意是否是原創(chuàng);ヂ(lián)網(wǎng)上很多非常有用的博客都是廣泛的搜集程序員的經(jīng)驗和錯誤,以及如何克服這些問題的博客,
管理資料
《給年輕程序員的幾句話》(http://m.msguai.com)。反省是學(xué)習(xí)過程中最重要的一件事情,寫博客能幫助你反省。會出乎你的意料,你不久就會收到你的讀者的反饋。我相信你之前聽說過這一條:參與開源項目,修改其中的bug或捐獻(xiàn)代碼。
丟硬幣。是頭像就選擇Vim,否則選擇Emacs。學(xué)習(xí)使用這些編輯器。應(yīng)該讓這兩種編輯器伴隨你余下的編程生涯。強大靈活的編輯器會讓好程序員更好。
多學(xué)習(xí)幾種編程語言。但起初應(yīng)該先學(xué)一種語言。你應(yīng)學(xué)習(xí)一種重要的語言,它能讓你對編程語言有個大致的認(rèn)識,讓你第一天就愛上編程,你需要花大量的時間去學(xué)習(xí)這種語言中的各種知識,否則你漏掉知識點或不久就會忘記。一旦你掌握了這種語言,你需要學(xué)習(xí)新的語言來驗證在第一種語言中學(xué)到的知識。盡量選擇風(fēng)格迥異的語言。我曾看過Seven Languages in Seven Weeks這本書,它讓我認(rèn)識了各種各樣的編程模式,很好的書。
訂閱跟你使用的語言和平臺相關(guān)的郵件新聞。人們有時會忘了,在各種博客,Hacker News,以及Twitter里,還有一個精彩的充滿討論的世界。郵件列表是一個很通用、很有用的來比較各種討論觀點的工具。
StackOverflow是你的朋友。
不要花太多的時間去研究所謂的“最好的“工具。我曾經(jīng)愚蠢的花上數(shù)天或數(shù)周去為某個項目找出一種”最好“的框架來提高開發(fā)效率。不要落入這種陷阱。當(dāng)你還是一個不太熟練的程序員時,選一種大家都在用的語言和框架。重要的是當(dāng)你遇到瓶頸是你知道如何處理。之后你才可以去尋找一種完美的…
尋找實習(xí)機會。
以及最基本的:練習(xí),練習(xí),練習(xí)。在班上練,在家里練。鍛煉編程基本功。編程跟其它技術(shù)一樣:最終,一切歸結(jié)于練習(xí)。