尽管许多组织和团队声称自己非常敏捷,但他们仍在使用瀑布的方式规划产品。为什么会这样?我们该如何改变这种「错误敏捷」?
原则上,践行敏捷开发很简单:构建一个增量;测试这个增量;了解需要改变的信息;将信息反馈到第一步中,并重复步骤。
整个过程可以从两个方面,将敏捷开发与瀑布开发彻底区分开:第一,尽早且频繁地交付小批量的可工作的产品;第二,根据(一)得到的新变化和信息,对产品进行恰当的调整。
如下图所示的敏捷路线图很常见。时长一年的甘特图上堆满了功能,并提前完成了任务分配。研发团队只能在一个个不间断的迭代中,实现所有的功能;他们还没有机会总结已交付的工作并作出调整,就必须立刻进入下一个功能开发。
如果前两个产品功能交付后被证明是错误的(这非常有可能发生),难道我们还要按原计划迭代下去吗?继续遵循上面的甘特图,可能会一错到底。因为计划好的路线图无法帮助我们评估交付效果,识别问题并及时调整。
敏捷开发刻意只关注下一次迭代的即时计划,但许多团队构建了一年甚至更长时间的甘特图,并且罗列了无数个待开发功能和完成截止日期。这样怎么会敏捷呢?
01 前瞻性计划:敏捷刻意忽略的部分
除了当前迭代正在构建的产品外,敏捷方法论不太关注前瞻性的计划。因为只有这样才能做到 「实时计划」 ——我们应该看到什么是可行/不可行的,并根据反馈的数据决定下一步该怎么做。
敏捷意味着「能够快速轻松地行动」,而敏捷开发需要被持续引导,逐步提供价值,再根据市场反馈的情况快速调整策略和方向。 这是一个建立