实施敏捷开发,每个团队都要经历一个转型期,在转型期需要每个团队根据自身的不同,找出合理有效的解决方法。一般可以通过以下几个步骤找出合理有效并适合团队的方法。
一、对有效性进行定义和评价
完全量化管理可能做不到,但“半年后,我们希望能每月发一个可交付版本”或“把总体测试时间降低一半”这类明确个别定义还是可以找到的。当然不同团队首批目标不同,首批要实践的内容也不同。但有了目标,就可以防止团队借口“项目特色”,言敏捷之名行混沌之事。
二、阶段性检查和推进目标
前几个迭代往往离目标很远,很容易忙了半天才发现走偏了。这时候可以设置某些临时目标来作为“路标”。比如,假设某团队经常处于“很多活都在干,但没有一个干完了,因此也不能交付”的状态,而几个月后希望做到“当月计划功能的交付比例达到80%”,那么可能需要这样几个路标(实际工作不只如此):
第一个月:实现任务的看板管理
第二个月:实现基于故事的看板管理
第三个月:当月计划功能交付比例达到50%
第四个月:控制在制品数量在2N-1以下(N是团队人数,此目标即“同时开工的工作量不超过2N-1个”)
第N个月:当月计划功能交付比例达到80%
在这个例子当中可以看到,如果一上来就直接设定“当月计划功能交付比例达到50%”之类的度量数据,可能不但很难达到,甚至可能由于没有看板管理而不能度量。
三、同时选择超过一个团队进行试点
敏捷开发的试点过程千变万化,如果只找一个团队试点会有问题。如果失败了,大家会以为敏捷不行;如果成功了,大家会照搬经验。
所以最好的方法是让若干个团队各自基于自己的目标进行试点,如果其中有多个取得成功,大家会意识到原来成功的方法有很多种,就能灵活应用在自己团队中进行实验和推广了。
四、需要对“商业目标”与“一线实践”有很深入的理解
做到这一点非常困难,然而偏偏这一点又是成败的关键。
经常见到很多团队或成员一拥而上开始试点某个局部实践,有时候是Scrum中的扑克牌估算或每日立会,有时候是XP中的自动化测试或结对编程。但做了一段时间,由于没有目标,尤其是没有那些让团队听了之后就不会放弃的目标,很快就坚持不下去了。
要培养商业目标意识很难,甚至很多从业之前没有做过高级管理职位的敏捷培训师或咨询师都不具备,更不用说普通一线工作人员了。一种做法是让高层比如部门经理来宏观协调敏捷的实施,而不要完全自下而上。高层经理的职业特性保证了他们会潜移默化地关心最终实施的效果胜过实践本身。说起来,“效果胜过实践”本身就是敏捷宣言中“可工作软件胜过繁杂文档”的现实体现。
五、要注意敏捷开发的生态系统问题
刚才提到尝试个别实践经常失败,一个原因是因为缺少目标只关注实践,另外一个则是忽略了与此实践相关的生态系统。
比如每日立会,看起来非常简单,但实践起来困难重重。比如为什么我要告诉别人我的进度?为什么我要告诉别人我遇到的困难?谁因为什么原因会提供帮助?这些潜在的问题,都需要相应的团队模型来解决。敏捷开发生态系统就是用来描述各种活动之间的关系的。