« 准备动身去厦门 | 返回首页 | 貌似合理的网络包协议 »

程序员一年究竟能有多少代码产量?

前两天在厦门做了个即兴的演讲,我随口说了个数字说我现在大约一年的代码产量是20万行。当时雷军表示不信,下来我们讨论了一下20万行的可能性,雷军的观点是,要保持年产20万行代码,必须每天写 800 多行代码,因为要留出思考的时间,所以代码日产量是远高于这个数字的。所以不太可能。

我今天统计了一下2005年 8 月份到年底的代码量,发现轻易超过了8 万行的产量。8月开始我和同事做的一个主要的项目,目前的统计数字是 9 万余行代码(几乎是用 editplus 手写,无 copy-paste 和机器自动生成代码,甚至都没有用 VC IDE 里的自动完成)这个项目目前留下来的代码是 9 月底开始的,在此之前两个月的东西我们全部重构了,懒的把老版本从仓库里拿出来统计,就算 2 万行吧。那么我个人的代码产量就是 5 万余。

前段时间写了个虚拟机和一个脚本编译器外加测试代码,统计下来是 6000 余行,在此之前用 C 做了一些虚拟机的实现,大约 1500 行。

前段时间要新开一个 2d 游戏的项目,我把 2d engine 用 lua 重新封装了一次,给其他的程序员用。这部分代码 2500 余行。另外作为演示,写了大约 1000 行的 lua 脚本。

另外一些零散写着玩儿的小东西 20 余个,平均每个有代码 500 行左右,按 1 万行计算。

以上没有计算手写 jamfile 和编写 jam 脚本的代码量,还有对以前一些老项目的修补。我是不喜欢写注释的,所有代码中,注释和空白行占的比例是 10% 。

这小半年,我另外做了许多策划以及管理的工作,代码效率大不如上半年,所以我认为年产 20 万行的数据应该没有浮夸。

当时雷军跟我算的时候说,要保证年产 20 万行代码,就要保证每天写 800 多行。我自己除了一下,20w / 365 只有 500 多,这才恍然大悟,原来说的是工作日啊 :) 偶现在是把写程序当作乐趣,所以反而周末的产量比较高了。工作日的杂事很多,很多时间不能去写程序。

记得以前测算过,一般一天下来,接近 2 千有效代码的速度是跟的上的。平时写点小东西玩的话,一个连续的时间片,大约都是四五百行的数量。

当然一个好程序员绝对不应该用代码的绝对行数来衡量水平,甚至我认为越好的程序员应该代码行的产量越低。这两年我的代码产量就明显低于前几年了 :D 那么以后,我应该朝年产10万行代码奋斗了。

Comments

个人认为,人月超过800行的项目,质量很难保证

难道是打字员?

难道是打字员?

国内就是产能过剩了现在。

何必讨论这个问题,程序只是我们完成特定工作的工具而已。我们应该关注程序能做到什么,怎样做到的,而不是讨论谁写的多,谁写的少,没意义

这个一天200比较正常

我一直认为,代码需要技巧,死记硬背那种程序员吥会有出息的。而且那样子的程序员也不能成就什么大事的。程序员其实现在很需要创新,研发,都加油吧!明天会更好!我的未来我得考虑走不走程序员,代码量惊人啊~

可以质疑,不应攻击。平和的态度在中国的互联网实在太宝贵了

一群人在这里装B,代码行高不一定代码程序员水平高,但代码行低就一定代码程序员水平高吗?你用100行代码写个ERP出来试试啊,技术没学好装B学的倒挺快。

你让微软情何以堪!别人一天人均用到产品上的代码量是每天10多行!

解放军美女网络尖兵:90余昼夜写代码40多万行
2000年,李聪娜考入国防科技大学计算机专业,实现从军梦。毕业时,她放弃保研资格和到沿海科研单位工作的机会,主动申请到信息化人才缺乏的西北军营,从事网络安全工作。此后工作积极上进的她曾创造出连续奋战90多个昼夜,编写代码40多万行的成绩。2011年她被评为第十二届“全军学习成才标兵”。领导和战友们都说:“她的成功成才都是自己逼出来的!”

