如何做一名程序員
——一份簡易但全面的個人總結
獻給hire.com的全體程序員
作者:Robert L. Read
原文鏈接:http://samizdat.mines.edu/howto/
1. 簡介
2. 入門
3. 進階
4. 高手
第一章 簡介
成爲一個好的程序員是困難、但同時也是有價值的。在實現一個軟件項目中衆人的願景時,最頭疼的就是要面對同事和客戶。編程是一件重要而且需要大量智力和技能的工作,但和爲做一款令客戶以及各種對該軟件負有部分責任的同事都滿意軟件而需要的其他技能相比,編程本身就是小兒科了。本文中我儘可能簡潔的總結了一些自己希望在21歲時就有人講給我聽的有關上述其他技能的東西。
所以,這些內容註定會比較主觀,甚至有一點點武斷。我把討論的範圍限定在程序員工作中最有可能碰到的方面。其中很多問題以及解決方案都非常普通、大衆化,所以我有時看起來會有些嘮叨。儘管如此,我還是希望這篇文章能有所用處。
編程在課堂上就會教。很多優秀的書籍:The Pragmatic Programmer[Prag99],Code Complete[CodeC93],Rapid Development[RDev96],Extreme Programming Explained[XP99]都教我們怎麼編程以及其他一些成爲好程序員的話題。在看本文前或者閱讀的同時,你應該讀一下Paul Graham[PGSite]以及Eric Raymond[Hacker]的文章。與這些優秀的作品不同,本文更強調人們之間的關係問題並綜合總結了我認爲的必須技能。
文中的術語“老闆”(boss)指代任何交給你任務的人。我等價的使用生意(business)、公司(company)、和部落(tribe)等詞彙,除了以下一些區別:生意隱含着獲得收益的行爲、公司則指代現代的工作場合、而部落則是和你有着共同價值觀的那羣人。
注意:
如果你希望打印出來供私人使用,不打印後面的附錄也許會節省一些紙張。
第二章 入門
1 個人技能
1.1 學會調試程序
調試能力(debugging)是成爲程序員的基石。雖然動詞調試(debug)的第一條意思是清除錯誤,但更意味這要能夠檢查並跟隨程序的執行。不能進行有效調試的程序員是就像盲人一樣。
那些認爲設計、分析、或者複雜的理論、或者任何模糊的難以表述清楚的內容更加基礎的理想主義者並非項目中承擔工作的程序員。後者並不處於理想化的環境中。即使你是完美的,你仍然要接觸由大公司或者像GNU這樣的組織、抑或自己的同事寫的代碼。包括相應的文檔,這些代碼中的大部分並不完美。如果不能夠跟隨程序查看代碼的執行過程,一點小問題都會讓你摸不着頭腦。通常這種能力只能通過不斷的實驗和調試實踐獲得。
調試是關於程序如何運行而非程序本身的。如果你的軟件是從其他公司買來的,你通常獲得不了源程序。但仍然會有代碼運行和軟件文檔不一致(比較普遍和壯觀的是你機器的崩潰),或者文檔中並沒有提到的情況出現。更加可能是,你創造了一個錯誤,檢查代碼後毫無頭緒。毫無疑問,這意味着你做的假設並不完全正確,或者有一些你沒有預期到的情況出現了。有時通過閱讀源碼你可以找到問題所在,但當這麼做沒有成效時,你就得調試了。
--------------
不太確定的內容用紅色標出了。