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

开发 项目管理
一个程序员到底要写多少行代码?这取决于他所能写的、确定质量的代码。好的代码其实不用多少行,但写错了也会带来很多BUG。

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

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

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

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

3-306

3-154

过程控制

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啊。

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

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

【编辑推荐】

  1. 编码20年的老程序员分享所积累的20条编程经验
  2. 程序员应该读的故事:三个事和三个问题
  3. 海军陆战队退役兵:我是如何12周零基础变身程序员
  4. 程序员们 不要想一辈子靠技术混饭吃
  5. 不要自称为程序员
责任编辑:彭凡 来源: 博客园
相关推荐

2019-05-15 09:59:24

程序员技能开发者

2013-01-22 13:50:11

程序员前端Web

2014-03-25 10:35:35

程序员代码调试

2018-02-26 09:28:42

程序员Bug体验

2017-10-17 12:47:19

2012-06-08 09:57:25

2020-06-15 08:01:33

CRUD程序员代码

2015-07-02 11:20:17

程序员代码

2019-11-07 22:00:22

程序员代码规范

2015-11-23 17:27:19

程序员写代码

2022-11-10 08:03:37

GitHubCopilot

2010-01-04 10:07:03

程序员

2019-01-02 09:49:42

代码程序员女朋友

2020-12-08 10:35:29

程序员IT数据分析

2011-05-23 09:43:24

2015-07-23 13:58:52

程序员

2013-06-28 13:28:09

2021-12-28 10:19:26

程序员技能开发者

2020-05-08 15:41:08

程序员技术设计

2018-01-23 11:42:50

程序员编程代码
点赞
收藏

51CTO技术栈公众号