新华社兰州6月2日电(樊永强 黄宝峰 张辉)作为一名携笔从戎的优秀大学生,兰州军区某部科室主任李聪娜潜心钻研信息网络尖端领域,勇攀自主创新高峰,取得了优异成绩:12项全军重大科研项目的领军人,连续在全军性比武中摘金夺银,多次获军队科技进步奖……

成才,“自己逼出来的”

去年底,李聪娜被表彰为第十二届“全军学习成才标兵”的喜讯传来,领导和战友们都说:“她的成功成才都是自己逼出来的!”

2000年,李聪娜考入国防科技大学计算机专业,实现从军梦。毕业时,她放弃保研资格和到沿海科研单位工作的机会,主动申请到信息化人才缺乏的西北军营,从事网络安全工作。

网络,被称为是继陆、海、空、天、电磁之后,世界各军事强国激烈争夺的“第六空间”。2008年初,总部赋予李聪娜所在部队紧急研发一种网络终端服务系统的任务,部队长王国玉安排她编写一套底层驱动程序。

原本打算借机“露一手”,可真要编写程序时,她才发现这远远不同于传统意义上的软件编程,不仅此前没有学过,有些东西连听都没听过。

看着一行行读不懂、看不明的源代码,她急得直想哭!

背记相关函数、学习协议机制,研究国内外范例程序……李聪娜把自己宅在办公室,挑灯研读。一个月时间,30万行代码、100多类函数、60多种协议机制、20多个设计算法,一块块硬骨头被她“啃”了下来。

2008年底,李聪娜代表兰州军区参加全军网络安全比武竞赛。那段日子,她几乎24小时“泡”在枯燥的训练中,构建战场环境,探寻攻坚路径,一个月下来,瘦了整整15斤。

决赛时,作为64名选手中唯一的女性,李聪娜最终以一金一铜摘得桂冠。

“自己制定游戏规则”

“昨天的技术,打不赢明天的战争。”在李聪娜的办公室,题写着这样一句醒目的标语。

2009年初,某策略研究让科研团队陷入围城。“能不能另辟蹊径?”角落里,沉默多天的李聪娜咬着笔头认真地说。只见她走到黑板前,飞速地写了起来……

“就让李聪娜主持这个项目!”部队长王国玉当场提议。

连续奋战90多个昼夜,编写代码40多万行……4个月后,系统研发成功,比预期提前半年完成。

总部成立专项课题组研发某信息网络项目,主动点将李聪娜。

当时,国内对这一领域的研究仅限于理论层面,国外成熟产品完全不公开源代码,唯一的参考资料是一本理论教科书。

“走别人的路,早晚会被人反制;自己制定游戏规则,才能掌握主动权。”李聪娜一语解开思想的缰绳。

整整半个月,她带领小组成员重新搭建模拟试验环境,取得20多万组测试数据,证实了自创算法的可行性和科学性。

最终,这项攻克了10多项技术难关的创新成果获得军队科技进步二等奖。

今年3月,李聪娜被表彰为全国“三八”红旗手。在兰州军区司令部举办的庆功会上,她说:“在新领域多攀登一座高峰,我们的空白就会少一点,未来战场取胜的概率就会大一点。”

“关键先生”戴上功勋章

2010年5月,李聪娜被任命为科室主任。那一天,她彻夜难眠。

由一名冲锋陷阵的战斗员转变为运筹帷幄的指挥员,李聪娜感到了前所未有的压力。作为成立不满三年的新科室,1个主任5个兵,还凑不够一个班,如何对全区部队的信息网络保驾护航?

在李聪娜的争取下,一批刚毕业的计算机专业高材生被充实到麾下。

刚刚走出校门的大学生,满肚子的理论不知如何转化为实战。面对面辅导、键对键传授、手把手帮带……李聪娜的悉心帮带,很快让这批网络新兵变成了“个顶个”的业务尖兵。

