读《软件开发本质论》

书籍信息

中文书名: 软件开发本质论
英文书名: The Nature of Software Development
作者: [美]Ron Jeffries
译者: 王凌云

阅读感悟

  • 我们最终想要的是价值,提供价值的是功能特性。功能特性发布的越早,我们就能越早提供价值。
  • 基于价值的的管理比基于时间或工件等不提供价值的事物更胜一筹。
  • 根据功能特性做计划很简单,只要在必要的时候才进行估算。根据以往完成的工作量来安排下一阶段的工作,效果会更好。
  • 采用逐渐增加功能特性的增量式开发方法,要求我们每隔几周就能开发出小而完整的产品。所开发的必须总是能够正常运行,而且其设计也是良好的

  • 开发工作必须要交付真正可用的功能特性。

  • 专注于价值。

  • 目的、自主与专精是提高员工满意度和工作效率的三大驱动力。

    • 目的来源于具体的业务。开发团队需要专门配备一位业务人员(产品负责人或客户),由他来指导团队确定哪些功能特性需要首先完成,哪些可以推迟。业务人员负责将疑虑或问题告诉团队,而不是解决方法,团队一起努力解决。
    • 自主能够给整个团队带来责任感。
    • 专精源自迭代过程。每经过一次迭代,都会完善完成一词的定义。所谓的完成其实就是一种标准。在追求完成的每一次迭代都是朝着专精迈进的过程。
  • 切分较大规模软件的标准:团队成员认为自己能够把握整个模块并且能够在一周之内完成开发。具体的切分方法:

    • 第一步,列出三到五个最重要的,产品最应该具有的大模块。用一句话来描述每个部分,然后将其分别写在卡片上。
    • 第二步,将第一步中的每张卡片上大模块,细化成三到五个更小的卡片。确保每个拆分出来的条目都具有商业价值,也就是必须是功能特性,而不是技术或部件。
    • 重复第二步,直到团队成员认为能够一周之内完成。
  • 迭代会引来重构。重构遵循露营地规则。

    露营地规则:在离开露营地时,要让它比你来的时候更好。

    也就是说每次迭代加入新功能特性的时候,我们应该清理应该清理的代码,外加一点相关代码。而不是完全停止功能特性的开发来清理代码。

  • 根据功能特性来组织团队,而不是技能。

  • 详细的计划是无用的。