關於程式設計師開發效率的悖論

vaikan發表於2014-03-28

  程式設計師看起來應該都是一幫非常高產的人。

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

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

  如果一個普通水平的程式設計師每天能寫出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

相關文章