花时间保持代码整洁不但有关效率,还有关生死存亡。
20 世纪80 年代末,有家公司写了个很流行的杀手应用,许多专业人士都买来用。然后,发布周期开始拉长。缺陷总是不能修复。装载时间越来越久,崩溃的几率也越来越大。至今我还记得自己在某天沮丧地关掉那个程序,从此再不用它。在那之后不久,该公司就关门大吉了。
20 年后,我见到那家公司的一位早期雇员,问他当年发生了什么事。他的回答叫我愈发恐惧起来。原来,当时他们赶着推出产品,代码写得乱七八糟。特性越加越多,代码也越来越烂,最后再也没法管理这些代码了。是糟糕的代码毁了这家公司 。
只要你干过两三年编程,就有可能曾被某人的糟糕的代码绊倒过。如果你编程不止两三年,也有可能被这种代码拖过后腿。进度延缓的程度会很严重。有些团队在项目初期进展迅速,但有那么一两年的时间却慢如蜗行。对代码的每次修改都影响到其他两三处代码。修改无小事。每次添加或修改代码,都得对那堆扭纹柴了然于心,这样才能往上扔更多的扭纹柴。这团乱麻越来越大,再也无法理清,最后束手无策。
随着混乱的增加,团队生产力也持续下降,趋向于零。当生产力下降时,管理层就只有一件事可做了:增加更多人手到项目中,期望提升生产力。可是新人并不熟悉系统的设计。他们搞不清楚什么样的修改符合设计意图,什么样的修改违背设计意图。而且,他们以及团队中的其他人都背负着提升生产力的可怕压力。于是,他们制造更多的混乱,驱动生产力向零那端不断下降
最后,开发团队造反了,他们告诉管理层,再也无法在这令人生厌的代码基础上做开发。他们要求做全新的设计。管理层不愿意投入资源完全重启炉灶,但他们也不能否认生产力低得可怕。他们只好同意开发者的要求,授权去做一套看上去很美的华丽新设计。
于是就组建了一支新军。谁都想加入这个团队,因为它是张白纸。他们可以重新来过,搞出点真正漂亮的东西来。但只有最优秀、最聪明的家伙被选中。其余人等则继续维护现有系统。
现在有两支队伍在竞赛了。新团队必须搭建一套新系统,要能实现旧系统的所有功能。另外,还得跟上对旧系统的持续改动。在新系统功能足以抗衡旧系统之前,管理层不会替换掉旧系统。
竞赛可能会持续极长时间。我就见过延续了十年之久的。到了完成的时候,新团队的老成员早已不知去向,而现有成员则要求重新设计一套新系统,因为这套系统太烂了。
假使你经历过哪怕是一小段我谈到的这种事,那么你一定知道,花时间保持代码整洁不但有关效率,还有关生存。
作者语:
衷心的希望
1、不要让混乱毁了xinyuan的电采系统,虽然它现在卖的很火,但混乱确实是至关生死存亡!公司如此庞大的研发团队,从侧面反映出了生产效率的低下,那么什么导致了生产效率如此之低?我想领导们是该想想了!我离职的原因之一就是与其在混乱中苟且偷生、度日如年、生不如死,还不如离开混乱,重新开始.....希望xinyuan保兴争霸的目标能尽快实现!
2、尽可能的减少目前caiyangyang的混乱,拒绝混乱,持续重构,从我做起,从一点一滴做起!
3、写的不但是代码,还是责任,它事关企业的前途和命运!
相关推荐
Gaodongzhen Xinyuan Road 436 Long.m4a
xinyuan-he.github.io:我的Hexo博客
轻量级(〜20 kb)转换器,可将xml内容转换为运行时对象。 用户可以自由地仅指定接口或提供数据类实现。
ServerAdmin zzxy@xinyuan.com.cn # ServerName localhost:9090 在最后添加: <Location /svn> #其中 /svn就是访问时第一级目录的名字 DAV svn SVNParentPath e:/svn/repository # SVNParentPath是物理地址 ...
Xu, Peng Ning, Xinyuan Wang, Shihong Zou, and others, whose valuable insights and comments greatly enriched our work. The authors are also grateful to colleagues in the Cyber Defense Lab at NC State ...
MFC最小化至系统托盘源代码,开发工具为VS2010
多个ns2的仿真源码与详细介绍,帮助初学者更好的认识ns2代码写作
维护军事安全的战略级指挥信息系统构建研究_王芳.caj
安卓2.3老版本系统使用的ucweb浏览器,好几台2.3系统已经测试,
工厂视频监控项目解决方案.docx
无线实时联网门禁系统解决方案-会议室、办公室
校园一卡通系统解决方案
2020数字孪生供应链白皮书
windows下安装memched所需资源,安装步骤,使用示例
详细介绍了wifi加密方式wpa和wep的原理,对于学习有很大的帮助。
以项目案例为导向,提高读者的项目开发水平,只需30天,就可轻松掌握10个Visual Basic项目开发!
ISO DOIP标准协议,包含概念和报文格式,工作中常用手册
嵌入式linux内核移植
腾讯云CityBase产品白皮书
busy-box init启动