人月神话阅读笔记01
书在一开头就提到了软件工程管理中的一个关键问题:人/月。在项目管理过程中的两个关键因素,人和时间。
这里背后的一个原因是,随着软件开发过程越来越成熟,很多人没有将软件开发当成一种创造性的脑力劳动,而逐步地将软件工程当成了劳动密集型的工程,软件规模和工作量是一种线性增长的模型。
章节中提到,我们在进行工作量估算时,往往省略了团队规模扩大之后的一个重要事件成本——沟通成本。而沟通成本由两个部分组成:培训和相互的交流。每个成员需要进行技术、项目目标、总体策略以及工作计划的培训。这种培训是不能分解的,因此这部分增加的工作量随人员的数量呈线性变化。
也就是说,当团队增长到一定的规模后,新增人员带来的沟通成本会比开发成本都高的多,反而会拖累项目的进度。反过来也要求在软件设计之初做好业务的拆分,做到不需要每个人都需要和其他人员有深度的关联,在代码上也需要做好解耦的设计。当前流行的DDD、微服务、代码上的设计模式都是基于这样一个原则来试图解决问题。
所以我们要对软件工程有一个清楚的认识,软件工程不是一门劳动密集型的产业,而是一个需要脑力劳动的产业,为了完成工程,不要片面增加人,片面的增加人而没有协调的话,工程只会越来越乱。也不能片面增加工作时长,这样效率也不会见长