经常听到很多敏捷实践者的问题:
什么才是真敏捷?
我们就是山寨敏捷,为什么不用TDD?
你持续集成了吗?
我们站立会议超过了30分钟,有关系吗?
Scrum就是一些管理实践,不用上TDD,持续集成这些技术实践,敏捷有啥用阿?
要不要结对阿?
问这些愚蠢的问题,就像问是不是用筷子吃饭,才叫真正的吃饭。而真正的问题是我饿了,我手抓羊肉,吃面包,喝水,甚至去打麻将,让我忘记饿的感觉,都是解决办法。
我写过这样一篇文章,《敏捷迷雾背后的本质》
,关于这个,我还是想罗嗦几句。
把事情作对的方式很多,敏捷实践是其中的一种方式,它一方面带来了很多最佳实践,另一方面是一种新的思维方式。
关注问题,关注组织中的浪费,寻求方法进行改进。将敏捷实践看成做出这些改进,可以参考的集合。
如果一味的强调敏捷,就好像寻求银弹一样,在你还不清楚自己存在什么问题的时候,试图去寻找一个解决所有目前和预想未来可能存在问题的工具。
这,是不靠谱的。
敏捷只是一个代名词而已。
我们可以推演一下敏捷中的实践,它背后隐藏着的实际问题是什么。
1)站立式会议
这个主要是沟通问题,沟通永远不够。在固定的时间,固定的地点,交流固定的主题,就是为了沟通信息,从而事情的推进能够自然,紧凑的方式进行。
2) 编写测试
用什么方式保证你写的代码没问题。答案可能有很多,可以依赖功能测试,依赖Code Review,依赖你的细心。。。。,最终的目的,是使你的代码正确表达它的意思。如何验证它的正确?是“我觉得”,是“应该。。。”,靠主观是不能解决问题的。就像毒奶粉,靠用味觉品尝,靠用眼睛看,这些都不是能确定奶粉是否合格的方式。至于测试先行,还是测试后行,我觉得并不重要了,可以当作哲学问题来讨论,关键是最后你的测试,是否验证你的代码正确的表达了它的意图和逻辑。
3)团队计划会议
如果每个项目经理,都熟悉具体工作任务和优先级,没什么问题。如果不是这样,大部分项目经理独立做出来的计划,是拍脑袋的,包括任务划分和优先级都是欠合理的。 这时,就可以依赖团队的力量,一起做计划,将计划变得更加合理。只有开发人员自己才知道,具体细粒度的开发任务如何安排更加合理。
4) 看板
看板并不是敏捷实践独有的,我在以前的博客说过,越狱中,大家可以看到大量应用看板的实际例子。看板,解决的是公共信息沟通的问题。没有它,很多项目组成员公共的信息,需要通过很多点对点的沟通来弥补。沟通的效率会非常低。我们的群公告也可以起这个作用。
5)用户故事
为什么选择用户故事作为需求描述的一种方式呢? 用户故事是从用户角度,给用户带来的价值角度来描述产品需求的。相比冗长的需求规格,这个是易于理解的。需求描述的最终目的,无非也是,在各个角色当中达成一致的理解。 如果一个功能实现的周期过长,就增加了很多不确定性,所以用户故事要求是小的,很容易实现的。这也就意味着,我在较短的时间内,就可以得到明确的结果。从价值流角度分析,用户故事粒度小,这些价值是持续交付的。 一个功能开发时间越长,在开发这段时间,价值是没有被交付的。
6)持续集成
如果说站立会议,保证team成员之间沟通无偏差。那么持续集成就保证,我们的系统,模块,始终能正确的沟通和表达。如果其中的问题发现的晚,就会导致解决问题的成本高。持续集成,就表明,我们想要的,一直都是OK。消灭问题与萌芽之中。
7)坐在一起
为什么要坐在一起?还是为了沟通,及时沟通,如果信息不一致,可能有同事基于错误的信息,做了错误的工作,白白浪费时间。作为信息民工,我们的工作的输入就是信息,如果输入信息delay(比如等邮件通知,等确认结果),那工作自然要delay,如果输入信息有误,自然会导致工作浪费。信息不仅仅是信息,它起的是控制作用。
这里我就列举了一些,其它的大家自己去思考吧。
总的来说,就是
1. 利用团队的力量来思考,来解决问题。
2. 强调端到端价值的交付
.
3. 强调信息沟通的及时性,一致性和准确性。
忘记敏捷,忘记agile,关注问题,关注细节,关注团队,勤思考,提高工作效率和软件质量的办法总是存在的。
把敏捷实践作为你的工具箱,它不是全部,它不了解你实际的问题,也不知道你将去向何方。
作为代名词,可以继续使用,但是它并不意味着什么,代表着任何你想给它的含义。
分享到:
相关推荐
《敏捷软件测试:测试人员与敏捷团队的实践指南》从测试人员的角度记录了敏捷软件开发迭代的一个完整周期,并解释了敏捷测试的七大关键成功要素。 读者将从《敏捷软件测试:测试人员与敏捷团队的实践指南》中收获 测试...
我们的敏捷之路.pptx
敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发
小学语文反义词敏捷反义词是什么
现在已经有大量的书籍描述敏捷开发是什么或者为什么它能帮助软件项目成功,但很少有哪一本书能把针对开发者、管理者、测试者和客户的信息合并成一个整体,从而使其能够直接应用。, 本书为敏捷的计划、开发、交付和...
《敏捷开发知识体系》面向敏捷实践者学习敏捷知识和敏捷软件开发企业进行敏捷转型的需要,旨在帮助个人更快地掌握敏捷开发知识,帮助企业更好地实施敏捷转型。主要内容包括:敏捷开发的哲学理念、价值观、敏捷开发...
敏捷的反义词是什么.doc
系统的开发基于Ruby On Rails,在项目的开发过程中应用了敏捷开发方法
敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发
敏捷与架构. doc敏捷与架构. doc敏捷与架构. doc敏捷与架构.doc
本文从敏捷方法的定义,提出背景,实施方法等方面对敏捷方法进行描述,并与传统软件工程方法相对比,分析敏捷开发的优劣。通过实际软件开发的案例分析软件生产的价值观,得出敏捷方法在软件开发中的价值。关键词:...
为落实敏捷软件开发在我司的顺利推行,使广大软件开发管理者和开发人员深刻领会敏捷核心理念,熟练掌握敏捷实践方法,从而达到增强应对需求变化的能力、提高产品质量、提升开发效率和缩短交付周期等方面的目标。...
关于敏捷,这个大家百度一下就知道了,我就不废话了。对于初始敏捷的童鞋们可能对 XP、RUP、Scrum 等分不清楚,其实很简单,他们都属于敏捷,只是分别是不同的敏捷方 法而已,这里主要分享下 scrum 的东东
敏捷软件测试
如何取得敏捷方法与规范方法的平衡,这是一个困扰着无数软件从业人员的大问题。本书针对这一现状,直接切入有效的核心概念,为定义平衡的软件开发策略提出了建设性方案。书中陈述了敏捷方法和规范方法各自擅长的领域...
我们两个组 织都认识到,在将产品和可交付成果推向市场时,敏捷方法的发展要求我们需要有 一种通用的语言、开放的思维和灵活运用的愿望。此外,我们两个组织还认识到, 实现成功交付的方法多种多样。目前存在大量...
一般公司引进敏捷开发模式都需要一个大的Backlog(敏捷开发面板),但是如果公司没有这个条件,怎么实现类似敏捷的面板的管理方式呢。 在我的项目中,使用了EXCEL制作了一个电子敏捷开发面板。可以让你很方便的采用...
把自己近十五年的敏捷实践经验,特别是近四年中针对各种敏捷转型企业的咨询和指导工作,并结合旁征博引的方式,从更高的思想层次对敏捷与Scrum多年来的经验和教训进行深入而前面的梳理和总结,最终集大成者便是这本...
敏捷成熟度模型,8个维度5个级别
敏捷项目管理敏捷项目管理敏捷项目管理敏捷项目管理敏捷项目管理敏捷项目管理敏捷项目管理