李聪娜还将科室的业务范畴划分为四个小组,放手让一批敢想敢干的年轻人担任课题组长,科室的科研实力开始加速成长——仅2011年就完成大型科研项目5项,创新核心算法20余种,发表科研论文10多篇.

刚学安桌 写个客户端 同时做一个企业应用, 一个星期7500行。 排除自动生成。

只要开发的架构和逻辑做好做清晰, 每人每天2000行都不是问题,关键是之前要安排好设计好。

但,这只能发生在重复性编程,像2D游戏3D游戏商业应用这些干熟干烂了的代码,基本上都只是逻辑换一下。

在opencv和人工智能领域,没有人会用行数来吹嘘。人家只会鄙视你。

我之所以统计,是因为我觉得我是懒人,不喜欢多干事,要经常统计来监督自己。

我不认为这事有必要写篇文章,没养分,但是统计是必须的,心里有数,知道自己的时间都花在哪。

云风的代码质量是上佳的.
但20万行代码的有效性,将来能不能证明?

行数……
我用宽屏的那不是亏了……
代码行数不能说明什么的吧……

天哪,我这六天写一个插件,连着加班,结果只写了1177行。如果按8小时算,恐怕只有150行一天差不多。
就算这1177行代码,大多注释实际是不合格的。当然代码比较精炼。

老兄,写出的东西是给人看的,要非常精简的。是要达到出版物水平的。

唉,连项目估算的时候,公司那些年轻人都是按300-400行一天估算工作量的。而我却按150行一天估算的,真是不合潮流了。

个人认为,一个程序员 coder 能够每天产生200行有效代码就是可以了,再多就是吹了。

照这么说, git 到目前为止有效代码量大约五万行, Linus Torvalds 也好意思拿出来现眼 ;) 。

Quake 3 Arena engine 不含UI, 第三方库,有效代码大约 21 万行,其中还包含了不少从 Q1, Q2 继承来的代码, id 当时加上 JC 有接近 20 个程序员,看来效率也不行啊 ;) 。

没有说年产 20 万行高质量代码不可能,但起码 JC, LT 等人是做不到的。

即使神勇如 nba 张伯伦,说自己和两万个女性发生过关系,一样不信的听众居多.

以下句子用来搞笑,没有任何恶意 :-) 一般来说女人倾向于高估自己的美貌程度, 男人倾向于高估自己的make love 能力,程序员倾向于高估自己的 coding 能力 ;D .

[quote]
突然想起,如果约翰卡马克匿名谈论自己每天的工作量,一定会被骂死:D

总之,说不相信或吹牛的人都是用自己那可怜的常识来衡量的。

突然想起,如果约翰卡马克匿名谈论自己每天的工作量,一定会被骂死:D

1. 我们项目甚至连 CRT 都是自己写的。我有足够能力在统计中区分哪些代码是自己写的,哪些是第三方的,哪些是机器生成的。

2. 所有第三方开源代码使用,全部用 svn:externals 外链,和本组维护的代码在不同代码仓库维护。注:第三方开源代码只用于开发用工具的开发。

3. 我们一直在追求用更少的代码达成目标。

4. 写本文时 (06 年初) ,我们的代码仓库是由 2 个人贡献了 95% 的代码。如果我的代码贡献不到 50% 的话,那么另一个同事的贡献就几乎超过了 50% 。

搞不好你们组里哪个人往 svn 里 check in 进去了一个 ACE library 或者 freetype library, 导致项目代码总量迅速增加,让你自我感觉良好的。

其实计算代码行数和计算make love次数有异曲同工之妙 - 把自己的最佳表现乘以 365 来估计是绝对不理智的.

[quote]
我在做上面的统计的时候,最大那个项目是直接把我们 svn 的代码除上人数的 :) 其实我也不知道我个人做的比同事多还是比同事少,所以统计数值其实正是我们项目组的人均平均值。
[/quote]

