血汗結晶:漫漫程式設計路上學到的寶貴經驗

edithfang發表於2014-08-27
從我 11 歲初次進入程式設計領域,我就被她的魅力所傾倒,一直陷在她的石榴裙下不可自拔,我深深地愛上了程式設計。作為後來者,你可能沒有我的這些經歷,我現在將這些經驗公之於眾,希望能對大家有所幫助。我相信長江後浪推前浪,一代新人換舊人,後生可畏。

其實不要說 20 條經驗,哪怕 30 條、40 條,都是遠遠不止的,但是在我從業 20 年的時間裡,我已經將所有的精華都已經歸納到這 20 條中了,當然如果以後有增加,我會補充更新的。



下面就是我目前為止最讓我受益匪淺的 20 條。(這可都是我血與汗的結晶啊。)

1. 規定完成任務所需時間

好吧,對於這一點,我不得不承認,作為一個程式設計師我很慚愧。我曾經親眼目睹一個牛人連續 8 小時坐在電腦前就為了解決某個程式問題,呵呵。給自己定個時間,1 小時、30 分鐘都可以,甚至 15 分鐘也行,如果在這段時間內你還是毫無頭緒,那麼為避免浪費時間,可以直接尋求幫助或者自行在網上搜尋。不要牛逼哄哄地以為自己是個超級編碼器——你只是一個人,而不是計算機。

2. 程式語言也是一種語言

一旦瞭解了某種程式語言的工作原理,那麼其他語言之間的共通之處就顯而易見了。我們選擇程式設計要參照這樣的標準:用的得心順手、生產的效率高、寫出來的程式碼整潔,而最最關鍵的是,程式語言應該適合專案,反之亦然。

3. 不要動不動就“設計模式”

有時候,比起組合成一個像模像樣的模式,還不如編寫一個簡單的演算法來的省時省力。而且一般而言,用於寫演算法的程式碼還更整潔,更便於理解。

4. 備份

話說有一次我的一個硬碟突然徹底壞了,導致我寫的許許多多程式碼通通丟失,要知道這些程式碼可是從我年輕的時候就開始儲存起來的,意義非凡,是無價之寶。你不明白丟失資料的可怕性只是因為你還未曾經歷過。試想一下,要是明天就是最後的期限,而今天你卻僅僅是因為沒有備份而使得所做的一切努力化為流水,不光是悲劇,還是人間慘劇。這一條也同樣適用於原始碼和版本控制。

5. 人外有人

有時候我常常坐井觀天地以為老子天下第一。後來慢慢發現,原來別人能比我做的更好。要謙虛謹慎地向他人學習。

6. 學海無涯

接上面第 5 條,我經常手不釋卷,抱著雜誌和書籍啃上面的計算機和程式設計的知識(不信可以問我的朋友,他們可以為我作證)。誠然,現在是個資訊爆炸的時代,想要跟上技術發展的腳步真心不是件易事。每一天都孜孜不倦地學習,就是我所謂的及時接收這些資訊的好辦法,這樣,我們才不會被時代的大浪拍死在沙灘上。

7. 事物總是在不斷變化

我們學習技術和程式設計方面的知識應該和我們買股票一樣:要多樣化。不要以為學會了一種技術就可以高枕無憂了。如果某種技術或者程式語言後繼無力逐漸被市場所淘汰,那麼就得趕快更新簡歷,並且臨時抱佛腳迅速練習新技術。我這麼多年的經驗告訴我,不要把所有雞蛋都放在同一個籃子裡,至少得掌握兩三種語言,以防有一種過時了,另外一種還能在你閉關修煉新技術的時候應急頂上。

8. 提攜新人

給予和培訓初級/入門級開發人員有關於程式設計的指導和技巧。溫故而知新,要知道,在幫助他們進步的同時,我們自己可能也在進步,變得更自信,更有發展潛力。

9. 簡化演算法

寫完程式碼之後,回過頭去再好好進行優化。雖然這邊改一點,那邊變一點,顯得很瑣碎,但是從長遠角度來看,以後維護起來那可就不是方便了這麼一點兩點的事了。

10. 編寫文件

無論是 Web 服務的 API,還是一個簡單的類,我們都應該儘量編寫相應文件。曾經有人指責我註釋氾濫,但是我卻引以為豪。寫程式碼的時候加個註釋對我們而言只是舉手而勞的事,但是當遇上難以攻克的技術難題時,我想大多數構師、新來的程式設計師、維護人員都會因此而感激你的。

11. 測試,測試,還是測試

我是黑盒測試的鐵桿粉絲哦。如果我們不能徹底地檢查程式碼,不但會影響專案的程式,還會讓你的信譽一落千丈、喪失大家的信任。

12. 慶祝每一次成功

