程式員每天到底可以寫幾行代碼?

來源:互聯網
上載者:User

對於特定的人,在大致時間段裡他所能寫的、確定品質的代碼基本上應該是個確定值。

這點似乎顯而易見,但事實上大多時候卻總是被忽視。

如果項目負責人總是認可上面的基本點,那麼任何項目的議程就應該以此為前提,而不是以此為變數。

假設說一個項目被估計為1萬行(SLOC),團隊平均每人每天可以寫100行代碼,如果團隊中有5個人,那麼就應該至少為編碼保留20整天。

 

說到這裡,為避免誤解,要區分一下編碼速度和生產率這兩個概念。

專案管理中常用的一個資料被稱為生產率,用程式碼計算時,會被表示為SLOC/MM。

這個值用於表示平均每人月的代碼產出。

其基本演算法是規模除以項目所用的人月,而項目所用的人月中包含了設計、測試、修Bug等時間,至於包不包含需求、管理等的時間往往因人而異。

這個值有意義,但受項目時間分配比率影響較大,浮動空間也大。

 

而編碼速度單純指個人為編寫完成某個功能(經過自己的測試),而每天寫的代碼。

這時代碼中一定是有Bug的,所以這個值仍然有浮動空間,但已經可以收的很窄,並且在短期內不太可能發生太大的變化。

所以這個值應該更有意義。

我試圖調查編碼速度,但實在找不到什麼資料。眼下可以做到的是:

  • 通過找到生產率的資料,假設編碼的時間為1/3,這樣可以概算出一份編碼速度的值。
  • 找到一份不同語言間的比例值。
  • 定性分析一下一般的情形。一般的情形是指:沒有太難的待研究課題,比如排序演算法速度最佳化20%,大致知道怎麼完成既定功能的情形。

下面是上述總結和分析的結果,希望有人願意分享更多資訊,也把這個資料做的更精確點。

 

按照生產率概算的編碼速度

(生產率資料來自《軟體估算--黑匣子揭秘》,概算的資料是我算的,我也找不到編碼的語言究竟是什麼,Sorry。)

程式碼/天 最低值-最高值(典型值)

軟體類型

10,000程式碼的項目

100,000程式碼的項目

250,000程式碼的項目

航空電子

15-150(30)

3-45(7)

3-30(6)

應用系統

120-2,700(450)

30-1050(90)

15-750(75)

命令與控制

30-450(75)

7-90(15)

6-75(12)

嵌入式系統

15-300(45)

4.5-75(11)

3-60(9)

公眾網際網路

系統

90-1500(225)

15-300(45)

15-225(30)

內部內連網

系統

225-2700(600)

45-1050(120)

30-750(90)

微代碼

15-120(30)

3-30(6)

3-15(4)

過程式控制制

75-750(150)

15-150(45)

13-130(30)

即時系統

15-225(30)

3-45(7)

3-45(6)

科學系統/

工程研究

75-1125(150)

15-225(45)

12-150(30)

套裝軟體

60-750(150)

15-150(30)

10-120(30)

系統軟體/

驅動程式

30-750(90)

7-150(15)

6-120(13)

電信軟體

30-450(90)

7-90(15)

6-75(7)

 

 

不同語言間的比例值

(這個比例值用來描述,不同語言的等價性,資料來源同上)

語言

與C語言語句數量比

C

1

C++

2.5

Java

2.5

C#

2.5

 

   假如這是真的,那麼用後面三種語言,編碼速度會提高2.5倍。我自身對此表示懷疑,至少C++,C#以及Java應該是不同的,但資料確實沒摘錄錯。

 

定性分析

為了做定性分析需要假設一些前提:

  • 沒有特別的難題(比如:最佳化效能,API文檔不全,也要排除研究型項目)。
  • 不用拷貝粘貼大法。
  • 去除項目交流,會議等,每天有6個小時可以全身心寫程式。
  • 假設主要語言是C/C++,C#,Java。

如果我們進一步假設,上限是1分鐘可以寫一行程式,那麼編碼速度的上限值是:360SLOC/天。

如果我們認為編碼速度有10倍差異,那麼下限值是36SLOC/天。

 

也就是說編碼速度的區間是36~360SLOC/天。

從我個人的角度看,我感覺這個範圍是可用的,360SLOC/天絕對是個上限值。所以我個人是不相信上述表中超過360部分的數位,除非把html也算進來。

 

PS:幹這事的一個感覺:

這活太費勁,越做感覺要做的事越多。

我對上述摘錄的有些資料很是有些懷疑,但也找不大更合適的資料來反駁。比如:C#和C++的比例不應該是1:1啊。

這事實在應該科研機構或者大學幹,但又找不到國內那個機構或學校幹了這事,這是軟實力啊。

自己這個算拋磚引玉吧,有對第一個表格進行補充的資料的話,可以直接回下。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.