InfoQ

新闻

实践敏捷很容易:为期两天的“迷你”敏捷项目

作者 乔梁 发布于 2008年4月30日 上午9时18分

社区
Agile
主题
敏捷实施,
故事和案例分析,
交付价值,
客户及需求,
团队协作
标签
案例研究,
最佳实践,
伸缩性敏捷,
自组织团队
最近,Google Group上的AgileChina讨论组异常活跃,讨论内容包括如何开始实施敏捷,实施什么样的敏捷以及如何处理实施过程中面临的各种问题。虽然讨论非常热烈,貌似论战居多数,可供参考案例几乎没有。咖啡屋的鼠标认为“案例才素王道”,而徐毅也提及:
……这也有一些困难。应该很多企业都有保密的需求,很多的信息是不能随意透露的,想要分享我们的案例的话,需要做更多的处理,剔除敏感的信息,还要保证能够体现发现、分析、解决问题的整个思路,不容易。。

那么,案例从哪来呢?十二人组成的敏捷团队在两天内能又做些什么呢?对于这个问题,Thoughtworks首次在北京举办的“Code Jam”活动可以算是一个不错的例子。这次Code Jam只能算一个超小型的敏捷项目,其目标是为乡村教育促进会(一个国际非盈利性组织,致力于通过素质教育改善中国农村地区儿童的生活)开发一个内部资源共享平台,以便分布在三个省份(山西、安徽和山东)的教师可以通过网络分享他们的教学计划和教学方法,互相学习交流。什么是“Code Jam”呢?来自Thoughtworks的咨询师李默如是说:

Code Jam是ThoughtWorks特别的活动之一,在很短的时间内为客户交付可用的软件(或原型),团队经过短期高强度的锻炼,可以对开发过程和开发技巧都做一些反思。

本次项目中,除一名客户以外,其他成员都来自Thoughtworks,共计十三名,其中部分人员并未全程参与。人员组成为四名分析人员(三名BA和一名QA)以及九名开发人员。此项目历时两天半,其中一名BA、一名QA和客户用半天时间一起讨论需求,而此时其他人员完全不知道要做什么。在随后的两天,客户与所有团队成员在一起工作,从零起点开始,共同开发项目,最终由客户对项目进行验收。

作为这个公益项目的客户,乡村教育促进会的IT负责人Steven对项目的进度和结果表示非常满意,他说到:

仅在三天就取得这样的成果,真是让我感觉吃惊……对我来说,这是一个非凡的体验,我不但学到了很多东西,而且结识了很多朋友……

从团队角度来看,团队成员对所用的敏捷软件开发方法都很熟悉,了解每个敏捷实践的意义所在,并认同这些实践。尽管大多数人没在一起工作过,但也可算是磨合过的敏捷团队。而从项目角度来看,客户在与BA和QA共同讨论之前,对项目仅有大致的想法,并没有详细的需求说明,交付时间也仅为两天。

所以根据团队组成及项目的特点,团队决定采用改进后的敏捷开发方法,也应用了诸多的敏捷开发实践。
 

  • 卡片墙:通过最开始那半天的讨论,分析人员与客户一起写下高优先级的用户故事(仅有简单描述和不完整的Acceptance Criteria),并放在墙上。
  • On-site 客户:客户与开发团队在一起,有需求不清等问题可随时讨论,并排定优先级。客户想到需求,可以随时写下故事卡片,放在适当的优先级上。当开发人员正在开发高优先级的故事时,分析人员与客户会详细讨论低优先级的故事,敲定Acceptance Criteria。
  • 测试驱动的开发(TDD):由于是Web应用,而RubyOnRails特供了很好的框架和测试环境,团队决定使用它来做TDD。
  • 站立会议(Standup meeting):由于时间只有两天,所以团队决定每天两次站立会议,增进团队的沟通交流。
  • 回顾会议(Retrospective):用时仅五分钟左右,只能算是迷你回顾会议。团队成员仅把Well done、Can do better以及suggestions写出来,大家通读后确定没有疑问就完成。没有常规的投票和讨论。
  • 结对编程(Pair programming):通过交换Partner来传递代码知识。很多成员在两天内换了三次Partner。
  • 小步快跑:由于项目只有两天,功能交叉较多,所以只有重构和尽快提交代码,才能保证尽早发现冲突和问题。最后,该项目共计有192次checkin。
  • 持续集成:使用CruiseControl.rb做为持续集成工具。频繁的提交势必通过某种自动化的手段来检测结果。
  • Showcase:每天结束前,全部成员与客户坐在一起,做当天的Showcase,分析人员会将那些处于"QA passed"状态的用户故事展示给客户,客户也会试用这些功能。

当然,其中也减少了一些环节。例如:

  • 没有故事的点数评估。由于刚组成团队,大家对团队的整体开发效率没有概念,做评估没有什么宜处,而当得到开发效率时,项目已经结束了。
  • 没有迭代周期。由于时间限制,所以取消了迭代。开发人员只要从高优先级的用户故事开始做起。 

