跳到主要内容

生产力

人月神话

Fred Brooks 在 1975 年出版了 《The Mythical Man-Month》(中译:《人月神话》),书中总结了他作为 IBM 360/OS 系统架构师开发操作系统和工具的大型软件开发经验。他决定了软件开发的困难,总结四个本质:

  • complexity 复杂性
  • conformity 一致性
  • changeability 可变性
  • invisibility 不可视性

定义

在一定时间内或在一定成本下,完成的单位任务的数量。

单位任务

  1. 项目
  2. 模块
  3. 组件
  4. 函数
  5. 代码行

个体生产力和团队生产力

也许你听过“10倍程序员”这个词,这是真的,程序员之间的差异很可能超过10倍。

个体生产力和团队生产力相比会更高,因为沟通也许会占据项目成本的 50%。

工时与工期

  • 工时:完成任务耗费时长。
  • 工期:完成任务耗费时间跨度。

比如,一个模块的评估工时是 16 小时,工期为 2 天。那么投入两个程序员,工期可否变成 1 天?

大部分情况下,答案是不行。这其中涉及设计的切分和合并,或者叫做功能拆解、测试和集成,以及沟通。

所以,你经常会听到:在一个延期的项目中投入更多的人,不会起到缩短工期的作用。

生产力预测

在一个相对固定的团队,完成多个相似的项目后,可以感觉完成项目的历史数据,简单预测同类项目的生产力。

工时估算的问题

  1. 如果是从零到一,通常时间要预留更多;
  2. 工时已固定;
  3. 团队做过或未做过类似的事;
  4. 没有时间余量
  5. 程序员趋向于夸大效率。
  6. 进度取决于加班
  7. 个人生产力 X 工程师数量