剖析短迭代
敏捷教练Dave Nicolette提出:我们应该如何设定迭代长度?是要根据发布周期的时间么?使用短迭代又有哪些好处?
作者 Mark Levison译者 郑柯 发布于 2008年7月13日 上午12时6分
作为敏捷专家,我们热衷于谈论在项目上取得的成就,却很难做到对失败直言不讳。Robin Dymond在“一个失败的敏捷项目”这篇文章中谈到了有关失败的话题。
Robin的文章中谈到一个替换内部现有流程的例子,从任何角度看这个项目都应该成功:
第二个迭代结束时,事情开始变坏。产品负责人怀疑COTS工具能否完成任务。在第三次迭代过程中,业务用户试用软件的反馈普遍都是负面的。因为不具备长远的眼光,产品负责人被撤销了。Elizabeth Hendrickson曾说过“在第三次迭代中,如果所有用户的反馈都是负面的,应该取消这个项目或者重新仔细规划。”
Rpbin认为,在项目开始之前,这次失败就已埋下了伏笔:
立项:项目由IT总监和运营总监一起推动。现有的业务并没有成为驱动这个项目的动力,其流程也不需要进行改进。
平台选择:选择新平台的驱动力在于,大家确信基础设施需要从原有的定制系统转向商用软件。……应用系统在项目开始之前就已经选定了,没有人试过它是否能满足需求。而且,团队开始使用这个应用系统时,才发现它的能力非常有限,业务用户们使用起来也非常痛苦。而总监拒绝承认这些数据。
Allan Shalloway认为这个项目的问题在于:“没有真正的用户认可,只是业务负责人说要这么做”。在Allan和团队建议取消这个项目数月之后,他谈到这个项目的失败原因:
根据我的经验,许多Scrum项目并没有真正按照Scrum的要求实施。每当我们去帮助或训练这些团队时,他们都会说自己已经有多少个月的Scrum实施经验。一旦问到他们真正在做什么,就会发现这些并不符合Scrum的要求。
此后Allan指出,他看到很多团队都对Scrum的原则缺乏清晰的理解:
最后Robin描述了他登山的经验,他谈到加拿大的阿尔卑斯俱乐部有一本刊物——《阿尔卑斯意外事故月刊》。这本杂志记录了登山发生的意外事故,可以让其他的登山者们认识到什么地方出了问题,如何摆脱危险,以及事故发生的经过。Robin认为我们也需要这样的月刊:“每天都有数十亿的资金耗在这上面,跟其它行业相比,软件项目存在惊人的高失败率,难道我们不应该正式地记录和分析这些失败吗?”
查看英文原文:Failures in Agile DevelomentInfoQ的读者Joakim Holmbäck在评论中认为:
识别项目中的失败之处并从中吸取教训,是改进流程的关键。我也同意我们应该(更多地)讨论失败的敏捷项目,但是文中的例子并不恰当。
文中的敏捷过程显然起到了作用。在第一个迭代中,COTS软件就被证明是不合格的了,产品负责人被替换也证明了这一点。项目失败的唯一原因,是管理层不能听从项目团队的建议。
不管使用什么样的项目管理技术,发生类似的事情总是会失败的。
读者Julian Browne提到:
在深水潜水社区中,有一个常用的时间:任何发生的小事故都会被公布出来,防止再度发生。British Sub Aqua Club会发布年度报告,供大家认真研读。
不考虑故事中的敏捷因素,我觉得其中缺少了解决问题——而不是实施解决方案——的上佳实践,记录并共享失败项目的教训就是其中之一。
不幸的是,很多(绝大多数)失败的信息都被限制在商业组织之内,而且这样的信息很少能被泄露出来。我们只能自己进行项目实施后的复查,这个主意不错,但是通常都执行不好。
针对文末的问题,Mark Levison公布说他开始准备收集整理《敏捷与Scrum失败月刊》,并希望大家提供素材,网址是:http://www.notesfromatooluser.com/2008/07/journal-of-agilescrum-failure.html。针对Joakim的说法,他认为:
还能有什么其他失败的原因么?Jerry Weinberg说过:“总是人的问题。”我想所有失败的项目到最后都能归结到人和沟通的问题上去。我倒想看看有没有能够证明我错误的例子。
针对Julian的问题,Mark认为,既然现在市场上有如此多的教练和培训师,从他们那里一定能够得到很多失败的例子。
而InfoQ资深编辑Deborah Hartmann对Mark的做法表示赞赏,同时她也向读者征求失败的案例,供未来的“理解”练习和研究使用,其网址为http://www.m3p.co.uk/blog/2008/04/14/what-is-going-on-out-there-a-narrative-inquiry-project/。
面对Mark的质疑,读者Joakim这样回应:
虽然总是可以归结到人的问题上,Scrum项目的任务失败还是会有N多种原因。上文中提到的失败,主要是由于管理问题:产品负责人被去掉了,而且团队的看法也没有人注意。(一个敏捷项目具备成功的所有要素,还是会失败;这看起来还是挺有意思的。)
Scrum团队失败的其他原因:
-依赖其他Scrum团队(scrum构成的scrum不能正常运作,每个scrum的日程不同)
-“完成”的定义没有正确使用
-故事太大太长
-团队不具备完成手上任务的技术能力
-团队的故事组织有问题,每个成员处理自己的故事,但是故事之间互相依赖
-团队不愿意做正确的回顾活动,因此很难进行改进
项目管理的本质就是避免做错误的事情,可见《敏捷与Scrum失败月刊》之必要性
项目管理的本质难道就只是避免做错误的事情么?
正与文中所提到的,所有失败的原因都可以归结为人和沟通的问题,成功的项目在这两方面必然是下足了功夫,不成功的项目总会以不同理由来回避这两方面的问题。需求总是在变的,人也是在变的,沟通的方式在发生变化,管理的实质也许只在于用适当的方式,让适当的人,做适当的事,得到适当的结果。
对于本质的简单认识并不难,难点在于如何具体解决一个又一个问题。做到adaptive才是王道。。。。。。 在理解原则的基础上,只有不断实践,并持续改进,才能做到真正的敏捷
在解决问题之前,要先能认识到问题。并能处理好首要矛盾和次要矛盾之间的关系。
本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。
在这篇文章里,Bryon Jacob和Chris Berry将和我们继续探讨AtomServer,它是基于Apache Abdera的完整Atom存储实现。作者还创建了几个Atompub规范扩展,其中包括自动标记、批处理和Feeds聚合。
InfoQ中文站的电子杂志《架构师》试刊第二期出版了!相比于上期,我们在内容的选择安排和版式上都根据读者的意见重新做了修正。“细节决定成败”,我们希望基于InfoQ中文站的专业内容,《架构师》能逐渐成为大家喜欢的电子刊物!
在本文中,Steven Haines探讨了Web应用性能调优问题。该领域过去更像是一门艺术而不是一门科学。他提出了一种称为基于等待调优的方法,使整个调优过程更加可度量,也因此更具科学性。
通常来说,改变技术路线时最艰难的部分是辨别语言语法之间的不同。这篇文章就为Java开发者提供了一份如何转向Flex基础语言ActionScript的指南。
本视频主要以财帮子为例,介绍了如何创建一个PV为百万级的Rails应用。其中包括:Rails应用的服务器架构、Rails Cache的优化、负载均衡的处理、Web服务器的调试、分布式解决方案、Open API的设计等等。
InfoQ首席架构师Alexandru Popescu在采访中谈论了InfoQ架构、Webwork与DWR、Hibernate与JCR、Hibernate可扩展性、最新的InfoQ视频流系统和InfoQ的未来规划。
5 条回复
回复