BOSCO 系统是一个在线品牌
管理系统,项目客户是一家跨国酒店集团,旗下拥有多个世界 著名的酒店品牌。BOSCO 系统将服务标准化、标准符合度审 查、改进流程管理等酒店品牌 管理的工作内容整合到一个信息系统中,来提高相关人员的工作效率。目前 BOSCO 系统已 经被全球十个酒店品牌、超过 1000 家 酒店使用,用户超过 8000 人。 BOSCO 系统的开发基于 Ruby On Rails,在项目的开发过程中应用了敏捷开发方法。在开 发此系统的 8 个月中,经历了 15 个迭代和 3 次发布。通过这种与客户紧密合作的工作方式 我们按时交 付了系统,并得到了客户的高度认可。笔者作为开发团队的一员,从开发者的 角度对基于 Ruby On Rails 的敏捷开发实践总结出一些心得体会, 其中有成功的经验, 也有 失败的教训,愿与敏捷开发爱好者分享。 在我们的系统中,有一个有趣的类,叫做 TimeMachine,用于修改 UAT 服务器的系统时间。 但现在,让它带我们穿梭时空吧。 TimeMachine.go_to("2008-04-15") 半路接手——关键字:Knowledge Transfer,结对编程 关键字: 半路接手 关键字 , 2008 年 4 月,BOSCO 系统漂洋过海来到中国。此时,它已经在美国经过了 3 个月的开发, 且完成了第一次发布。现在要开始它的移植过程(从美国团队的大脑移植到 中国团队的大 脑)。给我们的资源并不多,只有 3 个项目原有工作人员:一个 BA(业务分析师),两个 De v(开发人员)。但时间却相当有限:一个月。 虽 然 BOSCO 系统的开发时间并不长,但 Rails 强大的表现力使系统已经足够庞大,我们也 担忧 Knowledge Transfer 能否在约定的时间内完成。而且中国的开发团队中,真正有 Rail s 开发经验的只有一人。如何在这么短的时间内,掌握这么庞大的系统,成了 摆在眼前的 挑战。 很多遇到过此种情况的开发人员,都不会对以下几种经历感到陌生: ● 阅读大量关于系统原理和项目架构的
文档,但它们并不能直观、准确地反应项目情况。 ● 参加各种标榜着“Knowledge Transfer”且耗时长久的会议,但收益甚少。 ● 独自面对
系统时不知从何下手,不断地寻求原有开发人员的帮助。 ● 由于不熟悉系统造成在开发过程中不断犯错,(
网学)贡献了很多“垃圾”代码,并影响了系统开 发进度。 其实对于开发人员而言,掌握一个项目最重要的是提升对项目本身的“熟悉度”。此熟悉度代 表对陌生的技术知识、代码的编写风格、开发的习惯、程序的架构、环境的搭建等等的掌握 和了解。而结对编程是快速掌握这些知识技能的秘诀,还是拿事实来说话吧。
两个星期之后,先行和两个美国 Dev 结对的同事已经能够带新人了,而且开发速度
不亚于 两个美国 Dev。短短两个礼拜,中国团队对项目的整体架构,不说了然于心,也是熟门熟 路;对于一些 story,也能得心应手开始实现。这是我们自己也预想不到的速度。 之 所以能在如此短的时间内掌握项目,就是拜“结对编程”所带来的好处所赐。有人会说, 结对编程到底有什么魔法?其实没有魔法,它只是简单实践了很多人都懂得 的道理:学习 一件东西最快速的手段就是动手去做。而结对编程,不仅能让你有立即动手去做的机会,而 且边上还有个让你观察学习、给你指导的老师。这是我对结 对编程的初次体验,让我非常 兴奋。还记得一个朋友给我电话告诉我“项目中的新人不能快速掌握知识”时,我告诉他:不 要犹豫了,结对编程吧。我相信,一旦你 开始尝试,你就不愿意停止。 TimeMachine.go_to("2008-05-15") 加速前进——关键字:最佳实践 关键字: 加速前进 关键字 随 着 Knowledge Transfer 期满、美国同事离去,客户一度很担心中国团队能否掌控项目, 能否保持开发速度。但在快速接手项目之后,项目开发随即进入了加速通道。在完 全接手 项目的第一个迭代之后,中国团队已