Terry Xiao

Terry Xiao

软件工程

对抗软件复杂度的战争

对抗软件复杂度的战争

本文从多个角度探讨了软件复杂度形成的原因,并提出了应对策略。 首先,文章指出研发效能下降的主要原因是软件复杂度的指数上升。随着企业规模的扩大,技术栈的复杂度也随之增加,导致研发效率降低。 接着,文章将软件复杂度分为本质复杂度和偶然复杂度。本质复杂度源于问题域本身,无法消除;偶然复杂度则源于解决方案,可以通过技术选型和架构设计来降低。 文章进一步分析了复杂度爆炸的原因,包括业务复杂度、分布式系统规模、团队规模和关键干系人目标等因素。同时,指出错误的应对方式,如设置不可更改的 Deadline 和用“更先进”的技术替换现有系统,往往收效甚微。 针对软件复杂度,文章提出了以下应对策略: 1. 宏观层面:通过 Wardley Map 分析技术战略,将远离用户价值的模块购买现成的商业产品,降低系统复杂度。 2. 微观层面:控制代码质量,编写高质量的单元测试,以降低软件复杂度。 3. 系统架构层面:关注系统架构,确保架构设计合理,降低系统复杂度。 4. 工程师文化层面:培养良好的工程师文化,以交付高质量软件中间产物为荣,以交付低质量软件中间产物为耻。 最后,文章强调软件复杂度是人的行为引起的,需要从多个层面制定决策,努力为公司创造价值。
18
0
0
2023-08-04