很多程式設計師在好不容易歷盡千辛萬苦終於搞定那些令人頭疼的難題之後,總是會情不自禁地和同伴慶祝一下:尖叫、擊掌甚至是手舞足蹈。如果有個人興沖沖地跑來告訴你他寫出了一段驚天地泣鬼神的程式碼,即使關於這個程式碼片段你已經看過 100 遍了,也值得你為他第 101 次的成功而喝彩。

13. 經常做程式碼審查

無論是專案的還是個人的。對於專案程式碼,一般而言經常會有人要求查閱,對於別人提出的批評不要當做是吹毛求疵、雞蛋裡面挑骨頭,把它想成是建設性意見以此來激勵自己。對於個人程式碼,在堅持不斷自檢的同時,也要常常問問自己,“我怎麼做程式碼才能寫得更好?”這有助於你加快學習的步伐,讓你迅速成長為一枚優秀的程式設計師。

14. 回顧曾經的程式碼

當我們回顧以往的程式碼時,常常會有兩種迥然不同的態度出現:看到差程式碼時“有沒有搞錯,這麼爛的程式碼竟然是我寫的?!”以及看到好程式碼時“哇塞,這麼棒的程式碼居然出自我手!”第一種的態度往往是厭惡的,然後好像有強迫症一樣開始想著是否還能提高和改進。而第二種則帶點驚奇和成就感了。開發人員總會有那麼一兩個超棒的專案成果,引領大家膜拜。如果你對你的程式設計能力足夠自信,那麼也可以將這些成功的案例拿出來再次仔細雕琢,使之更好更棒愈加熠熠生輝。

15. 幽默很重要

在這 20 年時間裡,話說,我還從來沒有遇到過一個沒有幽默感的程式設計師。別說你遇到過,程式設計師的幽默外行人怎麼會懂?事實上,如果想在這行發展,幽默是必須的。

16. 遠離那些自以為無所不知的程式設計師,不願分享的程式設計師,以及經驗不足的程式設計師

當你不幸或者不得不和這些傢伙合作的時候,不用給他們講道理,自己胸有成竹、運籌帷幄就可以了,當然態度上要謙虛,畢竟謙虛是美德嘛。自以為無所不知的程式設計師,時刻想著搶風頭而不是作為團隊一員好好協作。不願分享的程式設計師,總是默默無聞自管自地寫程式碼。而經驗不足的程式設計師最煩人了,他們每隔個 10 分鐘就跑過來問你一下,最後搞定程式碼的時候,呵呵,我不得不吐槽,這程式碼分明都是我寫的了。

17. 任何專案都不簡單

我的朋友、家人和同事都曾要求我“快點”搞定一些事情,比如做網站。可是要知道,心急吃不了熱豆腐,做網站不是說說的,應該考慮全面,這樣才能做出令客戶和自己都滿意的作品。比方說,開始客戶只是想要一個使用 Microsoft Access 的、只有 3 個頁面的網站,但是最後很有可能會變成一個使用 SQL Server,有 15 個頁面的網站,並且還要有一個論壇,有一個定製的 CMS(內容管理系統)。

18. 不要想當然

如果手頭上有一個看上去特簡單的專案,你或許會想當然地認為這肯定很容易搞定。千萬不要有這樣的想法。除非你有已經一個類和元件,或者一段已經寫好的程式碼,並且在現有的專案上已經測試通過,萬事俱備只欠東風,否則你沒有理由也沒有資格說“小菜一碟”。

19. 軟體永遠是完不成的

曾經有一位程式設計師告訴我,軟體是永遠完不成的,它最多隻是“暫時完成”。這個忠告我一直銘記於心。如果客戶還在使用你寫的程式,並且經受了時間的考驗,那麼有機會的話,不妨保持更新,這對你的發展絕對有好處。

20. 耐心是一種美德

客戶、朋友和家人在使用電腦的時候,常常會因為電腦壞掉了等各種原因變得煩躁、氣得只想砸東西,最後自己搞不定只得怒氣衝衝地離開。每次看到這樣的場景,我都會語重心長地說勸誡,“是我們人掌控電腦,而不是電腦掌控人”。一般人尚且會心情不好,更不要說整天對著電腦的程式設計師了。所以我們程式設計師更加需要耐心。下次,要是我們的電腦和程式又出問題了,不要急著對自己發脾氣,好好檢查,最後,找出問題根源所在了,不妨自嘲地說一句,“眾裡尋他千百度,驀然回首,那人卻在燈火闌珊處”。

最後我希望,這 20 條能對大家有所裨益、有所啟迪,能讓各位會心一笑。

英文原文:Top 20 Programming Lessons I've Learned in 20 Years
  
翻譯作者:碼農網 – 小峰
相關閱讀
評論(2)

相關文章