程序员每天到底可以写几行代码?_生活灌水_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  生活服务区 »  生活灌水 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4931 | 回复: 0   主题: 程序员每天到底可以写几行代码?        下一篇 
    本主题由 hui.chen 于 2015-1-28 15:26:46 移动
barry
注册用户
等级:中校
经验:1534
发帖:236
精华:2
注册:2012-1-13
状态:离线
发送短消息息给barry 加好友    发送短消息息给barry 发消息
发表于: IP:您无权察看 2012-2-15 11:23:15 | [全部帖] [楼主帖] 楼主

对于特定的人,在大致时间段里他所能写的、确定质量的代码基本上应该是个确定值。
这点似乎显而易见,但事实上大多时候却总是被忽视。
如果项目负责人总是认可上面的基本点,那么任何项目的日程就应该以此为前提,而不是以此为变量。
假设说一个项目被估计为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啊。
这事实在应该科研机构或者大学干,但又找不到国内那个机构或学校干了这事,这是软实力啊。
自己这个算抛砖引玉吧,有对第一个表格进行补充的数据的话,可以直接回下。
补充一点:
看了些评论,发现很多人在说代码行不好的地方,这个反倒是不用讲的。
因为代码行不好的地方确实如大家所说,甚至更多。
任何一种度量方法必然有其限度,超过即是错误。
关键是当事人要把握数据究竟应该怎么用。
好比说用代码行度量个人不太行,但完全不度量同样也是不行。
关联文章:
程序员能少加班么?
软件开发究竟是简单的还是复杂的?
不要做虚情假意的管理

 -------------------------------------------------------------

理想流口号:创建超一流方法论,为培育超一流软件公司贡献力量。
理想流博客: http://blog.csdn.net/leezy_2000
该贴由koei转至本版2012-2-15 19:28:36
该贴由hui.chen转至本版2015-1-28 15:26:46



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册