在我们的开发中,有些实践的价值是容易感受到的,比如重构,比如TDD,比如持续集成。
有些实践的价值则不容易感受到,比如Retro(回顾会议),比如IPM(迭代计划会议)。
以IPM为例,在我们的IPM上我们一般会做两件事Kick off cards和Estimation。也就是选择下个迭代要做的卡和评估每张卡的点数。这两件事情似乎第一件事没必要所有人都参与,第二件事感觉一定程度上是瞎蒙,尤其是一群人来蒙,显得尤为的不靠铺。而且似乎我们IPM就是为了选出下个迭代能做完的卡,就是为了知识传递,就是为了给客户可视的数据和计划,让他们心理好过。
假设说我们不必所有人都参与就能保证选出适合下个迭代做的卡,我们通过每日Code Review等实践使得每个人都不会缺少相关卡的知识,而客户也不特别在意我们的进度(或者说我们的进度他们总是满意),是不是我们就不需要IPM了?是不是我们就不需要集体Estimation不需要集体Kick off了?
实际上,我们的项目就符合前面的假设,在项目的最后,我们真的取消了IPM。这时,才感觉出来IPM的价值。
整个团队的效率慢慢开始下降。对于目标的理解开始不一致。虽然团队整体的表现并不差,虽然没有出现任何实质的问题,但容忍度低的人开始不舒服。跟团队自己以前的状态比,确实有点退化的感觉。怎么会这样呢?
每当说到这种状态出现在敏捷团队中的时候,我最常听到就是人的问题,态度问题等等说法。其实我一直觉得,如果追究态度,空谈人的问题有用的话,我朝应该是世界第一而不是那个人人自我的美帝。人一直是有问题的,不然要管理学干什么?敏捷里提倡自组织团队,自我管理。但决不是松散组织,不管理。自组织它也需要组织,自我管理它也是管理。像IPM这样的活动,就是管理的一部分。
IPM上做的两件事,看起来完全不靠铺,实际上却非常有价值。整个IPM活动就是一个承诺的仪式。像古代行军打仗前的誓师大会一样,可以调动起团队在下一个迭代中的士气。通过集体参与评估和制定计划,通过各个角色的共同作用,使得每个人都参与到整个计划制定中来。自然而然的对下一个迭代许下承诺。而承诺一旦许下,就会像一个耳语的恶魔,暗中催促着人们的行为与其保持一致。
生活在我朝的人们,似乎对承诺这个东西的效果是完全不相信的。这也难怪,不过出于众所周知的原因,咱不谈我们为啥不信任承诺。从心理学的角度,承诺是有实际意义的。《影响力》“第三章 承诺和一致”中就讲了这个极为简单却极为有用的心理学原理:人人都有一种言行一致(同时也显得言行一致)的愿望。
其中有很多很有趣的实验,揭示了承诺的力量。 感兴趣的人推荐读一读。里面有个小例子提到,两个星期前一个愿意在自家的草地上插一个小牌子为交通安全做点贡献的小承诺,使得该社区76%的人都在两个星期后接受了在自家草地上插一个挡风景的大牌子的请求。而对照社区只有17%。巨大的反差可以让我们看到承诺的力量。
当然我们对承诺的不信任也是有道理的,当承诺真的难以完成的时候,几乎所有人都会违背承诺。在传统的瀑布式开发过程中,使得计划这种承诺难度大大上升,而可信度也就大大下降。这也是为什么我们需要迭代的原因。