写点什么

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

  • 2008-04-30
  • 本文字数:1900 字

    阅读完需:约 6 分钟

最近,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 的热心读者,您对其有什么想法,欢迎参与讨论。

2008-04-30 09:181193
用户头像

发布了 100 篇内容, 共 24.5 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

前端必读2.0:如何在React 中使用SpreadJS导入和导出 Excel 文件

葡萄城技术团队

前端 Excel 框架

大数据平台 CDP 中如何配置 hive 作业的 YARN 队列以确保SLA?

明哥的IT随笔

hadoop spark hive YARN CDP

什么是企业知识管理体系?它的基本原则是什么?我们又该怎样做?

Baklib

知识管理 知识 知识管理体系

好家伙!全网开源对标P5~P7程序员技术成长路线,阿里这次是真卷

程序员小毕

Java 程序员 面试 程序人生 架构师

如何根治 Script Error.

阿里巴巴终端技术

前端 终端 Script

Chrome操作指南——入门篇(九)调试小技巧

Augus

Chrome开发者工具 9月月更

工作一年之后,这6个技术栈可以让你平均涨薪50%(涨薪篇)

Java-fenn

Java 编程 程序员 面试 java面试

数据中台必备的4个核心能力

阿泽🧸

数据中台 9月月更

计算机上的高性能计算,你了解多少?

Finovy Cloud

高性能计算

Databend 参加 PingCAP 用户峰会 2022

Databend

数据仓库 开源社区 云平台

一刀999?怎样让你的 iPhone 手游也拥有开挂般的体验

淋雨

imazing 存档 元气骑士

Java面试笔试题大汇总一(最全+详细答案)

小小怪下士

大厂面试 java\ 面试真题 Java 面试题

Mybatis工作流程及其原理与解析

小小怪下士

Java 程序员 架构 mybatis

中小企业数字化转型需求增加,如何才能做好?先从在线协作工具开始!

Baklib

数字化转型 企业 在线协作文档 在线协作

用多线程实现归并排序

聚变

归并排序 Lambda函数

两年工作经验,三面拼多多,最终获得offer!(面经总结)

Java-fenn

Java 编程 程序员 面试 java面试

2022前端面试遇到的手写题总结

helloworld1024fd

JavaScript 前端

帮助中心就是在线版的产品使用说明书?并非如此!

Baklib

产品 产品经理 帮助中心 在线编辑 产品说明书

RabbitMQ的深入理解和最简单的用途说明

小小怪下士

Java 程序员 架构 RabbitMQ

阿里巴巴高并发架构到底多牛逼?是如何抗住淘宝双11亿级并发量?

Java-fenn

Java 编程 程序员 面试

行业规模将达百亿,低代码是 “银弹” 还是 “鸡肋”?

飞算JavaAI开发助手

阿里云物联网平台架构——业务架构类

阿里云AIoT

大数据 物联网平台 IoT 平台架构 设备管理

如何使用禅道集成钉钉

禅道项目管理

钉钉 项目管理工具 禅道

MASA MAUI Plugin 安卓蓝牙低功耗(二)蓝牙通讯

MASA技术团队

blazor MASA MAUI Xamarin MASA Blazor

百亿市场遭「卡脖子」,国产工业软件兴起正当时

ToB行业头条

Chrome操作指南——入门篇(八)breakpoint

Augus

Chrome开发者工具 9月月更

MobTech 短信验证 Unity插件

MobTech袤博科技

ios android 短信验证

【喜讯】亚信安慧通过CMMI5级认证

亚信AntDB数据库

AntDB AntDB数据库

什么是企业帮助中心?为什么要花钱建立?看这篇文章你就懂了!

Baklib

SaaS 企业 帮助中心 在线编辑

史上最详细的一线大厂Mysql面试题详解

小小怪下士

MySQL 面试 java面试

名列前茅!亚信科技AntDB入围工信部电信行业数据库场景榜单

亚信AntDB数据库

AntDB AntDB数据库

实践敏捷很容易:为期两天的“迷你”敏捷项目_研发效能_乔梁_InfoQ精选文章