人月神话

人月神话

1975年提出的观点和建议,至今适用。

引论,焦油坑

各种团队,或大或小或精干,一个接着一个淹没在焦油坑中。
表面上看,任何一个单独的问题都不是大问题,但当他们纠缠在一起是,团队的行动就会变得越来越慢,无法自拔。

  • 程序不是产品,编程系统产品的成本至少是程序的 9 倍
    • 编程系统:在功能上能相互协作、具有规范的格式、可交互的程序集合,称为编程系统,成本 x3
    • 编程产品:可被任何人运行,集以文档、测试、维护,以及拓展,称为编程产品,成本 x3
    • 编程系统 x 编程产品 = 编程系统产品(1 x 3 x 3)
  • 我们享受着创造的乐趣,享受着持续学习的快乐,又或者驾驭某项技能的成就感
  • 我们也要面对不少苦恼
    1. 追求完美
    2. 依赖其他人

      依赖其他人的程序,往往很糟;由他人设定的目标、供给资源和提供信息。

    3. 寻找琐碎的bug
    4. 技术过时【技术终将老去,不要排斥旧的技术】

      当投入大量辛苦的劳动,产品即将完成或者终于完成时,却已显得陈旧过时。

人月神话(进度 != 工作量)

业务大多是相互依赖的,往往不能并行进行

  • 采用的估算技术隐含地假设人和月可以互换,错误地进度与工作量混淆
  • 对自己的估算缺乏信心,也不会耐心持续地估算这项工作
  • 对进度缺少跟踪和监督
  • 不要盲目乐观,认为一切都会运行良好
  • 当意识到进度的偏移时,下意识的反应是增加人力(如汽油灭火,下边是自己的想法)
    • 会议成本 = 参会人数 x 会议时间
    • 怎么让会议高效?会议主讲人提前准备,会议限制时间(看上边的公式,多讲一分钟,三个人参会,成本要乘以三)
    • 怎么让会议可回溯?会议记录至关重要,相同的事如果要沟通多次才能解决,那就要找问题了!

设计的一致性(便于维护)

为了保证项目的优雅,一致性,我们也要学会牺牲自己。

绝大多数欧洲的大教堂中,由不同时代、不同建筑师所建造的各个部分之间,在设计或结构风格上都存在着许多差异。后来的建筑师总是试图在原有建筑师的基础上有所“提高”,以反映他们在设计风格和个人品味上的改变。所以,在雄伟的哥特式的教堂上,依附着祥和的诺曼第风格十字架,它在显示上帝荣耀的同时,展示了同样属于建筑师的骄傲。

与之对应的是,法国城市兰斯(Reims)在建筑风格上的一致性和上面所说的大教堂形成了鲜明的对比。设计的一致性和那些独到之处一样,同样让人们赞叹和喜悦。如同旅游指南所述,风格的一致和完整性来自8代拥有自我约束和牺牲精神的建筑师们,他们每一个人牺牲了自己的一些创意,以获得纯粹的设计。同样,这不仅显示了上帝的荣耀,同时也体现了他拯救那些沉醉在自我骄傲中的人们的力量。

概念完整性(谨防不伦不类)

概念的完整性的确要求系统只反映唯一的设计理念,用户所见的技术说明来自少数人的思想。

  • 唯一的设计理念
  • 少数人的思想

未完,待续