上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.7 失控的软件复杂度
软件复杂度失控的原因是多方面的,下面罗列了其中最重要的几条。
(1)软件复杂度失控是商业上成功的企业必然面对的“幸福的烦恼”。
随着企业业务的发展,软件也在不断“生长”,在这个过程中软件需要加入越来越多的新功能,这些新功能必然会引入更多的本质复杂度。而且,因为每次加入新功能都是在原有功能的基础上进行的,所以必然又会引入更多新的随机复杂度。
(2)随机复杂度会随着时间不断积累,如果不进行有针对性的治理,积累的速度会越来越快。
一款软件在商业上的成功意味着其软件生命周期就会比较长,那么,除了考虑当前研发团队的复杂度,还得考虑软件系统历史上的所有复杂度。
(3)软件系统在业务上的成功,必然会带来研发团队的扩大,这更容易带来随机复杂度的急剧上升。当所有人以不同的风格、不同的理解、不同的长短期目标往软件系统中提交代码时,工程一致性的缺失就会使软件的复杂度急剧上升。
(4)重复“造轮子”也是造成复杂度失控的“罪魁祸首”之一。别人的“轮子”不好用、跨部门沟通成本高、绩效考核需要“轮子”作为“道具”,不同部门重复“造轮子”,同部门的不同团队重复“造轮子”,同组的不同成员也在重复“造轮子”,这些“轮子”除沦落为获得高绩效评价而定向“演戏”的工具外,还为软件系统注入了大量的随机复杂度。
那么,我们应该怎么办?我们要避免“有急乱投医”。