XP 与 Agile 的 20.5 年(2020)
本文通过 20 多年的实践重新审视 Agile 和极限编程(XP),开发者在真实收益——迭代开发、自动化测试、重构以及更紧密的协作——与强制结对编程和僵硬流程教条带来的疲惫之间作对比。许多人认为,虽然短反馈循环和 CI/CD 之类的核心理念已经变得主流且有价值,但“首字母大写的 Agile”已经被官僚体系、认证产业和管理层仪式所挪用,这些东西增加了额外开销,却没有改善结果。核心问题是:敏捷方法今天是否仍能帮助团队交付更好的软件,还是说灵活、因地制宜的实践已经悄然取代了它们那些品牌化的框架。
结对编程与 XP 实践
- 许多人发现全职结对令人疲惫、具有侵入性,或与自己的工作风格不兼容;有些人说,如果要持续这样做,他们宁愿离职。
- 另一些人则表示,在高强度结对期间,尤其是在“师徒”模式下或双方化学反应很好时,他们获得了最高的生产力和学习效果。
- 几位评论者指出,结对在良好的文化和自愿使用下效果最好;被强制推行的 XP 被视为傲慢或教条。
- XP 受到称赞,因为它为程序员应该做什么提供了具体指导(测试、重构、增量设计),而不仅仅是围绕编码的流程。
Agile、Scrum 与误用
- 常见抱怨是:Scrum 和 Agile 经常被教条式地应用,而“你做错了”被用来回避批评。
- 许多人描述“仪式”(站会、评审、冲刺)只是机械地执行,却没有明确目标、协作或适应。
- 将冲刺误解为固定截止日期,会导致故意压低任务量、低估工时,以及被认为进展缓慢。
- 有些人认为 agile 本身是合理的,但已被官僚体系和咨询业挪用;也有人说它从一开始就是为了销售服务和控制开发者。
- 在一些人看来,Kanban 更符合被中断驱动的工作方式。
测试、TDD 与覆盖率
- 单元测试、重构和对测试友好的设计,被广泛视为长期的重大收益。
- 也有人认为单元测试维护成本高,往往是重复的,而且不如端到端测试有价值。
- 关于“100% 覆盖率”的争论:有人认为这是有害的极端主义;也有人指出 XP 文本明确说并非每个方法都需要测试,而是重点在于信心。
- 还有担忧认为,为了可测试性而设计可能引入后门、性能问题,或让测试代码泄漏到生产环境中。
实践与工具链的演变
- 许多曾被视为“激进”的实践(CI、自动化构建/测试、重构、增量设计、源代码管理)如今都已成为主流,部分可归因于更广泛的 agile/XP 浪潮。
- 也有人反驳说,这些在更早的“瀑布”或 agile 之前的环境中就已存在;agile 并没有发明它们,但可能帮助它们传播开来。
Agile 产业与组织动态
- 对“agile 表演”的批评很强烈:角色(教练、scrum master、产品负责人)大量增加,却没有消除真正的阻碍。
- 开发者感觉自己被大量会议仪式、文书工作,以及对自己无法控制的延误承担责任所压垮。
- 有些人认为 agile 的失败是政治性的:官僚体系吸收了这套语言,同时破坏了其原则,最终形成“WaterScrumFall”和僵化、非 agile 的实施。