这篇文章介绍一下我进入新公司后,引入测试驱动开发实践的过程,提供思路供大家借鉴。
简单的背景说明:
我被调入了一个新公司,虽然是原公司分化出来的,但对我来说是个全新的环境。团队未引入过任何敏捷实践。
因为意识到TDD的价值,所以我想从这个实践开始。这是个比较难的实践,所以先把目标切小一点,第一阶段先以学习实践为主,期待来日方长。
为什么是学习实践小组的方式?
因为它阻力小、收获大。从事软件研发的人都比较乐于学习,管理层当然也乐见其成;而且学习并不涉及真正的改变,所以抵触情绪很小;另外,团体学习也是一个很好的学习环境,既有压力也更有动力,不同的人之间能相互补足。
下面是过程的具体介绍。
整体的里程碑:
这是一个为期两周的学习实践计划。
下面说说我是怎么促成这次活动的。
一共五个步骤:准备-->授权-->建组-->启动与执行-->总结汇报。
1、准备工作
我研究了一个TDD的课程,做了一个两周的学习计划,确定了要寻找的人员特点(热爱学习)等。这些能让我更好地把控接下来的事,降低风险。
2、获得授权
在正式开始之前,我要先获得管理层的授权并争取最大支持。所以,我与两个二BOSS、一个项目经理沟通,说明了这件事的目的、时间计划。(与谁沟通要看你自己的组织情况,拿到授权和资源即可)
最后管理层不仅授权了活动的启动,还提供了绩效考核的倾斜支持,嗯,这是很大的支持了。
3、组建学习实践小组
拿到授权后,接下来是组建学习小组。项目经理给我推荐了人选,我与每个人进行了一对一交流,说明了活动的目的和安排,由其自行决定是否参与并给出了考虑时间。
在预定大家答复的当天有个小插曲,原定的沟通时间被其它事项挤没了。于是我紧急邀请大家一起午餐,并于餐后散步的同时收集大家意见。这次午餐会的氛围很好,每个人也更愿意敞开沟通,是神来之笔,可以多考虑使用这种非正式的沟通方式。
4、活动启动与计划执行
小组共吸纳了7个人(最后还加入了一个新员工),接下来就是正式的启动这次学习活动。
1)小的启动会。
召集小组所有人一起,做了一个小的启动会。管理层也受邀参加,表达了对本次活动的重视,进行了口头鼓舞,这可以说是在精神层面又提供了一层支持。
2)书面通知。
会后我发了正式的邮件,书面通知大家学习的目标、周期安排。
3)自学及每周两次汇报。
启动会后大家各自找渠道学习(因为课程需要付费,所以有的人选择自行找资料学习)。
学习汇报会每周两次,时间为下班后一小时。在汇报会中,我的主要工作是组织、引导和记录:
1、组织汇报会,安排好时间、地点;
2、引导大家梳理已经取得的进展;
3、引导大家明确下次学习的方向和目标。
每次汇报会后,我会整理书面记录,通报给管理层和小组内所有成员,这个步骤能让管理层及时了解小组进展,也让小组成员看到自己的学习成果。
第一次,大家还没太上道;第二次,已经明显上道,整理出了很多有用的知识并进行了实际项目的实践;第三次能进一步把TDD应用于实际项目中了。
5、总结汇报,确定下一步计划
最后是总结和汇报,主要是给管理层汇报,向其展示学习成果,让他们知道这件事要结束了,以及下一步计划是什么。
汇报会以回顾本次活动+编程演示组成。我整理了PPT,组织了汇报会。会议尾声时,管理层还对TDD的作用进行了简单的民意调查。
通过调查来看,大家对TDD的好处很认可,这个结论是每个人经过学习体验后由感而发的,真让人高兴。这次学习旅程在每个人心里种下了一棵TDD的种子,待时而发。
通过组织这次TDD学习实践活动,也让管理层认识了TDD的价值,并安排了技术经理开展下一步推广计划。
到这里,TDD推广取得了一阶段的成功,不过距离全面的落地,还有一段旅程,且听后话。
下面是一些关键点总结:
1、以学习来推进TDD实践。
这是个比较可行的做法。阻力小、收效大。
2、管理层的支持必不可少。
精神和物质层面最好都要争取到。
3、短周期的学习。
有利于人们坚持下去。
4、团体学习创造了好的学习环境。
既有压力又能相互支持。
5、成果展示会让管理层和员工都受益。
员工们展现了自己的价值,管理层看到了成果。
6、有一两个理解能力强、热爱学习的人非常有帮助。
这样的小伙伴能快速理解新技术,归纳总结,并应用到实际项目中,这对团队学习很有帮助。
7、及时的书面记录并分发。
抓拍一些现场图片,放进每次的记录里面,宣传效果很好。