2019-09-224 分钟阅读

读书笔记:没有银弹

日志

没有银弹(英语:No Silver Bullet)是弗雷德里克·布鲁克斯在1986年发表的一篇关于软件工程的经典论文。该论文的中心论点是,没有任何一项技术或方法可以像银弹一样,让软件工程的生产力在十年内提高十倍。

核心概念

本质复杂性(Essential Complexity)

软件固有的复杂性,来自于问题本身。比如:

  • 问题领域的复杂性

  • 管理业务规则的复杂性

  • 不同利益相关者之间的沟通

偶然复杂性(Accidental Complexity)

软件开发过程中引入的额外复杂性。比如:

  • 编程语言的复杂性

  • 工具链的复杂性

  • 硬件限制带来的复杂性

主要观点

  • 没有银弹:没有任何单一的技术或方法可以显著提高软件工程的生产力。

  • 本质复杂性无法消除:我们只能通过更好的抽象和工具来管理本质复杂性。

  • 偶然复杂性可以减少:通过更好的编程语言、工具和方法来减少偶然复杂性。

  • 最大的改进来自于本质复杂性的管理:更好的需求分析、更好的设计方法、更好的人员培训。

管理的职责

  • 识别本质复杂性和偶然复杂性

  • 专注于减少偶然复杂性

  • 投资于人员培训和工具改进

  • 不要期望单一方法能解决所有问题

现实意义

即使在今天,这篇论文依然有重要的现实意义。敏捷开发、DevOps、云计算等新技术,都只是在减少偶然复杂性,而无法消除本质复杂性。

软件工程的核心挑战依然存在:

  • 如何理解和管理复杂的业务需求

  • 如何在团队之间有效沟通

  • 如何在有限的时间和资源内交付高质量的软件
没有银弹,只有持续的学习和改进。