程序员每天到底可以写几行代码?
2012-01-02 20:12
591 查看
对于特定的人,在大致时间段里他所能写的、确定质量的代码基本上应该是个确定值。这点似乎显而易见,但事实上大多时候却总是被忽视。如果项目负责人总是认可上面的基本点,那么任何项目的日程就应该以此为前提,而不是以此为变量。假设说一个项目被估计为1万行(SLOC),团队平均每人每天可以写100行代码,如果团队中有5个人,那么就应该至少为编码保留20整天。 说到这里,为避免误解,要区分一下编码速度和生产率这两个概念。项目管理中常用的一个数据被称为生产率,用代码行计算时,会被表示为SLOC/MM。这个值用于表示平均每人月的代码产出。其基本算法是规模除以项目所用的人月,而项目所用的人月中包含了设计、测试、修Bug等时间,至于包不包含需求、管理等的时间往往因人而异。这个值有意义,但受项目时间分配比率影响较大,浮动空间也大。 而编码速度单纯指个人为编写完成某个功能(经过自己的测试),而每天写的代码。这时代码中一定是有Bug的,所以这个值仍然有浮动空间,但已经可以收的很窄,并且在短期内不太可能发生太大的变化。所以这个值应该更有意义。我试图调查编码速度,但实在找不到什么资料。眼下可以做到的是:通过找到生产率的数据,假设编码的时间为1/3,这样可以概算出一份编码速度的值。
找到一份不同语言间的比例值。
定性分析一下一般的情形。一般的情形是指:没有太难的待研究课题,比如排序算法速度优化20%,大致知道怎么完成既定功能的情形。
下面是上述总结和分析的结果,希望有人愿意分享更多信息,也把这个数据做的更精确点。 按照生产率概算的编码速度(生产率数据来自《软件估算--黑匣子揭秘》,概算的数据是我算的,我也找不到编码的语言究竟是什么,Sorry。)
不同语言间的比例值(这个比例值用来描述,不同语言的等价性,数据源同上)
假如这是真的,那么用后面三种语言,编码速度会提高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啊。这事实在应该科研机构或者大学干,但又找不到国内那个机构或学校干了这事,这是软实力啊。自己这个算抛砖引玉吧,有对第一个表格进行补充的数据的话,可以直接回下。
补充一点:看了些评论,发现很多人在说代码行不好的地方,这个反倒是不用讲的。因为代码行不好的地方确实如大家所说,甚至更多。任何一种度量方法必然有其限度,超过即是错误。关键是当事人要把握数据究竟应该怎么用。好比说用代码行度量个人不太行,但完全不度量同样也是不行。
关联文章:程序员能少加班么?软件开发究竟是简单的还是复杂的?不要做虚情假意的管理------------------------------------------------------------------------------------------------------------------------------------理想流 + 软件 = 《完美软件开发:方法与逻辑》
理想流 + 人生 = ??
理想流 + 管理 = ??
理想流 = 以概念和逻辑推演本质,追求真理。
找到一份不同语言间的比例值。
定性分析一下一般的情形。一般的情形是指:没有太难的待研究课题,比如排序算法速度优化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 |
不用拷贝粘贴大法。
去除项目交流,会议等,每天有6个小时可以全身心写程序。
假设主要语言是C/C++,C#,Java。
如果我们进一步假设,上限是1分钟可以写一行程序,那么编码速度的上限值是:360SLOC/天。如果我们认为编码速度有10倍差异,那么下限值是36SLOC/天。 也就是说编码速度的区间是36~360SLOC/天。从我个人的角度看,我感觉这个范围是可用的,360SLOC/天绝对是个上限值。所以我个人是不相信上述表中超过360部分的数字的,除非把html也算进来。 PS:干这事的一个感觉:这活太费劲,越做感觉要做的事越多。我对上述摘录的有些数据很是有些怀疑,但也找不大更合适的数据来反驳。比如:C#和C++的比例不应该是1:1啊。这事实在应该科研机构或者大学干,但又找不到国内那个机构或学校干了这事,这是软实力啊。自己这个算抛砖引玉吧,有对第一个表格进行补充的数据的话,可以直接回下。
补充一点:看了些评论,发现很多人在说代码行不好的地方,这个反倒是不用讲的。因为代码行不好的地方确实如大家所说,甚至更多。任何一种度量方法必然有其限度,超过即是错误。关键是当事人要把握数据究竟应该怎么用。好比说用代码行度量个人不太行,但完全不度量同样也是不行。
关联文章:程序员能少加班么?软件开发究竟是简单的还是复杂的?不要做虚情假意的管理------------------------------------------------------------------------------------------------------------------------------------理想流 + 软件 = 《完美软件开发:方法与逻辑》
理想流 + 人生 = ??
理想流 + 管理 = ??
理想流 = 以概念和逻辑推演本质,追求真理。
相关文章推荐
- 程序员每天到底可以写几行代码?
- 程序员每天到底可以写几行代码?
- 程序员每天到底可以写几行代码?
- 程序员每天到底可以写几行代码?
- 每天敲几行代码,量变到质变-我的程序员的成长秘籍
- 安卓自动更新,静默更新,替换友盟更新可以在通知栏里显示更新下载进度,几行代码快速实现Android下载更新
- 几行代码看程序员的水平——Android文件命名规范
- 程序员有什么借口可以让自己写出低质量的代码
- 中国到底有多少个程序员?都在哪个城市写代码?
- 中国到底有多少个程序员?都在哪个城市写代码?
- 基本上,把switch,用设计模式代替,肯定是bug和过度设计。想想,本来修改一个文件几行代码可以解决的问题,变成修改3-6个类才能实现一样的功能。不是傻是什么?
- phpcms教程之增加统计代码可以统计每天发表文章数量
- iOS 中 当程序进入后台 但是程序员希望在程序进入后台的时候还可以运行一段代码时候可以做以下的操作
- 《每天工作4小时的程序员》 一个老外的意淫文章,不过可以用来参考
- 每天写出好代码的5个建议——你也可以变优秀
- 程序员应该每天写代码
- 每天写写代码有益身心~程序员的境界
- 程序员一天可以写多少行代码
- 从以下的问题可以看出:真正写代码的人往往跳入代码中自娱自乐而不自知,却忘记了思考问题的本质,这可能就是优秀程序员与所谓的专业程序员最大的不同
- 简单几行代码就可以解析PE文件