拜读了Brooks博士的经典著作,看了整2个月,略微有些收获,记录在这里。
一、工作量
1.程序:是仅仅能实现简单功能的一段代码
2.程序产品化:即向下兼容,可以在多平台运行。 此工作需要3倍工作量
3.程序组件化:即向上兼容,可以供不同程序调用。 此工作需要3倍工作量
4.编程系统产品:即程序既要产品化,又要组件化。此工作需要9倍工作量
2,3,4都是使程序更加通用的过程,简单的说就是提高程序的复用性,付出的代价是成倍的工作量。
二、项目进度
1.团队质量决定项目是否成功
2.合理的计划是影响项目进度的最大因素
3.增加人手会带来额外工作量:培训、沟通、重新分配任务
4.设置很多时间点,及时沟通,保证项目进度
核心观点:向进度落后的项目添加人手,只会使进度更落后。
三、人
1.小型、精干的团队最好——沟通成本低
2.两个领导:产品负责人(专心负责管理)、架构师(专心负责技术)
3.架构师负责概念完整性(定义功能,使用方法),保持概念一致性,即定义我们要干什么
4.架构师负责设计,实现授权给程序员完成,可以通过沟通影响实现,但不能干预实现过程
5.科学数据:程序员最多将50%的时间用于编程和调试
6.必须培养程序员从整体出发、面向用户的态度
7.积累标准组件库,通过复用简化程序员的开发工作
四、文档
1.是沟通的工具:传递计划、决策
2.记录:项目目标、用户手册、内部文档、进度计划、成本预算
五、维护
1.维护是必须的,需求一定会变化
2.维护的成本 >= 40% 开发成本
3.维护会带来新bug
六、开发过程
1.了解用户和用户的需求很重要
2.用快速原型体现概念完整性,并及时与用户沟通
3.增量迭代开发:先定义整体结构,逐步增加功能;发现问题,及时迭代修改设计