如何看待华为1100亿行规模的代码库?
好吧,需要算算了。
按美国平均水平,每个程序员每天10行代码,中国比较勤奋,就算30行吧!一人一年1万行吧。
算下来大约是1100万人年。
软件有生命期,好的情况下自己败坏周期在5-20年,质量一般的话,也就10年(如此大量代码,只能是行业平均水平)。
也就是说,大约需要110万程序员。
嗯,什么概念呢?
大约至少得10个微软吧!再说恐怖的,cmm3级(这不是平均水平,而是较高水平了),一千行大约3个问题出厂,1100亿大约是,3亿个bug(也就是3亿个问题)。
解决这些问题足够让一个微软公司破产了。
但华为活得好好的,其危机却与这个没关系。
所以,可以明白的是目前华为的产品代码,绝对达不到这么大。
如果此事真实,其中大多数代码应该被抛弃了,因为即便是cmm5也得有3千万bug,这不可能是真实的。
好了,如果代码库真的有这么多,到底是什么情况呢?
估计多数是开源代码库的中依赖的部分复制和开发者保存的备份。
这是防止断网影响项目进展的防范手段。
所以别太嗨了。
呵呵。
算完了,但果是不被质疑的。
程序员的感受是,一天10行代码?
搞笑呢?
那我先拿一个职业生涯中的例子看看个人生产情况:我刚开始产品级编程是一个通信系统(与华为同行,可比较)。
整个系统中开发2年,大约在1991-1993年。
我负责系统中的一个核心模块编程项目。
敲代码,我最快18小时,3000行汇编,这个小项目的全部代码,强实时,时钟级设计,无操作系统。
但全过程过程实际算下来大约有将近6个月。
包括原理设计,代码执行机制规划,算法设计,原理机验证测试,逻辑分析仪调试。
那18个小时不过是敲代码,基本没有稍微深入一点的思考(主要思考内容:寄存器分配调配;内存效率;3级任务协调;周期计算;累加器溢出控制;可靠性监测周期等细节,以保持遵循详细设计定下的原则)。
没有单元测试、没有功能测试、没有代码评审、没有团建和各种活动。
(那台逻辑分析仪够我当时10年工资。
)一天不到20行代码吧?
项目期间我为自己还开发了4000多行c语言的工具,有算法仿真工具的、有分解烧录文件的、有原型实验的。
还有几百行快速编译的dos批处理文件。
但这都与产品无关,算不上产品代码。
当然还有过程中,放弃了20000行汇编(毕竟当时还是经验不足),主要是架构问题达不到要求,最终代码中没这个,也不能算。
就呵呵了,难道连失败的东西都要算到工资奖金里吗?
项目结果:前两年和华为交流,他们说那套91年的代码实现的指标到现在也是先进的。
那套代码到最后收到保险柜也没有再改过一行。
这中间三年试运行,审查、鉴定、定型、销售,再没改过,所有性能、可靠性监测的保护机制从未启动过,最长运行时间是2万小时。
这是通信领域个人手工业作战的基本情况。
当这种工作被分解给多个人之后就是团队计算了。
这是软件工业难点之一:工时估算。
在产品市场问题解决后,开发成本估算就是软件开发难点。
最现实的估算是,专家用背靠背评估最终实现代码行数。
这些代码行数除以组织软件开发成熟度估算效率(也就是10行每人天的意义),再乘以开发团队的平均人天成本就可大致得到成本量级。
所以,10行每人天的估算是开发团队组织效率的,不是程序员个人生产力。
另外:1、代码库是一种软件工程中的保护机制,不反应软件生产的实际情况。
2、代码不是越多越好,任何以代码行数计算开发人员生产力的想法,都是很外行的。