关闭

微培训在敏捷软件开发中的应用

113人阅读 评论(0) 收藏 举报
分类:

【摘要】

随着我司敏捷软件开发的逐步推行,团队拥有知识变得深入人心。虽然结对编程是比较有效的实践手段,自发的结对很难做到。培训仍然不失为一种有效的方式。通过传统的每周一次,一次2小时的培训方式进行培训,很难做到知识的快速传递。本文提出采用微培训的方式,化整为零,可以达到比较好的效果。

【关键词】

敏捷 微培训

1、背景

随着我司敏捷软件开发的逐步推行,敏捷的各种实践都快速得到推进。在众多实践中,集体代码所有权是比较难以实施的一个。从我司现状来看,绝大多数的团队,仍然倾向于专人专事,谁写了哪个模块,谁就需要一直负责到版本验收测试通过,甚至是仍然要维护一个模块,直到该产品生命周期结束。这种知识的局部分割,对自组织团队的形成造成了一定障碍。为了解决知识的共享和传递,敏捷组织一般会采取结对编程。但从实际项目的运作来看,结对也是非常难的技术实践之一。结对的真正实施不仅取决于团队文化的构建,还要克服结对者的心理障碍,而且还需要面对来自项目进度的巨大压力。因此,知识传递的首要选择手段,在我司一般都是通过传统培训来完成的。一般是以科室为粒度,在科室周例会上进行部分的培训;也有在项目例会上以代码走查等形式展开。但这种培训的时间一般都比较长,围绕的主题比较大,周期也比较长,需要做大量的前期准备,培训的效果也难以保证。

2、解决思路

为了解决上述问题,笔者提出采用微培训方式,进行知识和技能的传递。

所谓的微培训,就是以团队中的每个员工为核心,构建开放式的微环境,向团队中成员进行微知识和微技能的传递。通过层层传递和放大,形成培训的“辐射效应”。

在形式上,“微培训”以“小精灵”的模式开展。

1)“小”。即以版本组为单位,在白板前,以口述笔写方式完成培训。

2)“精”。即以15-20分钟为粒度、主题单一精简,重点突出核心内容。

3)“灵”。即根据项目实际状况,灵活安排时间、地点、主讲人、主题。

具体形式如下:

团队约定培训时长。一般以15分钟到20分钟粒度进行。

团队约定正常的培训时间。一般可安排在午饭前、下班前。这样的时间一方面可以充分利用效率不高的时间段,一方面因为吃饭及班车原因,可以反过来督促对时间进行控制。

团队约定讲师的顺序。一般的敏捷团队都是5人及以下,正好可以安排每天一人。多余5人的,可以视情况进行团队分割,或者以人数为周期进行安排。

主讲者自行选题。选题的原则是,结合项目实际,可以是在项目中运用的新技术,可以是一段代码的设计思路,可以是一个小技巧。以10分钟能够讲清楚为原则。

举行培训。一般建议在版本的白板前进行,通过口述笔写方式进行面对面的培训。不建议通过PPT等复杂方式。

站立式讲解。团队成员聚集在白板前进行培训,不允许坐在座位上。

主讲者10分钟讲述,团队5分钟简单讨论。

主讲者更新培训日志,记录培训内容,以及口述无法表达的代码片段等。培训日志入SVN。

培训日志可以在不同的团队间进行共享。

通过这种化整为零的方式,可以方便的在团队中进行微知识微技能的传递,积少成多。这不仅对团队知识技能提升有帮助,还有利于形成良好的团队氛围,形成团队的凝聚力和亚文化。从长期来看,还有利于自组织团队的逐步形成。

3、实践情况

笔者在网优工具部两个项目中进行了实践。

在网优工具部Netmax-WLAN项目中实施了Code MicroView。

在笔者离开此项目前,总共进行了4次。主题分别为Test Bus,MVC,MarkupXML、Authentication design。

主题均是围绕项目的实际代码进行提炼。Test Bus主要讲解如何实现界面和逻辑的分离,提升界面的可测试性。MVC是NOP平台中的关键技术之一。MarkupXML是一个XML的解析引擎,用来对XML文件进行快速读取和解析。比较有趣的是Authentication design,讲解者讲述了自己鉴权模块的设计思路,经过大家讨论后,发现了设计的重大缺陷,大家给出了采用State模式进行鉴权状态控制,以能够解决WLAN大并发鉴权的实际场景。

Netmax-WLAN项目采取的是微培训的标准方式。以15分钟为粒度,主题自选,轮流讲解。时间安排在每天午饭前,遇异常顺延。

在网优工具部Netmax-GU项目中实施了Beans。

笔者在担任Netmax-GU BA(业务分析师)Leader时,BA团队中的成员,有的以前没有从事过Netmax相关工作,有的虽然参加过,但仅仅参加了GSM或者UMTS单一制式,所以在进行业务分析时,会遇到对现有系统的算法、架构、代码理解不足的障碍。

为了能够尽快在团队中传递这些知识,就需要进行一定的培训。采用传统方式已经不适合,因为Netmax-GU的功能非常多,全部培训成本太高。

为此,笔者和部门的敏捷教练,组织了Beans微培训。

Beans微培训的倡议书:


Beans的具体计划:


Beans的排课表(省略了具体讲师名称):


到目前为止,Beans已经进行了两期,因项目进度原因暂停,10月份重启。

4、效果评价

从在网优工具部两个项目的实施情况来看,团队成员参与感都比较强,通过微培训方式,不仅仅起到了知识和技能传递的作用,还附带发现了一些设计上的重大缺陷,代码中的典型问题,属于意外之喜,也看到了微培训的威力。

从团队成员的反馈来看,都非常愿意参加这样的活动,也都愿意分享自己的知识和技能,团队的整体气氛都得到了较大提升,沟通和交流更加顺畅。

5、推广建议

微培训最重要的不是形式,而是能够结合项目的实际进行落地。培训的主题从项目中来,培训的落地到项目中去。脱离项目的实际进行培训,虽然能够扩展团队成员的视野(也很重要,但更适合在科室或者大项目角度来实施),但其威力将大大降低。

微培训最难的是持续。最基本的是坚持,但如果能够让团队成员能够自发的去做这件事,相信集体代码所有权就不是问题。

微培训适合各种团队,不限于敏捷团队,也不限于研发人员。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:25186次
    • 积分:648
    • 等级:
    • 排名:千里之外
    • 原创:35篇
    • 转载:8篇
    • 译文:4篇
    • 评论:8条
    最新评论