让我们忘记"敏捷"这个词吧

 经常听到很多敏捷实践者的问题:

什么才是真敏捷?

我们就是山寨敏捷,为什么不用TDD?

你持续集成了吗?

我们站立会议超过了30分钟,有关系吗?

Scrum就是一些管理实践,不用上TDD,持续集成这些技术实践,敏捷有啥用阿?

要不要结对阿?

问这些愚蠢的问题,就像问是不是用筷子吃饭,才叫真正的吃饭。而真正的问题是我饿了,我手抓羊肉,吃面包,喝水,甚至去打麻将,让我忘记饿的感觉,都是解决办法。

我写过这样一篇文章,《敏捷迷雾背后的本质》 ,关于这个,我还是想罗嗦几句。

把事情作对的方式很多,敏捷实践是其中的一种方式,它一方面带来了很多最佳实践,另一方面是一种新的思维方式。


关注问题,关注组织中的浪费,寻求方法进行改进。将敏捷实践看成做出这些改进,可以参考的集合。

如果一味的强调敏捷,就好像寻求银弹一样,在你还不清楚自己存在什么问题的时候,试图去寻找一个解决所有目前和预想未来可能存在问题的工具。

这,是不靠谱的。

敏捷只是一个代名词而已。

我们可以推演一下敏捷中的实践,它背后隐藏着的实际问题是什么。


1)站立式会议

这个主要是沟通问题,沟通永远不够。在固定的时间,固定的地点,交流固定的主题,就是为了沟通信息,从而事情的推进能够自然,紧凑的方式进行。


2)  编写测试

用什么方式保证你写的代码没问题。答案可能有很多,可以依赖功能测试,依赖Code Review,依赖你的细心。。。。,最终的目的,是使你的代码正确表达它的意思。如何验证它的正确?是“我觉得”,是“应该。。。”,靠主观是不能解决问题的。就像毒奶粉,靠用味觉品尝,靠用眼睛看,这些都不是能确定奶粉是否合格的方式。至于测试先行,还是测试后行,我觉得并不重要了,可以当作哲学问题来讨论,关键是最后你的测试,是否验证你的代码正确的表达了它的意图和逻辑。


3)团队计划会议

如果每个项目经理,都熟悉具体工作任务和优先级,没什么问题。如果不是这样,大部分项目经理独立做出来的计划,是拍脑袋的,包括任务划分和优先级都是欠合理的。 这时,就可以依赖团队的力量,一起做计划,将计划变得更加合理。只有开发人员自己才知道,具体细粒度的开发任务如何安排更加合理。


4) 看板

看板并不是敏捷实践独有的,我在以前的博客说过,越狱中,大家可以看到大量应用看板的实际例子。看板,解决的是公共信息沟通的问题。没有它,很多项目组成员公共的信息,需要通过很多点对点的沟通来弥补。沟通的效率会非常低。我们的群公告也可以起这个作用。


5)用户故事

为什么选择用户故事作为需求描述的一种方式呢? 用户故事是从用户角度,给用户带来的价值角度来描述产品需求的。相比冗长的需求规格,这个是易于理解的。需求描述的最终目的,无非也是,在各个角色当中达成一致的理解。 如果一个功能实现的周期过长,就增加了很多不确定性,所以用户故事要求是小的,很容易实现的。这也就意味着,我在较短的时间内,就可以得到明确的结果。从价值流角度分析,用户故事粒度小,这些价值是持续交付的。 一个功能开发时间越长,在开发这段时间,价值是没有被交付的。


6)持续集成

如果说站立会议,保证team成员之间沟通无偏差。那么持续集成就保证,我们的系统,模块,始终能正确的沟通和表达。如果其中的问题发现的晚,就会导致解决问题的成本高。持续集成,就表明,我们想要的,一直都是OK。消灭问题与萌芽之中。


7)坐在一起

为什么要坐在一起?还是为了沟通,及时沟通,如果信息不一致,可能有同事基于错误的信息,做了错误的工作,白白浪费时间。作为信息民工,我们的工作的输入就是信息,如果输入信息delay(比如等邮件通知,等确认结果),那工作自然要delay,如果输入信息有误,自然会导致工作浪费。信息不仅仅是信息,它起的是控制作用。

这里我就列举了一些,其它的大家自己去思考吧。

总的来说,就是

1. 利用团队的力量来思考,来解决问题。

2. 强调端到端价值的交付 .

3. 强调信息沟通的及时性,一致性和准确性。

忘记敏捷,忘记agile,关注问题,关注细节,关注团队,勤思考,提高工作效率和软件质量的办法总是存在的。

把敏捷实践作为你的工具箱,它不是全部,它不了解你实际的问题,也不知道你将去向何方。

作为代名词,可以继续使用,但是它并不意味着什么,代表着任何你想给它的含义。

猜你喜欢

转载自gurudk.iteye.com/blog/532996