5、后于计划,仍然可以拿出能良好完成大多数重要功能的产品。 当然,还有其他因素影响开发环境:资源。合用的工具、足够多的优秀开发人员、开明的管理团队,这些构成了我们要完成项目所需的基础架构。 20世纪里我们学习如何建立嵌入式系统,但管理上却一直没有搞清楚资源在所开发项目中的恰当位置。工程项目通常被看作如同是在生产线上制造小玩意。需要更多产品吗?那就加入更多的人和更多的机器。但是这在软件工程领域根本行不通。 Fred Books在他的《人月神化》(注:“人月”指一月人工)一书中展示了一个现象:给一个已经滞后的软件项目增加人员,这总会致使其更加滞后。两个开发人员之间只有单一的通信渠
6、道,但当增加工程师时,备忘/会议/电子邮件的链接数量将随人数的平方增长。 IBM发现,当项目的规模扩大,软件生产率由于同样的原因会明显下降。他们的调查显示代码产量(行/天)随着项目的扩大以数量级降低。 Barry Boehm的建设性成本模型是最著名的软件规划预测模型,它也显示时间线比固件大小增长得快得多。将代码行数乘以2,则交付时间的增加将远远超过一倍。有时会更多。 然而,当一个项目出现麻烦时,“再雇些人回来”似乎是普遍应用的管理格言。但就是不起作用。 难道没有希望了么?我们的项目注定要失败?这种在《新机器的灵魂》中贴切描述的压力是否就是我们的命运? 随着项目复杂度迅