人民网6月4日的一则报道着实让广大的IT工作者汗颜、自愧不如(http://bbs1.people.com.cn/postDetail.doboardId=1&treeView=1&view=2&id=1195402)
据其报道,兰州军区某部科室主任李聪娜,2000年,李聪娜考入国防科技大学计算机专业,实现从军梦。毕业时, 她放弃保研资格和到沿海科研单位工作的机会,主动申请到信息化人才缺乏的西北军营,从事网络安全工作。
文中详细描述道:
“…背记相关函数、学习协议机制,研究国内外范例程序……李聪娜把自己宅在办公室,挑灯研读 。一个月时间,30万行代码、100多类函数、60多种协议机制、20多个设计算法,一块块硬骨头被她“啃”了下 来。…当时,国内对这一领域的研究仅限于理论层面,国外成熟产品完全不公开源代码,唯一的参考资料是一本理 论教科书…连续奋战90多个昼夜,编写代码40多万行……4个月后,系统研发成功,比预期提前半年完成…科室的科研实力开始加速成长仅2011年就完成大型科研项目5项,创新核心算法20余种,发表科研论文10多篇…”
的确令人汗颜,文中的李聪娜同学展示了强大的编码能力和令人叹服的科研能力!
那么程序员一天到底能写多少行代码?
要回答这个问题,首先要了解程序员的种类。
一般来讲,开发者(指的是纯的写代码,不包括不写代码的项目经理 、技术总监等)主要分为:
1. web工程师:
一般是写基于web的程序,所用语言基本上为Java, PHP或者ASP,如果做winform,C#则是主流。另外设计到数据库 部分,还要写部分的数据库sql语句(基于框架的开发被框架封装好的存储过程除外)。此外,还有前端的编写,涉 及到的语言包括HTML、CSS、以及Javascript等。这类编程工作的主要特点是量大,技术含量相对来说不是很高,入 门槛相对较低。大部分从业者学历相对来说不算顶尖,鲜有名牌大学毕业的从事web编码工作。社会上这青鸟、那达 内的经常有xxx速成班么,可见门槛之低。这类工作对算法和数据结构要求不是太高,代码许多都是大量复制而成,所以一天产生100行以上的代码是比较普遍的。
2.嵌入式工程师
一般都是基于芯片编程,控制硬件,代码浓缩度很高,有时候,整个控制程序也就是几百行代码。而在设计时候需要考虑很多,代码速度一般来说一天能产生20行是不错的了。
3.算法工程师
算法工程师一般都是研究某种算法,然后将它实现。算法设计上每一步都需要仔细推敲时间和空间上的复杂度以及完成效率。编写代码也是如此。这些程序虽然可能很大,比如一个视频每帧文字的识别程序,但是代码的产出速度可能会更慢。因为在实现前必须有大量的算法分析和设计的活,和代码时间比大概是6:1。所以一天一般也就产出20行左右。
还有一些其他种类,比如通信工程师、数据库工程师、安全工程师,也都大同小异,在这里不细说了。但是我们可以看到,熟练工种一般都是在一天100行以内这样一个数量级上的。
再来算算李聪娜同学的编码速度
假设她每天不吃不喝编写10小时,90天编写出40万行代码,每小时是40w/90/10 = 444行代码。平均每分钟是8行左右代码,还不算思考、查资料等时间。闭上眼睛想像一下,一分钟,电脑上多出8行代码,是不是有种机器的感觉?而且从文中可看出,她是在项目完成之后才招的新毕业的学生。也就是说,她几乎是一个人完成的。这的确有点难以想象。
曾经码农社区CSDN上有人问了这样一个问题:
一个程序员一天要写多少行代码呢?
有人回答说:“平均有20行有效代码每天,就是世界级水平了。绝大部分时间你都在反复改写、修订已有代码。”
的确,程序员的编写代码的速度可能也就如此。在国内某些公司,对于一些熟练的程序员,每天100行代码是正常的生产率(包括需求分析,设计,编码,单元测试和系统测试)。但是对于一个刚刚大学本科毕业的,编写代码经验不是那么丰富的。
软件开发人员都知道,在编写代码之前,需要有需求的获取分析、需求建模、系统的架构、系统模块的设计、以及之后的测试等工作需要做。我想李聪娜同学应该不会忽略这些基本步骤,毕竟是军工的项目,玩笑不得。或者,就算她采用了测试驱动开发TTD或者敏捷Agile开发,但是这些上面总是还要花点时间的吧。那么还有多少时间在于编码?
另外,我们从文中还可以看出的是,李聪娜同学对这个领域是相当陌生的。而且国际上这个领域代码都还没到开源的地步。完全是她个人摸索。先不说她做的是否准确了,单说她最终的成果吧:创新核心算法20余种,发表科研论文10多篇。这个又会让国内大量科研人员大跌眼镜了…这是一个国防科技大学本科生的实力吗?
所以,有时候对待官媒的文章,我们还是持保留态度为好。
转自泉印博客:http://qyin.us/archives/33
留言评论(旧系统):