为何优秀如程序员,也会构建 Bug 满格的软件?(14)

这也意味着,优秀的工程师组成的小型团队构建软件的速度远远超过了普通工程师组成的大型团队。他们可以充分利用现成的开源代码和复杂的云服务,并利用自动化测试及其他工具摆脱单调的日常工作,让每个人都专心思考如何创造性地解决问题。他们可以确定关键功能的优先级,并减少不必要的工作,快速测试用户的不同想法。这是经典著作《神话人月》的核心论点:总的来说,增加软件工程师对加快项目速度并无裨益,只会让项目的规模扩大。

与普通工程师组成的大型团队相比,优秀的工程师组成的小型团队制造的bug和安全问题也会更少。与撰写论文类似,编写代码的人越多,编程风格就越多,假设和怪癖就越多,最终只能在拼凑而成的产品中协调,因此出问题的几率就越大。相比之下,由优秀的工程师组成的小型团队构建的系统将更加简洁、连贯,而且更加便于理解。没有简单性就无法保证安全性,大规模的协作很难铸就简单性。

工程工作的协作性越高,我们就越需要优秀的工程师。工程师代码中的问题不仅会影响到他个人的工作,还会影响到身边同事的工作。在大型项目中,糟糕的工程师只会给彼此添乱,因为错误和糟糕的设计就像滚雪球一样,越滚越大,直到出现重大问题。大型项目需要建立在可靠的代码模块上,并采用有效的设计,同时还需要非常明确的假设。你的工程师越优秀,系统在无法承其中而崩溃之前发展得就越大。这就是为什么成功的科技公司尽管规模庞大但坚持招聘优秀的人才。系统复杂性的硬性限制不在工作量,在乎质量之间也。

推荐阅读