昨天在博客园看到了两篇文章。这两篇文章虽然标题不同,但讨论的主题都与软件维护有关,阅后颇有感触。
技术债务
原文地址:
作者把程序员开发时留下隐患称为技术债务。技术债务又分为代码债务和文档债务。
代码债务是指为了快速地解决问题,而采取的不规范的方案。比方说把某个条件写死,或者是把特殊情况写在了通用代码中。如果不尽快偿还,一旦基于该代码进行二次开发,影响范围将越来越大。
文档债务是指修改了代码后,没有修改相关的文档,造成文档和实际代码功能上的不一致。一段时间后,大家就会发现文档根本就不可靠,不仅对代码、功能的了解没有丝毫帮助,还会造成误导。
在我看来,很多公司(特别是非IT公司)都把重心放在新项目的开发上,经常忽略了旧项目的维护。因此,欠下技术债务的人往往不是不想还,而是没时间去还。直到欠债的人离职了,接手的人甚至不知道债务的存在。
发展危机
原文地址:
作者举了一个典型的例子:假设某人每天能完成10个功能点。刚开始他一无所有,5天就完成了50个功能点。可是问题也来了,每10个功能点会带来1个维护点。而维护的时间和开发一个功能点的时间是一样的。这导致他发展越来越慢。当他艰难地奋斗到100个功能点后,就达到了瓶颈,因为他每天必须去处理10个维护点。
大公司业务多,产品也多,这种现象尤为严重。公司员工的数量在一定时间内是固定的,公司不断地研发新产品,但旧产品的维护往往也是同一批技术员负责。久而久之,随着旧产品的数量的增长,旧产品的维护会影响新产品的开发进度,甚至于无暇开发新产品。
个人认为,解决这种发展危机的方法不外乎下面几种:
- 人员招聘:人员不足,那就再招,但是这导致成本增加。
- 产品重构:分析现有的产品,去粗取精,进行重构整合,开发出新的产品。
- 淘汰旧产品:一些几乎没人用的产品就丢掉吧,就算不丢也是xxx。
原文地址: