为何优秀如程序员,也会构建 Bug 满格的软件?( 五 )
如果我们把所有时间花在重建现有的技术上,那么就无法取得技术上的进步。软件工程的工作是构建自动化的系统,而我们应该自动化的第一件事就是日常的软件工程工作。现在问题的关键在于了解我们需要重用哪些系统,如何根据自身的独特需求改造这些系统,同时在这个过程中解决新发现的问题。
软件受到复杂性的限制
软件的功能性往往会受到复杂性的限制,却与投入的资源量没有太大关系。
通常IT系统都有很多功能,但仍然无法博得用户的喜爱,因为这些系统非常混乱。相比之下,名列前茅的移动应用往往因其简单性和直观性而备受称赞。学习使用软件很难。除此之外,实际上用户并不喜欢新功能,因为日益积累的复杂性终有一日会决堤。例如,iTunes在担任苹果的媒体生态系统中心近20年后,于今年分裂成了三个不同的应用程序(分别服务于音乐、播客和电视节目),因为对于一个应用而言iTunes的功能过于复杂。从实用性的角度来看,限制不是说可以实现多少个功能,而是说哪些才是简单直观的功能。
即便抛开实用性不提,一旦项目变得过于复杂,工程进度就会停滞不前。向应用程序添加每一行新代码都需要考虑与其他代码的交互。应用程序的代码库越大,构建新功能时引入的bug就越多。最终,bug的产生速率会超越新功能的开发速率。这就是赫赫有名的“技术负债”,也是专业软件开发的主要挑战。这就是为什么许多大型IT系统中依然存在多年未解决的问题的原因。向项目添加人手只会让局面更混乱:由于代码库无法承其重而崩溃,所以这些开发人员只能在原地打转。
推荐阅读
- 武侠|永劫无间狂销600万,创国产游戏巅峰,为何网易总能做出武侠爆款
- 精灵宝可梦|《宝可梦》人称神兽版本“秃鹰娜”,伽勒尔火焰鸟的表现多优秀?
- 三国杀|三国杀:同为20宝珠,为何没人选钟会?原因令人费解
- Xbox|将拥抱元宇宙世界?Xbox20年庆典看点十足,全球玩家为何兴奋?
- 阴阳师|为何崩坏3在Steam上差评如潮,在腾讯WeGame却有超8成好评?
- 吃鸡游戏|之前是“吃鸡”大主播,现成功转战联盟,为何越来越多主播开始转型?
- 地下城堡3|新武将为何无人问津,原来是技能中存在巨大缺陷——杜袭解析
- edg战队|EDG勇夺S赛桂冠!明明已是第三座冠军,为何却让更多玩家兴奋?
- lpl|BO登顶韩服第一,更改ID引人心疼,为何没有战队敢要他?
- lpl|LPL为何处理不了猫咪,自身了解太浅,根本不重视S11!