3.5 故事分享:Rational中国敏捷开发者的一天

这是一名普通开发人员一天的工作和生活,它真实地反映了团队使用了敏捷研发方法后可持续化的协同开发过程。

·主角登场

我是华英雄,IBM开发中心某著名产品的非著名开发工程师,早上7:30送孩子去幼儿园,8:00和太太在家自制Home早餐,9:00电话开机,10:00坐在座位上打开电脑。

·紧急通知

10:00,第一件事查邮件(见图3-32),发现第一封紧急的邮件来自系统通知,是美国团队昨晚交付代码后,CI系统自动编译和制作build的过程出错了。

00053.jpeg

图3-32 华英雄打开邮箱发现来自RTC的紧急邮件

·跨时区协同

现在是美国时间22:00,立刻打开Sametime,还好Jared在线,让我跟他沟通下,嗯很好,Jared说这个问题他也收到了系统通知,正在处理,应该很快解决……30分钟以后,Jared告知编译问题解决,简单道别后Jared便离开休息了。

实际上,在此之前,也就是在华英雄还在家中的7:00,自动化部署和编译、自动化测试的持续化集成系统已经在运行了(见图3-33)。

·永不疲倦的CI系统

00056.jpeg

图3-33 CI系统可以确保自动化构建、编译和发布

·Todo总会有“人”提醒

10:15,在Jared解决构建问题时,发现有一个代码审核工作项需要我完成,这个工作项的描述里提到了我,需要我的响应。还好都不紧急,让我开完例会再说。还有一个测试用例设计的任务需要我完成,测试大使(testmister)需要在迭代最后一个星期确保我在RQM里为新功能写好测试流程和测试点。这个没问题,让我在RTC的工作项里建立一个测试用例设计的任务,然后设一个期限,这样就能够收到系统的邮件提醒,不会因为错过时间而耽误迭代的测试工作了。

·制定计划

我们鼓励开发人员自己选择工作项,并且制定迭代计划,而一开始我们一起制订了版本发布计划(Release Plan),这和个人的迭代计划有很大区别。版本发布计划相对高级、抽象,而迭代计划(Iteration Plan)则非常具体、详细(见图3-34)。

00059.jpeg

图3-34 版本发布计划和迭代计划

·效率的会议

10:30,小组开了个本地团队的Scrum例会,大家分别分享了几个主要问题:你都做了什么,你将要做什么,你现在遇到了什么问题。轮到我了,我告知团队负责人:“我今早和Jared发现代码交付出了问题,Jared刚解决,大家可以放心地接受美国团队的代码提交;我还要做一个同事的代码审核,以及回复一个工作项关于需求的讨论;剩下的时间我都会集中在Multi-template editing的工作项上,这是个很重要的工作项,目前有个刚生成的子工作项记录了关于数据源view与Editorview的不确定问题,我想在开发核心代码的同时和架构师Allan于今晚继续讨论。另外、这周我是Jazz论坛的新闻大使(Newsmister),我今天将花两个时段去回复客户的问题。最后,RTC刚刚发布一个补丁,但是我不确定如何下载和安装,这个可能会花费更多的时间。”(见图3-35)团队负责人马上回复:“华英雄,我希望你能更好地利用自己的时间,我会和服务部门的Terry了解下正确的升级步骤和规则,我将把这个问题记录在我们的问题列表里,希望明天能够得到满意答案并尽快升级成功。”

10:45,散会,回到座位上打开需要我回复的工作项,写回复,因为是回给美国人,不在同一时区,所以尽可能地把我的想法写得详细些,希望尽快完成讨论,达成一致(见图3-36)。

·只做最需要做的审核

11:00,开始代码审核,我打开团队负责人放在RTC仪表盘(Dashiboard)上的代码审核检查条例参照表,用RSAR和RTC的工具联合做了静态扫描,嗯,没有问题,再打开代码视图,逻辑正确,判断条件比较全面,目前没有发现什么问题,好,我给他批准通过(见图3-37)。

00062.jpeg

图3-35 典型版本发布计划视图:RTC的发布计划

不一会儿,同事峰从座位上挪过来,表示已经收到系统通知,他刚刚做了代码提交。

·成为新闻大使

11:30,打开Jazz论坛,喔,有三个客户给我们发了问题,让我看看,第一二个问题很好回答,让我来回复一下……第三个有点难度,让我问问团队负责人有什么好主意。5分钟后,没有答案,看上去不是RTC的问题,倒像是RPE的问题,让我发给Alex,他是RPE开发经理,请他帮我回复,好,邮件发出去了(见图3-38)。

00065.jpeg

图3-36 协作平台上的异步沟通

00069.jpeg

图3-37 使用协作平台工具辅助代码审核

·午休

12:00,午餐。

13:00,重新回到座位上。

·开始代码工作

13:10,来杯台湾的蓝山咖啡,放松放松,嗯,开始代码了。

00044.jpeg

图3-38 RMC下的Code Review工作流展示

2个多小时过去了,现在是15:30……进展不错,除了Editor和Datasoruceview还没有完成,基本所有的属性视图、编辑视图、工具箱视图都可以通信了,加载/保存也都能够正常工作。再运行一次单元测试,不错,所有脚本都返回正确,再局部使用RSAR扫描代码,很好,没有新增加警告或者异常,我提交代码吧。(需要补充说明,持续化集成工具将自动于19:00开始集成代码生成新的安装包,并自动开始更全面的代码级安全、版本控制、静态分析等扫描,自动化开始Build Verification Test并上传测试结果。)

·更新工作进展

16:00,休息一下,顺便在RTC的Multi-template描述中记录今天做的工作,将工作时间减去3小时并记录在RTC剩余时间项上。

·学习和成长

16:10,我决定去师傅Gary那里走一走,看看能否向他了解一些有关GEF、GMF技术的重要细节,以免将来在进一步开发中出现纰漏,顺便也要请教下其他几个小问题。

·突然增加的会议日程

16:30,我回到座位上,倒了一大杯水,一边喝水,一边欣赏窗外的风景。这时团队负责人线上找我,问我是否有时间和他一起参加独立测试团队的系统测试用例审阅,我同意了。(全团队概念下的开发人员不仅仅关注自己的工作,和测试人员一样,他们是一个团队,关注的是让产品更快更好地进入市场。)

17:30,回到座位上,收到测试部门的一封感谢信,心情很好。我在RTC里测试用例的任务下加入了一项“审阅系统测试部门测试用例”的子任务,然后标记为“完成”。

·社团工作

此时,又收到了Elizabeth全球敏捷社区负责人的一封邀请函,邀请我参与9月的一个号称24小时的敏捷大会评委组,我兴致勃勃地回复Elizabeth,表示对此次大会一定竭尽全力。

·下半部新闻工作

17:40,我再次打开Jazz论坛的主页,又有一个客户留言咨询工具与RRC的整合方法,这个问题再熟悉不过了,我即刻回答。这个时候,也收到了Alex更新论坛的消息,他已经帮我做了回复,道过谢,我起身准备离开公司。

·返家

19:00,到家时,父母已经准备好了可口的饭菜,一起享用美好的晚餐。之后,陪着孩子读书、弹琴、拼拼图。呵呵,每一分钟都是那么开心。最后给孩子洗个澡,准备让孩子休息。

·跨时区的联结

22:00,孩子应该睡觉了。孩子妈妈哄着孩子上床。我,华英雄,还是回到书房,打开电脑做今天要做的最后一件事情,与架构师讨论一个问题。这时候Allan已经在线上了,我们就编辑视图的不确定问题进一步讨论……

·一天的完结

23:00,关机,休息!