經(jīng)驗豐富的程序員和代碼行數(shù)
原文作者John D. Cook是一位數(shù)學(xué)教授、程序員、顧問、經(jīng)理人和統(tǒng)計學(xué)家,善于并享受結(jié)合運用這些技能來解決問題。
最近,我聽說了一個關(guān)于缺乏經(jīng)驗的程序員和經(jīng)驗豐富的程序員每天寫相同行數(shù)的代碼的研究結(jié)果。其不同之處在于,經(jīng)驗豐富的編程人員讓這些代碼更高效,向著目標(biāo)穩(wěn)步前進;缺乏經(jīng)驗的程序員單純地將大段的代碼分隔開,并且多次復(fù)寫相同的代碼塊直到它們看起來能夠運行?;蛘卟徊鸱执a,他們連續(xù)調(diào)試好多天,幾乎是隨機的改變一兩行代碼,直到這些代碼看起來能夠運行。
正如格雷.威爾森在他的采訪中所指出的,將注意力放在軟件開發(fā)的質(zhì)量上,往往也會提高生產(chǎn)力。更多的努力,會帶來進步;反之,將會導(dǎo)致“回鍋肉”(返工)。
經(jīng)驗豐富的程序員不僅能每天編寫更多行值得借鑒的代碼,而且他們的每行代碼都能實現(xiàn)更多的功能,有時候多的不可思議。但是這并沒有什么新奇的。眾所周知,最優(yōu)秀的程序員不是一般的高產(chǎn),他們的產(chǎn)量一般是普通程序的一倍或兩倍。(例如Joel Spolsky的書《聰明的完成工作》Smart and Gets Things Done)。更有意思的是,在編寫和理解代碼方面,最優(yōu)秀的程序員看起來并沒有什么更高超的能力。
并且,也有研究顯示,程序員每天編寫相同行數(shù)的代碼與他們使用的語言無關(guān)。你可能認為使用匯編語言的程序員每天能比使用像VB或Java之類的高級語言的程序員編寫更多的代碼,但是事實并非如此。雖然通過數(shù)代碼的行數(shù)來衡量程序員的產(chǎn)量是一種很爛的方法,但它卻是判斷一個人大腦能裝多少東西的好方法。
(編注:在原文評論中,F(xiàn)red Mitchell 的評論非常精彩,編譯如下。)
我編寫代碼的時間已有30年,我可以非??隙ǖ卣f,和那些僅有過兩三年代碼經(jīng)驗朋友的代碼來比,根本沒有可比性。
為了更好地反應(yīng)手中問題,我在代碼中力爭清晰性和簡潔性,也注重“清潔”的架構(gòu)和對象模型。我所編寫的東西有,操作系統(tǒng)、驅(qū)動、應(yīng)用程序、中間件和Web應(yīng)用。
不僅是代碼,還有算法、模式和數(shù)據(jù)結(jié)構(gòu)。一個經(jīng)驗不多的程序員或許并不喜歡某些算法,從而選擇一個“蠻力”方法,而不是選擇更有效并省時的方法。
但是通過代碼行數(shù)來判斷工作的方法,并不能反映出所有這些。這種方法完全是一個愚蠢之極的想法。注釋算不算進代碼行數(shù)呢?有時候,我寫的注釋,比代碼還要多,因為我想盡可能詳細一些,我不想6個月之后再來看這些代碼的時候,我是一頭霧水。
真正的生產(chǎn)力是無法輕易和快速測量出來的。有時候,你必須考慮業(yè)務(wù)模式??偣补?jié)省了多少時間,節(jié)省(或創(chuàng)造)了多少錢,代碼所涉及的維護或停工時間是多少,客戶服務(wù)的工作量是多少,等等。所有這些才是影響真正生產(chǎn)力的因素。
原文鏈接:http://www.johndcook.com/blog/2008/06/03/experienced-programmers-and-lines-of-code/