呵呵,我也觉得你在吹牛。 一年20万行代码也许是可能的, 但那一定不是原创性很强或者逻辑很复杂的代码。我是个土人,觉得自己如果**平均**下来每天能有300 行调试得很彻底,很稳定的代码就不错了。曾经见过很多牛人,但我还真没有亲眼见过每年原创20 万行稳定代码的牛人。 亲眼见过吹牛说自己一年能写几十万行代码的人, 结果那个牛皮先生实际把项目里用到的 libjpeg, freetype 代码都算到自己头上了。 集成代码和写代码是两个不同的概念。

你就在这里吹吧, 说不定某天把你吹没了

这个比较搞笑,让我想起我们公司培训资料中一篇关于代码日产量的文章,说的是这边一什么头儿跟老外交流,谈到我们公司人均日产量200行,结果吓到老外了,说我们产量好高,哈哈
顺便说一句,我们公司整的那些玩意儿,承载的业务需求和性能要求绝对超过那些网游,不是乱说的,虽然我也经常觉得很看不惯那些写得乱七八糟的代码,不过人家确实也算是本行业内全世界市场占有率排前二的,呵呵

要看什么代码。如果是c代码一个项目,你一年最多写1万行就不行了

lua代码10行可能也顶不了1行c代码工作量

再说了写1万个hello world和写一个1000行程序哪个更快呢

好像没有可比性


我写不了,平均下来,事情太杂.
以前小混小混的时候还可以写,不过质量嘛,没办法保证了。现在水平上去了,根本没时间写.

什么才是真正优秀的程序员?
国外程序员一个月300行左右的代码,印度450-600行,中国多少?
不会有人认为是国外,还有印度的程序员水平不如国内吧?
说一句公道话:
国内的软件是垃圾就因为中国软件业的浮躁,急功近利,生产出的产品根本没办法和国外比较。
按代码行计算工作量,我写一万行垃圾代码,是不是很有水平呀?

想想windows那么NB的系统,代码也只有几千万行,却有差不多5000人做开发,平均差不多每人不到2万行.而且XP的研发是花了几年的时间的.平均到每年上,每个人贡献的有效代码其实是没有2万行的.

说的吓着我了,一年产生20万,如果是系统级的,我觉得一年能产生2万左右的有效代码就足够了.

对于一个编程熟手来说,写出的代码一般都是比较精简的,不会存在很多冗余的东西,所以代码量还是能体现出工作量的。每天写出500行的代码不为过的。

我们的目标是在已经有的代码不能在精简的基础上增加工作的效率。质量自然不能因为速度提高而下降。

好的程序能够用最少的代码做最多的事情,这也是面向对象与设计模式等技术所追求的境界。一味的追求每天完成的代码行数是没有意义的。
这些天我一直在做的工作不是增加代码,而是减少代码,这有以下一些目的:增加重用的可能、使自己或别人在以后能够更容易看懂代码、使代码的修改更加容易。

梦幻西游最初的几万行代码是我在一两个月内写完的,一直都没怎么修改。现在已经跑了几年了,并且有上千万用户在使用,所以我认为速度跟质量是可以并存的。

如果一个热爱编程的人没有时间写程序,生活还有什么意义?

一年的代码产量是20万行一点也不稀奇,前提是只要这一年的所有工作日满负荷(8小时)运作,那么,就算是一个普通本科应届生也可以达到。我手头上一个55K规模的项目,实际Coding工作量也就3人月(不用加班加点),普通应届生Coding,效率也许不亚于你:),说明一下,这个项目的全流程工作量将近50人月(从需求到系统测试)。但是作为一名高工或管理人员,还能达到100K~200K的代码年产量,那么就说明你们的项目可能存在多方面的严重问题(可能至今没有暴露出来)。简单从几方面看:从管理方面来说,请问你的管理时间哪里去了?从工程方面来说,请问你的质量保证时间哪里去了。如果以上问题你们项目组或你还能够保证,那么请问,这样的人才如果有一天从网易出走,会不会是一场灾难?
如果我是丁磊或是你的上级,我会安排你做全职的内部培训教师,专职培训所有高工和项目经理:)

有效最终使用代码撑死2w行。另外还有3,4w行都是各种功能测试临时代码。

