老派程序員:徒手實(shí)現(xiàn)偉大成就
當(dāng)在讀Peter Seibel的精彩著作《編程人生:15位軟件先驅(qū)訪談錄(Coders at Work)》的時(shí)候,我發(fā)現(xiàn)一些老派的程序員(我是這樣尊敬的稱呼他們的)是非常的有趣,比如Ken Thompson, Joe Armstrong 和 Jamie Zawinski,他們開(kāi)發(fā)軟件時(shí)幾乎不用任何現(xiàn)代的工具和技術(shù)技巧。
ken thompson
Ken Thompson是B語(yǔ)言(C語(yǔ)言的前身)的設(shè)計(jì)者,也是Go語(yǔ)言的設(shè)計(jì)者(與 Rob Pike合作)。在貝爾實(shí)驗(yàn)室工作的時(shí)候,他和Dennis Ritchie一起開(kāi)發(fā)實(shí)現(xiàn)了C 語(yǔ)言和最初的Unix操作系統(tǒng)。一次在新澤西的晚飯上,當(dāng)他在餐具墊上設(shè)計(jì)出來(lái)UTF-8字符編碼方法后,他通宵工作,在貝爾實(shí)驗(yàn)室的Plan 9 操作系統(tǒng)里實(shí)現(xiàn)了對(duì)UTF-8的全面支持。就編程風(fēng)格而言,他只通過(guò)printf語(yǔ)句來(lái)調(diào)試,幾乎沒(méi)有單元測(cè)試,他開(kāi)發(fā)軟件是先設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu),然后從局部開(kāi)始實(shí)現(xiàn),中間利用臨時(shí)的測(cè)試接口,最終到達(dá)整體完成,
Jamie Zawinski
Jamie Zawinski 在麻省理工的人工智能實(shí)驗(yàn)室使用Lisp工作,之后他領(lǐng)導(dǎo)開(kāi)發(fā)了Lucid Emacs,也是用的Lisp語(yǔ)言,這個(gè)軟件就是后來(lái)被人們熟悉的XEmacs。此后他加入了Netscape項(xiàng)目,開(kāi)發(fā)Unix版的Netscape瀏覽器的前端部分,之后他又領(lǐng)導(dǎo)了Netscape Mail的開(kāi)發(fā)(兩個(gè)項(xiàng)目都是用的C語(yǔ)言)。他也是只喜歡用print語(yǔ)句來(lái)調(diào)試代碼。他的開(kāi)發(fā)過(guò)程有時(shí)是先整體后局部,有時(shí)是先局部后整體,順其自然,在必要的時(shí)候進(jìn)行重構(gòu)。開(kāi)發(fā)時(shí)他幾乎不做單元測(cè)試,他認(rèn)為單元測(cè)試會(huì)耽誤時(shí)間——他認(rèn)為***次就應(yīng)該把代碼編對(duì),他反復(fù)這樣強(qiáng)調(diào)。在他的觀念里,這是個(gè)優(yōu)先級(jí)問(wèn)題,“你是愿意去開(kāi)發(fā)出一個(gè)沒(méi)問(wèn)題的軟件,還是愿意下星期就把它完成,選擇一個(gè),你們不能兼得。”
joe_armstrong
Joe Armstrong開(kāi)發(fā)了Erlang編程語(yǔ)言,他還為愛(ài)立信開(kāi)發(fā)開(kāi)源的 Open Telecom Platform(OTP)框架。開(kāi)發(fā)軟件時(shí),他喜歡在寫(xiě)代碼前寫(xiě)盡可能完備的文檔,特別是對(duì)有難度的項(xiàng)目,比如有關(guān)實(shí)時(shí)網(wǎng)絡(luò)協(xié)議的。對(duì)于有難度的問(wèn)題他喜歡先用原型解決,對(duì)于調(diào)試,他只是有print語(yǔ)句。他是一個(gè)面向?qū)ο缶幊痰呐u(píng)者,他喜歡像Haskell這樣的函數(shù)式編程語(yǔ)言。他從未使用過(guò)IDE,他喜歡使用的是Emacs和命令行(不需要用鍵盤(pán))這樣的開(kāi)發(fā)工具。
所以,什么樣的工具和技術(shù)技巧是你成為一個(gè)偉大程序員的所必須的?是這些TDD、BDD、Scrum、敏捷開(kāi)發(fā)、設(shè)計(jì)模式、極限編程等現(xiàn)代技術(shù)嗎?這些只是花瓶?還是為了用來(lái)實(shí)現(xiàn)更大的目標(biāo)?或者這只是說(shuō)明了有天賦的程序員不管使用什么工具都能走上自己成為偉大程序員的道路?
我個(gè)人的觀點(diǎn)是,做一定程度的TDD、保證合適數(shù)量的單元測(cè)試,這些都是作用巨大的。因此這些現(xiàn)代技術(shù)才被看作是能夠讓我們工作更加容易、更有效率的科技進(jìn)步——尤其是對(duì)那些非天才級(jí)別的程序員。
英文原文:Old school developers - achieving a lot with little
本文鏈接:http://www.aqee.net/old-school-developers-achieving-a-lot-with-little/