对于特定的人,在大致时间段里他所能写的、确定质量的代码基本上应该是个确定值。 这点似乎显而易见,但事实上大多时候却总是被忽视。 如果项目负责人总是认可上面的基本点,那么任何项目的日程就应该以此为前提,而不是以此为变量。 假设说一个项目被估计为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) [...]