關于程序員開發效率的悖論

人文精神  >>>  技術話題—商業文明的嶄新時代

關于程序員開發效率的悖論

程序員看起來應該都是一幫非常高產的人。

你總能看到他們在電腦桌前噼里啪啦的敲著鍵盤;他們焦急的等待會議結束,希望馬上能回去編程。當被問起,他們總是說沒有足夠的時間編寫出這些程序,需要立刻開始編碼,這樣才能及早完成。

看來,敲代碼一定是最重要的事情了,不是嗎?

如果一個普通水平的程序員每天能寫出50行代碼。一個5萬行代碼的程序將會需要1000人/天來開發。把5萬行代碼輸入電腦里,一個程序員每天能錄1000行,也就需要50人/天。

那么,剩下的950天這些程序員都在干什么?

在搞清楚這個問題前,讓我們先看一些簡單的資料。Capers Jones研究了數萬個軟件項目,他通過比較其中的各種軟件開發方法(RUP,極限編程,敏捷開發,瀑布開發等等)和各種編程語言,發現,一個程序員每月平均寫出的代碼大概是325行到750行,比我們上面說到的每月1000行還要少。就算是程序員不是每天只寫50行代碼,但下面兩點是清楚的。

  • 開發方法的差異不能解釋程序員代碼生產量上的不平衡
  • 使用的編程語言無關程序員代碼生產量上的不平衡

combinations2

實際情況是,只有很小一部分的程序員的時間是花在寫代碼上的。如果一個程序員的所有時間都在敲代碼,那他一定是在嘗試不同的代碼組合,直到找到好用的代碼組合。

更準確的說法是,找到看起來是符合需求的“代碼組合”——如果測試人員或業務分析師不來告知說這些代碼是有問題的。

這就是為什么在把手放到鍵盤上前喜歡先計劃代碼如何寫的程序員會比其他程序員效率高的原因。事實上,不僅僅只有很少數的程序員在寫代碼前先計劃,很多即使有多年編程經驗的老程序員也不知道這個道理。一項持續40年的研究表明,程序員的開發效率并不會隨閱歷的增加而增加。(參考No Experience Required!)

多年的編程閱歷并不是必然導致高開發效率

十分有趣的是,各種強調編碼前先計劃的軟件開發方法論都已經存在很長時間了。比如Personal Software Process (PSP),創始人Watts Humphrey根據統計數據說:

PSP能提高21.2%的生產效率和31.2%的質量水平

jquery-whiteboard-marker-no

像這樣優秀的實踐方法有很多。總之,就像作家動筆前先要構思好文章的結構和內容一樣,程序員在按動鍵盤前如果不先琢磨一陣,很可能發生的情況是他的開發效率不會很高。

[英文原文:The Programmer Productivity Paradox ]

 


網載 2014-07-03 12:00:00

[新一篇] 天才程序員的靈魂——現實與虛幻世界中的極客精神

[舊一篇] 決不隨波逐流,記住15件事情讓你達成目標
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表