敏捷开发的常见误区之二项目管理者联盟
11. 误区:为了敏捷而敏捷项目管理者联盟
“嗯,敏捷这么好,我们也敏捷吧”,可能很多人会有这种想法。忘了以前是在哪儿看的大师采访录:PgMp.mypm.net
Q:“我们现有的过程很好,不知道怎么用敏捷改进?”项目管理者联盟
A:“既然很好,那就不要用敏捷”。项目管理者联盟
做什么事情都要有明确目标的,敏捷虽好,得看你需不需要,能不能解决你现在头疼的问题,如果不是,那就不要给自己找麻烦了。项目管理者联盟
12. 误区:传统开发能随时转变成敏捷开发项目管理者联盟
敏捷开发过于诱人,很容易让深受传统软件开发思想折磨的开发人员感觉敏捷开发就是灵丹妙药。要想转变,首先需要从思想上正确认识敏捷开发的含义,了解它能解决什么问题、会带来什么新的问题、对现有软件/硬件资源有什么要求等。项目管理者联盟
例如在原先采用CMM的团队中,想利用敏捷开发简化冗余的文档、降低沟通成本,那么敏捷开发确实能在一定程度上缓解这些问题,但也会造成内部文档缺失、沟通不够深入的问题,在应用敏捷开发之前需要先确定适合团队的新的文档流程(代码注释能够自动/半自动的变成团队需要的文档么?),并且确定沟通的一些原则(比如,对于一些重要的沟通,是否还是用邮件来进行,不要过于“敏捷”?)。项目管理者联盟
有趣的是,有可能在回答这几个问题之后会发现,敏捷开发并不能解决项目中遇到的问题,反倒是其他方面出了问题。项目管理者联盟
举例来说。如果此前的开发方法是简单的目标管理,遇到的问题是项目进度不可控、开发+测试的周期较长、不能及时响应需求变化,那么敏捷开发能解决的是快速响应需求变化,对项目进度和开发测试周期帮助不大(没有一种流程能够承诺改善项目的开发效率!),但前提是开发人员必须懂得怎样正确的去迭代开发,并且必须认识到一次迭代的结束是以完成测试为标准的。转自项目管理者联盟
在这个例子中可以看到,敏捷开发能带来的好处非常有局限性,如果开发人员达不到一定的层次是很难受益的。与其号召使用敏捷开发,不如想想如何增加执行力,以及找到周期偏长的根本原因(是因为设计不充分而返工?还是因为没有可以快速回归的测试用例?等等)。
13. 误区:敏捷是CMM的反义词项目管理者联盟
CMM只是一种衡量软件成熟度的标准,并非过程,和敏捷不是一类概念。如果要给敏捷找一个反义词,传统的瀑布式开发应该更合适一些。项目管理者联盟
14. 误区:敏捷开发 == 极限编程/Scrum/…项目经理圈子
敏捷开发是一种方法论,只是一些基本原则的集合,并非具体流程。项目管理者联盟
极限编程、Scrum等流程是具体的实施方法,它们都声称符合敏捷开发的思想,但执行起来是否真的“敏捷”,还得看参与者究竟思想上是否真的接受敏捷开发的原理。blog.mypm.net
如果把结对编程、daily scrum当做是敏捷开发的表现,那更是本末倒置,可悲的是,不少人还真是这么认为的。club.mypm.net
15. 误区:迭代就是敏捷,UP属于敏捷。项目经理圈子
UP是重型的过程,虽然引入了迭代,但是其原则和价值观与敏捷是不同的。敏捷注重的是反馈,迭代周期尽量的短,重在客户的参与,通过客户的参与,获取持续的反馈,不断调整使整个项目走在正确的方向上。同时也给客户一个感受和思考的机会,因为对于大多数客户而言,目标是明确的(不排除有些客户目标也不明确),但是具体怎么做,开始时是没有想法的,只有看到具体的东西的时候,才知道“噢,原来可以这样,那我想把这里调整一下”。training.mypm.net
16. 误区:重做就是重构项目管理者联盟
重做不等于重构,很多场合这两个概念是混淆的。但是在敏捷中,重构的一个特征是必须可控的。当对系统结构进行大的调整时,如果没有测试驱动辅助的话,那么可控性就会很差,这不能叫做重构。项目管理者联盟
17. 误区:版本更新很快,甚至每天都有新版本。项目管理者联盟
每天一个新版本。这种情况,最大可能是产品没有经过严格的测试,根本不稳定,就直接放出来,结果在实际使用中bug漫天飞,开发人员不断地推出版本来补窟窿。这种情况,别说商用版本,用户无法接受如此频繁的升级(升级毕竟耗时麻烦,而且流量是用户自己掏的钱),即便是内测版本,也绝不应该如此频繁和随意。PgMp.mypm.net
内测版本或试用版本也是经过开发人员验证和测试后放出来,通过实际使用情况,收集用户对功能和操作中的意见,并对实际使用中测试案例无法覆盖的可能异常情况进行验证。不是发现一个bug,就改一个,发布一个,而是收集反馈,统一修订后,再释放新版本(而这,通常时间是按周来计算的),除非这个bug是个极其严重,必须马上更正。项目管理者联盟
|