最近,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:冰云, Dreamhead , Ricky lui 。
尽管此项目不同于那种公司间有合同条款的正式项目,但也许并不妨碍它成为实践敏捷、讨论问题、寻找答案的案例。作为 InfoQ 的热心读者,您对其有什么想法,欢迎参与讨论。
评论