Thoughtworks员工表示,将公布该项目的视频,今后也会继续举行此类活动,并将邀请非Thoughtworks员工参与。关于该项目的情况,您可以参见项目参与者的Blog:冰云DreamheadRicky lui

尽管此项目不同于那种公司间有合同条款的正式项目,但也许并不妨碍它成为实践敏捷、讨论问题、寻找答案的案例。作为InfoQ的热心读者,您对其有什么想法,欢迎参与讨论。

相关赞助商

InfoQ中文站敏捷社区,关注敏捷软件开发和项目管理,通过新闻、深度文章、视频访谈和演讲以及迷你书等为中国技术社区提供一流资讯。

10 条回复

回复

本案广告价值 大于 实际价值 发表人 Charlie Zhang 发表于 2008年4月30日 下午7时0分
Re: 本案广告价值 大于 实际价值 发表人 ozzzzzz liu 发表于 2008年4月30日 下午10时56分
Re: 本案广告价值 大于 实际价值 发表人 Jeff Xiong 发表于 2008年5月1日 上午2时21分
熊节:裤腿追咬者的创举 发表人 Charlie Zhang 发表于 2008年5月1日 上午5时0分
Re: 熊节:裤腿追咬者的创举 发表人 ozzzzzz liu 发表于 2008年5月1日 上午11时58分
Re: 熊节:裤腿追咬者的创举 发表人 Jeff Xiong 发表于 2008年5月1日 下午10时59分
实践远比无依据的讨论重要 发表人 liqun feng 发表于 2008年5月2日 上午9时49分
非常想亲身体验一下现场。。。 发表人 Yi Xu 发表于 2008年5月4日 下午11时56分
Re: 非常想亲身体验一下现场。。。 发表人 qian anchuan 发表于 2008年5月5日 上午10时42分
有对手是好事 发表人 Tobato King 发表于 2008年5月6日 下午9时50分
  1. 返回顶部

    本案广告价值 大于 实际价值

    2008年4月30日 下午7时0分 发表人 Charlie Zhang

    看上去更像为期两天的 XP demo,presentation 或 tutorial,Thoughtworks China 的一次市场推广行动。

    所谓的“实践敏捷很容易”,不如说“做一次 demo (演示、表演)很容易”。

    这种公益性的项目与实际的商业工程项目差距太大,context、forces、risks 等等皆不同,我看除了免费为 Thoughtworks 及其几位员工做一次公益性广告之外,没什么实际的参考价值。

    中西合璧的敏捷 OO 教练 张恂
    www.zhangxun.com

  2. 返回顶部

    Re: 本案广告价值 大于 实际价值

    2008年4月30日 下午10时56分 发表人 ozzzzzz liu

    张教主不也是利用infoq的评论一直在给自己打广告吗?

  3. 返回顶部

    Re: 本案广告价值 大于 实际价值

    2008年5月1日 上午2时21分 发表人 Jeff Xiong

    所谓的“实践敏捷很容易”,不如说“做一次 demo (演示、表演)很容易”。 我看除了免费为 Thoughtworks 及其几位员工做一次公益性广告之外,没什么实际的参考价值。
    既然“很容易”并且又“免费”,那你也来做一个看看吧。
    你不是总在批评谁谁谁只会空谈不会做实事吗?现在有个很容易而且又免费的实事,作为教主的你应该能比别人做得更好才对吧?
    不想做吗?为什么呢?
    因为“很容易”并且又“免费”的事情你也做不了?我认为你不会承认这一点。
    因为这件事情其实并不是那么“很容易”,并不是那么“免费”?如果是这样,麻烦你道个歉,收回你不负责的言论。
    因为这么容易并且免费的事情你不屑于做?很好,很符合你教主的身份,尽管在别人的网站上发几句言看起来更容易而且更免费。

  4. 返回顶部

    熊节:裤腿追咬者的创举

    2008年5月1日 上午5时0分 发表人 Charlie Zhang

    2008年5月1日 上午2时21分 发表人 Jeff Xiong 对 Charlie Zhang 说:

    ... 如果是这样,麻烦你道个歉,收回你不负责的言论 ...
    侮辱自己的批评者为裤腿追咬者、档次最高的裤腿追咬者,这大概是四年前“程序员”名家、大牌熊节(Jeff Xiong,gigix)的首创,好不风光。

    如此虚伪、无耻的政客,还好意思做 Thoughtworks 咨询师?不如自己拿镜子照照,真丢脸!

    档次最高的裤腿追咬者

    http://gigix.blogdriver.com/gigix/199515.html

    所谓“裤腿追咬者”,是指“不以实用或审美为目的,专为驳倒某个特定对手的辩论者”。拥有裤腿追咬者是件值得骄傲的事情,因为裤腿追咬者的逻辑总是“扳倒了xxx就证明我很NB”,既然如此,这个“被扳倒”的对象无疑已经在裤腿追咬者眼中具有崇高地位了。曾经有一次和Jacques聊起,就像胶片和照片的关系一样,裤腿追咬者和搞偶像崇拜的fans其实是同一回事。所以,拥有一位迄今为止档次最高的裤腿追咬者,我的虚荣心得到了极大的满足。

    http://www.iturls.com/~xzhang/reviews/scrafts.htm

    虚荣心满足一下就好。还是Kent Beck那句话:“我要去写程序了。”前一阵没啥好玩的,随手写了点文字;最近又找到了好玩的东东,让这位裤腿追咬者自己玩去吧,不陪他了。

    作者: gigix 2004年06月14日, 星期一 15:30

  5. 返回顶部

    Re: 熊节:裤腿追咬者的创举

    2008年5月1日 上午11时58分 发表人 ozzzzzz liu

    对了这个事情最后的咋不了了之了。该起诉赶快起诉。 然后你们两个都回去收集证据,也好叫我们大家看看究竟是谁先发起人身攻击,又是如何升级,最终又是咋个结局啊。

  6. 返回顶部

    Re: 熊节:裤腿追咬者的创举

    2008年5月1日 下午10时59分 发表人 Jeff Xiong

    张教主倒是挺会给自己找台阶下啊,有本事。 千万别紧张,先把我的话看清楚了再吠不迟。我列了3种可能性,只有可能性2为真时,才请您道歉呢。

    因为这件事情其实并不是那么“很容易”,并不是那么“免费”?如果是这样,麻烦你道个歉,收回你不负责的言论。
    其实我本来以为您会选择可能性3的,谁曾想您这么爽快,自己就先承认了呢? 既然都承认了,那道歉不道歉的其实都是小事,您说是吧。

  7. 返回顶部

    实践远比无依据的讨论重要

    2008年5月2日 上午9时49分 发表人 liqun feng

    很希望在上海能有这样的讨论,一次可实施的实践比纸上谈兵重要,比不想不做重要。如果在上海有这样的活动,希望能参加。

  8. 返回顶部

    非常想亲身体验一下现场。。。

    2008年5月4日 下午11时56分 发表人 Yi Xu

    很羡慕,不知道啥时候也能参加这样的盛会。。

  9. 返回顶部

    Re: 非常想亲身体验一下现场。。。

    2008年5月5日 上午10时42分 发表人 qian anchuan

    我觉得BeiJing Open party可以尝试举行“Code Jam”的活动。有经验的朋友报名参于进来,经验不多的朋友可以做Observer

  10. 返回顶部

    有对手是好事

    2008年5月6日 下午9时50分 发表人 Tobato King

    经常看到 Mr.Zhang 和 Mr.Xiong 互相掐来掐去,其中某些话语也暗藏讥讽和不恰当, 看来有对手也是一件快事,这样才能让自己一直有目标.相信二位迟早有一天会和解吧,不过可能就没意思了.哈哈... 个人非常喜欢这样的活动,成本低,方法学的推广最需要的是切身感受其中的过程,这个过程才是最有价值的. 过程绝对超过了最后整理出来的经验条目和开发成果.因此,很期待视频的放出.

