北大青鳥通州校區分享:原文作者喬納森·丹尼可(Jonathan Danylko)是一位自由職業的web架構師和程序員,編程經驗已超過20年,涉足領域有電子商務、生物技術、房地產、醫療、保險和公用事業。正如喬納森在文中所言,本文適合剛畢業的大學生和剛入門的程序員。如果你已是高級開發人員,或許你在本文中看到自己的身影。
原文:
從11歲時,我就一直在編程,并且一直都很喜歡技術和編程。這些年來,我積累了一些艱難又容易的經驗。作為一名程序員,你或許還沒這些經驗,但我會把它們獻給那些想從中學到更多的朋友。
我會持續更新這些經驗,我可能還會有更多的感想,但就我這20年來看,我想下面這個列表中基本不需要增添額外的東西了。下面就是我至今最難忘的經驗。
1. 估算解決問題所需要的時間。不要怕,承認吧!我曾見過一些程序員為了解決一個特殊問題而坐在顯示器前面8小時。為自己定一個時間限制吧,1小時、30分鐘或甚至15分鐘。如果在這期間你不能解決問題,那就去尋求幫助,或到網上找答案,而不是嘗試去做“超級堆碼員”。
2. 編程語言是一種語言,只是一種語言。隨著時光推移,只要你理解了一種語言的原理,你會發現各種語言之間的相似之處 。你所選擇的語言,你應該覺得“舒服”,并且能夠寫出有效(而且簡潔)的代碼。最重要的,讓語言去適應項目,反之亦然。
3. 不要過于注重程序的“設計模式”。 有時候,寫一個簡單的算法,要比引入某種模式更容易。在多數情況下,程序代碼應是簡單易懂,甚至清潔工也能看懂。
4. 經常備份代碼。在我年輕時,我就有過因硬盤故障而丟了大量代碼的經歷,這經歷很恐怖的。只要你一次沒有備份,就應當像有著嚴格的期限,客戶明天就需要。此時就該源碼/版本控制軟件大顯身手了。
5. 承認自己并不是最頂尖的程序員 - 知不足。我常想,我對編程了解已足夠多,但是總有其他人比你優秀。正所謂,“一山總比一山高”。所以,向他們看齊吧!
6、學習再學習。正如第5點所說,我經常會在手里拿一本計算機或編程相關的雜志或書(不信,可以問我的朋友)。誠然,總有很多你不知道的技術,你可以從中學習以保持不落后。如果你有一種靈巧的方式來獲取你需要的新技術,那你每天都應該堅持學習。
7. 永恒的變化。你對待技術/編程知識,就應像你對待股票一樣:多樣化。不要在某一特定技術上自我感覺良好。如果那種技術或語言已經沒有足夠支持,那你還不如現在就開始更新你的簡歷,并啟動培訓新計劃。我能保持前行的主要原則是什么呢?至少了解兩到三種語言,所以,如果某種語言過時了,你在學習新技術的時候還可以依靠另一種語言。
8. 提攜新人。協助并且培養初級/入門的開發人員學習優秀的編程方法和技巧。也許你還不知道,在幫助他們向更高一層前進時,你自己也在向更高一層提升,你會更加自信。
9. 簡化算法。代碼如惡魔,在你完成編碼后,應回頭并且優化它。從長遠來看,這里或那里一些的改進,會讓后來的支持人員更加輕松。
10. 編寫文檔。無論是Web服務的API,還是一個簡單的類,你盡量編寫相應文檔。我曾經引以為豪的代碼注釋,因過度注釋而有人指責。給三行代碼加一行注釋,只需要你幾秒時間。如果那是一個比較難以理解的技術,千萬別擔心過多注釋。如果你能很好做好自己的工作,大多數架構師、后備程序員、支持組都會感激你。