一、是什么影响了我们的交付效率?
经历敏捷有一段时间了,一直在想,敏捷到底是什么,给我们带来了什么好处?看板、站会、迭代、回顾会议等实际使用的工具或方法,与敏捷宣言、12条原则又是什么关系?
回想敏捷教练刚到公司时做了一个问卷调查,其中一项是一个需求的实施周期有多长,有三个选项:1周以内、2-3周、4周以上。最终大家统一意见是2-3周可以完成,敏捷教练看到结果后说这个交付效率很高啊,一般互联网公司也就只能达到2-3周,很少公司可以在1周以内,我们已经相当敏捷了。
WHAT?我们真的已经敏捷了吗?NO!所有人在评估实施周期的时候,心里都默默地加了几个条件:
1.需求已经澄清
2.需求不再变化
3.专职做这个需求
这些条件能满足吗?从来没有满足过,顶多满足其中一两个条件,所以2-3周永远只是理想的交付效率。那实际的交付效率又如何呢?只能让数据来给我们答案,统计几个需求的各项时间以后发现,最短的一个需求消耗59天,最长的达到300多天,平均下来需要100多天。事实总是那么的出人意料,又让人无法反驳。那么,问题来了:时间都去哪了?
为找到原因,我们确定需求实施的几个关键时间点:
1、浮现:业务第一次提出一个想法
2、到达:业务提交正式需求
3、分析:业务与技术沟通实施方案
4、开发:设计技术方案、开发、单元测试
5、测试:组件组装测试、用户验收测试
6、上线:需求正式投产
统计数据显示,开发平均2-3周,测试平均2-3周,上线平均1-2周,浮现、到达和分析阶段时间波动幅度较大,成为影响交付效率的关键。有意思的是,开发平均2-3周,与调查的时间一致,原来是理解上的不一致,技术理解的实际上是开发效率,而非交付效率。那浮现、到达和分析阶段为何时间波动幅度很大呢?这三个阶段主要是业务、技术及其他关联方对需求的方方面面进行沟通,让所有人都达到自己认为需求已明确的一个过程,可以统称为需求澄清阶段。而需求澄清,实际上是一个不断在沟通中实现信息对齐的过程,也就是说,关键在于沟通。再反观开发阶段,主要是技术开发人员之间沟通;测试阶段,主要是开发人员与测试人员之间沟通;上线阶段,主要是开发人员与运维人员之间沟通,等等等等。突然发现,沟通无处不在,沟通效率是整个交付效率之关键!
二、敏捷对提升交付效率真的有帮助吗?
看板
进入敏捷团队以后,上来便是设计看板,将所有需求按用户故事拆分,使用绿色便签贴与看板上,将行动项使用黄色便签贴于用户故事上,将问题和阻碍项使用红色便签贴于用户故事上。看板也在使用过程中不断更新,目标就是将所有事项在看板上进行可视化。原来需要通过周报、日报、询问等方式获取的信息,现在从看板上就能一目了然的看到团队内每个成员、每个用户故事的状态,无形中提升了整个团队的沟通效率。
站会
然后是设立每日站会,每天早上15分钟,所有人在看板前面简单叙述一下自己昨天做了什么,今天准备做什么,遇到的风险和问题是什么。一个简短的站会,实际上就是团队内部的一次信息对齐。如果一个成员的任务依赖另外一个成员,站会的时候就可以关注到另一个成员的状态,提前发现潜在风险和问题并及时干预,而不是等到问题出现再想办法解决(此时已经影响到交付效率)。原来,站会也是在提升着团队内的沟通效率。
迭代
之后是设立迭代。每两周一个迭代,每个迭代开始一周前设置需求梳理点,用于检查需求澄清情况,迭代第一天筛选进入当前迭代的用户故事,迭代最后一天进行回顾会议。原本需要通过告知方式让每个人了解什么时间之内该完成什么事,运行几个迭代以后,转变为每个团队成员自己清楚什么时间该干什么事,激发个体的同时,也降低了沟通成本。
回顾会议
最后是在每个迭代最后一天进行回顾会议,回顾会议固定主题有两个:
1.这次迭代有哪些做的好的地方,我们需要坚持;
2.这次迭代待改进的地方,及其解决方案。
回顾会议让我们在实践中发现问题,解决问题,不断提升交付效率。
三、敏捷宣言及其原则给我们的启示
我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。由此我们建立了如下价值观:
个体和互动 高于 流程和工具
工作的软件 高于 详尽的文档
客户合作 高于 合同谈判
响应变化 高于 遵循计划
也就是说,尽管右项有其价值,我们更重视左项的价值。
个体与互动高于流程和工具,其中的“互动”便是沟通。
客户合作高于合同谈判,实际是沟通机制的转变。
业务人员和开发人员必须相互合作,项目中的每一天都不例外。
只有相互合作,才能快速有效的沟通
不论团队内外,传递信息效果最好效率也最高的方式是
面对面的交谈。
曾经有一次回顾会议,每个人写一些自己认为最好的用户故事以及最差的用户故事,其中一个最差的用户故事是一个场景的支用用户故事,一个最好的用户故事是另一个场景的支用用户故事。最差的支用用户故事,是业务前后咨询了十几个技术人员,消耗好几天时间才确定技术方案;而最好的支用用户故事,是业务和技术在一个黑板前,历经一个小时沟通确定技术方案,且方案得到大家的一致认可。
总结
敏捷就是在实践中不断提升交付效率让客户满意,而提升交付效率的关键就是提升沟通效率。
网友评论