程序员每天到底可以写几行代码?

对于特定的人,在大致时间段里他所能写的、确定质量的代码基本上应该是个确定值。

这点似乎显而易见,但事实上大多时候却总是被忽视。

如果项目负责人总是认可上面的基本点,那么任何项目的日程就应该以此为前提,而不是以此为变量。

假设说一个项目被估计为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啊。

这事实在应该科研机构或者大学干,但又找不到国内那个机构或学校干了这事,这是软实力啊。

自己这个算抛砖引玉吧,有对第一个表格进行补充的数据的话,可以直接回下。

补充一点:

看了些评论,发现很多人在说代码行不好的地方,这个反倒是不用讲的。

因为代码行不好的地方确实如大家所说,甚至更多。

任何一种度量方法必然有其限度,超过即是错误。

关键是当事人要把握数据究竟应该怎么用。

好比说用代码行度量个人不太行,但完全不度量同样也是不行。

时间: 2024-10-23 01:45:08

程序员每天到底可以写几行代码?的相关文章

不要相信一个程序员在加班时间写出的代码这是真的吗。。。。。

作为一个最底层的程序员,我先记录一些只有底层程序员才会知道的事情.如果多年后,我违背自己进入这个行业的初心,走上管理岗位,也能回想起一些禁忌,避免一些错误. 其中最重要的就是这条:不要相信一个程序员在加班时间写出来的代码. (软件工程的学说表明,连正常时间好好写的代码,也不要太相信.不过这不是本文的重点,略过不提.) (不懂代码的人,看到本文中的Java代码可以略过,不影响理解.) 创造力的时限 写代码,与写文章.绘画.思考复杂问题,并没有本质上的区别,都是创造性的活动. 每个人的创造力,都会随

程序员都应该学写“规范”的代码

在过去的7年半时间里,我带过的软件实习生超过一打,也看到过数以百计的学生和毕业生的档案.我发现很多事情他们都需要学习.或许你会说,我说的不 就是某种特定的技术.算法.数学,或者其他特定形式的知识吗?没错,这的确是需要学习的,但却并不是最重要的事情.他们需要学习的最重要的东西是"自我规 范".这些规范就是:尽可能地写出最简洁的代码:如果代码后期会因为改动而变得凌乱不堪就得重构:尽量删除没用的代码,并添加注释. 我花了很多时间来敦促这些实习生去学习这些内容.我经常会问他们,怎么样才能成为一

程序员在加班时间写的代码 bug 骤增

作为一个最底层的程序员 ,我先记录一些只有底层程序员才会知道的事情.如果多年后,我违背自己进入这个行业的初心,走上管理岗位,也能回想起一些禁忌,避免一些错误. 其中最重要的就是这条: 不要相信一个程序员在加班时间写出来的代码 . (软件工程的学说表明,连正常时间好好写的代码,也不要太相信.不过这不是本文的重点,略过不提.) (不懂代码的人,看到本文中的Java代码可以略过,不影响理解.) 创造力的时限 写代码,与写文章.绘画.思考复杂问题,并没有本质上的区别,都是创造性的活动. 每个人的创造力,

可以少写1000行代码的正则表达式_正则表达式

熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升. 正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码: var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/; var r = fieldValue.match(reg); if(r==null)alert('Date format error!'); 下面是在前端开发中经常使用到的20个正则表达式: 1 . 校验密码强度密码的强度必须

可以少写1000行代码的正则表达式

熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升. 正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码: var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/; var r = fieldValue.match(reg); if(r==null)alert('Date format error!'); 下面是在前端开发中经常使用到的20个正则表达式: 1 . 校验密码强度 密码的强度必

传奇程序员:8岁写游戏独力开发赚1亿美元

到2013年初,Minecraft的注册用户已经不计其数,付费用户数量也已经超过9000多万.2011年10月,发布了移动版Minecraft,在App Store的付费应用中,仍旧排在前三. 这个如今被越来越多人奉为神作,并让无数人深深沉迷其中的游戏最初却几乎由Markus Persson一个人独力开发,与真名相比,他在网络上的昵称Notch无疑更加有名,许多人将他视作独立游戏开发大神和独立软件圈子的标志性人物. 靠着Minecraft,Notch在2012年的收入超过了1.1亿美元,那么他究

当程序员不相信自己写的代码的时候怎么办?

问题描述 几个月的闲置,让程序员的我开始怀疑自己的能力了,不敢相信自己能胜任工作了咋办? 解决方案 解决方案二:项目空闲期么?学习学习吧解决方案三:是啊!都闲了快三个月了,有时突然感觉(害怕)自己还能做东西?解决方案四:两条出路1.继续闲着,好处是不用做事还有钱拿,缺点是人可能闲疯掉,浪费大好光阴...(闲可能没底,是外包维护项目么-,-我有同事闲过1年半)2.跳槽解决方案五:打酱油的路过解决方案六:闲了三个月,也就意味着老板不会白养你们的,具体的自己看着办吧.解决方案七:学习学习吧忙的时候可能

不懂Ruby的程序员,如何快速读懂Ruby代码

本问答的目标读者是不了解Ruby语言.但有别的编程语言经验的人. Ruby语言的代码可读性是很强的.本问答只把一些语法特点.以及别的语言中可能没有或不同的东西展现出来,目的在于让有别的编程语言经验的人能快速读懂Ruby代码. 注意本问答讲的是Ruby语言本身(基于版本1.9),而不是Ruby on Rails,后者是Ruby的一种DSL,语言面貌上和Ruby有一定差异.   Q:Ruby最有特点的语法形式是什么? 或许是方法后接代码块的大量使用,以下面这行代码为例: file.each_line

程序员必须知道的几个Git代码托管平台(转)

  上一篇博客中2015继续任性--不会Git命令,照样玩转Git我们简单的介绍了在VS2013中使用Git,和GitHub客户端的使用.那么使用Git到底有什么好处呢?最为明显的是支持Git代码托管的平台比较多,而且都是免费的.今天就为大家推荐几款比较火的Git代码托管平台,欢迎大家补充.不过,这里首先来对上一篇的问题进行一些说明.如果大家还有喜欢用SVN的,请参考淘宝code-- 最给力的国内免费SVN(不限语言),异地团队开发.打造个人开源项目不再是梦这篇文章.    一.VS2013中克