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

原创 2017年01月03日 15:22:13

【摘要】

随着我司敏捷软件开发的逐步推行,团队拥有知识变得深入人心。虽然结对编程是比较有效的实践手段,自发的结对很难做到。培训仍然不失为一种有效的方式。通过传统的每周一次,一次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、推广建议

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

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

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

《敏捷软件开发过程及最佳实践》培训总结

整理资料,发现很久以前的培训总结,分享之 fasiondog 敏捷不是“银弹” 当前“敏捷”是一个比较流行的词汇,当敏捷不是大家想象的银弹,对人员的培训及方法的掌握仍旧是不可替代的。敏捷开发来自欧...

《敏捷软件开发》《企业应用架构模式》读后感

《敏捷软件开发》《企业应用架构模式》都是比较老的书了,出的时候我才刚上大学吧。当年看一定比现在看的收获大。 书里说的有些已经过时,有些已成为当今的常识,有些已被常用框架实现,有些还是经典。 ...
  • rowanh
  • rowanh
  • 2016年02月21日 00:40
  • 317

将看板应用于软件开发:从敏捷到精益

摘要 看板1是丰田生产方式(Toyota Production System,TPS)中用来支持非集中“拉动式”生产控制(non-centralized "pull" production ...

将看板应用于软件开发:从敏捷到精益

将看板应用于软件开发:从敏捷到精益(转) 摘要 看板1是丰田生产方式(Toyota Production System,TPS)中用来支持非集中“拉动式”生产控制(no...

展讯平台应用软件开发培训教材

  • 2010年06月13日 11:13
  • 305KB
  • 下载

敏捷开发的道与术---MPD软件工作坊培训感想(上)

注:由麦思博(MSUP)主办的2013年亚太软件研发团队管理峰会(以下简称MPD大会)分别于6月15及6月22日在北京、上海举办,葡萄城的部分程序员参加了上海的会议,本文是参会的一些感受和心得。 这...

敏捷开发的道与术---MPD软件工作坊培训感想(上)

注:由麦思博(MSUP)主办的2013年亚太软件研发团队管理峰会(以下简称MPD大会)分别于6月15及6月22日在北京、上海举办,葡萄城的部分程序员参加了上海的会议,本文是参会的一些感受和心得。 这...

《敏捷软件开发:原则、模式与实践》读书笔记

1、敏捷软件开发宣言 个体和交互         胜过 过程和工具 可以工作的软件     胜过 面面俱到的文档 客户合作           胜过 合同谈判 响应变化           胜...
  • backard
  • backard
  • 2013年07月19日 17:20
  • 957

敏捷软件开发模型Scrum通俗讲义

0、前言      之前或多或少都听过说有关敏捷开发模型的诸多东西,包括什么有它相关的书籍或培训。由于公司现在所采用的是Scrum开发流程--敏捷开发的一种,所以,特此作番学习与研究,我也力求文字通俗...
  • v_JULY_v
  • v_JULY_v
  • 2011年08月11日 15:14
  • 23150
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:微培训在敏捷软件开发中的应用
举报原因:
原因补充:

(最多只允许输入30个字)