独家内容

Hadoop中的集群配置和使用技巧

本文介绍了Hadoop如何配置分布式框架运行环境,同时特别讲解了其中的一些细节。Hadoop可以单机跑,也可以配置集群跑,这里主要重点说一下集群配置运行的过程。本文是Hadoop入门实践三部曲的第二部。

JavaScript多线程编程简介

虽然有越来越多的网站在采用AJAX技术,但是开发复杂的AJAX应用仍然是个难题。本文探索了如何应用多线程缓解其中一些问题。

Ruby的开放类──或者:怎样避免动态打补丁

Ruby的开放类(Open Classes)功能强大,但很容易被误用。这篇文章关注于怎样减少使用开放类的风险,介绍了一些其他可替代的类似方法,并分析了其他语言如何实现类似的功能。

REST反模式

在本文中,Stefan Tilkov讲解了一些经常出现在自称“符合REST式设计”的应用中的反模式(比如:全部采用GET或POST,忽视缓存及响应代码,误用cookies,忘记超媒体与MIME类型,以及破坏自描述性等),并给出了避免这些反模式的对策。

分布式计算开源框架Hadoop介绍

Hadoop是Apache开源组织的一个分布式计算开源框架,在很多大型网站上都已经得到了应用,如亚马逊、Facebook和Yahoo等等。本文是Hadoop入门实践三部曲的第一部,主要讲述了What和Why的问题。

37 Signals的实用最小主义实践

本文结合37 Signals公司在开发Basecamp等产品时的实践,介绍了实用最小主义开发方法。实践证明,尤其是在开发Web应用时,这一方法非常有效。根据作者的观察,Google现在之所以那么成功,其所遵循的软件开发哲学和最小实用主义非常类似。

与林昊一起探讨OSGi

在今年5月份的网侠大会上,InfoQ中文站有幸与国内OSGi的先锋林昊(BlueDavy)在一起探讨了OSGi的相关话题,包括它的优势、复杂度以及Java下的实现等等。

超越F#基础——异步工作流

Robert Pickering在F#的第三篇文章中,他继续着上次的话题,不过这次他要关注的是异步工作流(Asynchronous Workflows),以及在使用这个特性后获得的性能改善。虽然这篇文章是关于F#的,但是这样的知识对于所有的.NET语言都是适用的。