程序员每天到底可以写⼏⾏代码?
对于特定的⼈,在⼤致时间段⾥他所能写的、确定质量的代码基本上应该是个确定值。
这点似乎显⽽易见,但事实上⼤多时候却总是被忽视。
如果项⽬负责⼈总是认可上⾯的基本点,那么任何项⽬的⽇程就应该以此为前提,⽽不是以此为变量。
假设说⼀个项⽬被估计为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语⾔语句数量⽐
C1
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啊。
这事实在应该科研机构或者⼤学⼲,但⼜不到国内那个机构或学校⼲了这事,这是软实⼒啊。
⾃⼰这个算抛砖引⽟吧,有对第⼀个表格进⾏补充的数据的话,可以直接回下。
--------------------------------------------------------------
理想流 + 软件 =
理想流 + ⼈⽣ = ??
理想流 + 管理 = ??
理想流 = 以概念和逻辑推演本质,追求真理。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。