跳转至

1.3 开发流程

1.2 团队协作 | 首页 | 下一节: 1.4 问题解决能力


敏捷软件开发 12 原则

  1. 最高优先级是通过尽早持续交付有价值的软件满足客户。
  2. 欢迎需求变化,即使是在开发后期——敏捷过程利用变化为客户创造竞争优势。
  3. 频繁交付可工作的软件(几周到几月,越短越好)。
  4. 业务人员和开发者每天一起工作。
  5. 围绕有动力的个体构建项目,给予信任和支持。
  6. 面对面沟通是最高效的信息传递方式。
  7. 可工作的软件是衡量进度的首要标准。
  8. 敏捷过程促进可持续开发——赞助者、开发者和用户应能保持恒定节奏。
  9. 持续关注技术卓越和良好设计增强敏捷性。
  10. 简洁——最大化"不做的事"——是核心。
  11. 最好的架构、需求和设计出自自组织团队。
  12. 团队定期反思如何更有效,然后调整行为。

此外还需做到: - 适应迭代式、增量式开发。 - 具备自组织能力:无需事事等待指令。 - 始终聚焦优先级和业务价值,而非技术炫技。

为什么问开发者要时间估算是糟糕的主意

核心问题:开发者几乎完全无法准确预测项目需要多长时间。

  • Standish Group CHAOS Report 显示:只有 29% 的软件项目按时、按预算、结果满意完成。敏捷方法成功率 39% vs 瀑布 11%
  • 根本原因:写完整规格本质上就是提前编程;软件项目具有唯一性和不可预测性;开发者常常被迫"撒谎"给估算。
  • 业界甚至形成了潜规则:将开发者估算乘以 2-5 倍作为"真实"时间。
  • 固定范围、固定价格、固定工期的合同是一切祸乱的根源。

替代方案(Scrum + Story Points)

  1. 创建产品待办列表(Product Backlog),用用户故事描述功能。
  2. 工作量点数(Story Points)取代时间估算(Fibonacci 序列:1、2、3、5、8、13、21),找最简单的给 1 分,最难的给 13 或 21 分,以此为基准估算其他。
  3. 关键原则:永远不要让工作量点数与时间挂钩——否则一切回到原点。
  4. 经过几个 Cycle 后,团队速率(Velocity,每周期完成的点数)趋于稳定。
  5. 基于速率和 Backlog 中的点数排名,可以自动计算出某个故事大概何时完成。
  6. 避免使用"冲刺(Sprint)"一词——这个术语暗示冲刺后需要休息,与可持续开发的理念相悖;改用"周期(Cycle)"。

来源

  • Agile Manifesto — Principles behind the Agile Manifesto: https://agilemanifesto.org/principles.html
  • Romén Rodríguez-Gil — Why Asking for Time Estimates Is a Terrible Idea: https://www.romenrg.com/blog/2015/09/28/why-asking-developers-for-time-estimates-in-software-projects-is-a-terrible-idea-and-how-to-bypass-it-with-scrum/
  • Standish Group — CHAOS Reports (referenced within)

1.2 团队协作 | 首页 | 下一节: 1.4 问题解决能力