还好我不是很丢人,好的时候,一天也能写个1000多行有效代码。
不过,丢人的在后面,最后算下来,每天有效行数只有50行左右了。

哈哈,那么多呀,好厉害

小的重构不算, 大的重构(指在 svn 服务器上另起一个分支) 算上了。

吹牛都不看场合呀,要是当真代码产量是20万行,金山还那么多程序员,才出那点产品,你这是不是把重构出去的都算上的哟。

云风哥好。深夜在网吧,乱翻主页翻到你这里。看到你还活跃。

我个人感觉跟anonymous的速度差不多,但我的老大跟云风兄的速度差不多。不开会的情况下半天1K行。我个人认为这样的人才是真正的编程高手。

风魂那套库,我维护了好几年,也就不到 2 万行代码吧。

看看spirit,agg,...boost人家这些写了好几年,代码量有多少。

的确,这真的不难,每个人都可以做到。只不过很多人杂务太多,不能天天坚持罢了。

我现在除了室内的抱石,和看点书,没别的爱好了。所以才能一如既往的坚持下来。

真的年年如此,月月如此,再苯的手,写程序也会越来越快,出错越来越少的。

ps. 我用的一个代码统计工具,可以统计一个目录下所有文件的代码行数。并把空行和注释剔除掉。

个人觉得, 晚上思考好思路,第二天认认真真的写上8个小时, 出个400~500行的高质量代码应该是没什么问题的.

如何统计代码行数?突然想看看去年自己写了多少,但发现没有好的办法去统计,不可能一个一个去数吧 :)

600 万这个数字是我从丁那里听来的,据说我们如果利用游戏这个途径去分发某种软件的话,可以立刻让 600 万台机器装上。

梦幻的同时在线人数已经过了百万,大话好象是五六十万。这两个游戏 client 我大约都贡献了 50% 的代码。

另外服务器那边也是有一点点的。

popo 游戏玩的人不多,不过几万还是有的。

以前做的风魂似乎还继续用在一些比较流行的网游上 :)

我想 600 万这个数字应该不算夸张吧。

这些其实都没什么,任何参与了流行中的软件的程序员都可以比我更自豪的宣布比这个更高的数字。比如我的一个同事为 freebsd kernel 写的大量的代码,要统计每天使用他的代码的机器估计要吓死人了。

我只是想证明,有这么多用户的考验,我的代码质量当不算差了。

什么东东有600万人用,说来听听。

成天就知道吹牛,一天写一万行又怎么了,牛得不行了

我在做上面的统计的时候,最大那个项目是直接把我们 svn 的代码除上人数的 :) 其实我也不知道我个人做的比同事多还是比同事少,所以统计数值其实正是我们项目组的人均平均值。

要看项目平均每人每月的代码量吧,除非项目是一个人做的。

其实这就是一个实力的问题.如果你真的能够随手写出红黑树这样的结构在十分钟之类.而且一次编译通过,能够经受常用的测试.这样的能力一天写出800多行代码,肯定都是有效的.现在国内有点忒向印度学习CMM之流,精华没学到,倒是有个理由降低生产力.殊不知以前一两个人写个UNIX代码质量,产品稳定性还是挺好的嘛.现在形式只能说是程序员的门槛大大降低导致大部分程序员的能力也是比以前大大降低.

我写的东西据说每天有600万人在用 :D

800行每天,呵呵
你写的东东本人不敢用

想想看人家印度软件公司的代码量……据说还不准多写。
不过如果明年大家的代码量真的都降低了,估计会被丁老大K的……

代码行数还是少点好 记得一个笑话 说是程序按行数卖 一行1元 所以循环语句从此消失了

强就一个字!一直希望什么时候我能达到云风这种对代码的控制能力。看来没有一天1k以上有效代码是赶不上的了。

代码量数应该还是没什么太大的意义,一年做一个你想做的项目就很好了,如果做了很多不想做的项目,就算写再多的代码也还是背道而驰.还有,写代码的速度快,说明你在做一些自己熟悉的东西,太熟悉的话则反而不好.

Post a comment

非这个主题相关的留言请到:留言本