生产力
人月神话
Fred Brooks 在 1975 年出版了 《The Mythical Man-Month》(中译:《人月神话》),书中总结了他作为 IBM 360/OS 系统架构师开发操作系统和工具的大型软件开发经验。他决定了软件开发的困难,总结四个本质:
- complexity 复杂性
- conformity 一致性
- changeability 可变性
- invisibility 不可视性
定义
在一定时间内或在一定成本下,完成的单位任务的数量。
单位任务
- 项目
- 模块
- 组件
- 函数
- 代码行
个体生产力和团队生产力
也许你听过“10倍程序员”这个词,这是真的,程序员之间的差异很可能超过10倍。
个体生产力和团队生产力相比会更高,因为沟通也许会占据项目成本的 50%。
工时与工期
- 工时:完成任务耗费时长。
- 工期:完成任务耗费时间跨度。
比如,一个模块的评估工时是 16 小时,工期为 2 天。那么投入两个程序员,工期可否变成 1 天?
大部分情况下,答案是不行。这其中涉及设计的切分和合并,或者叫做功能拆解、测试和集成,以及沟通。
所以,你经常会听到:在一个延期的项目中投入更多的人,不会起到缩短工期的作用。
生产力预测
在一个相对固定的团队,完成多个相似的项目后,可以感觉完成项目的历史数据,简单预测同类项目的生产力。
工时估算的问题
- 如果是从零到一,通常时间要预留更多;
- 工时已固定;
- 团队做过或未做过类似的事;
- 没有时间余量
- 程序员趋向于夸大效率。
- 进度取决于加班
- 个人生产力 X 工程师数量