我们的CSD暨敏捷技术实践课程已在北京、杭州、深圳、成都等多个城市开 展。多家国内外知名企业的学员参加后赞不绝口,纷纷向身边的朋友推荐。 2014年8月8日我们成功将公开课带到上海交付,希望能将我们的知识与经验分享给更多的朋友。(Cerfified Scrum Developer, 由Scrum Alliance认证)
第一天会带大家简单地回顾敏捷与Scrum。然后组队、结对开始学习ATDD、 TDD、以及单元测试的做法,教练会介绍相应的工具,然后演示代码,并给 予足够的时间让学员动手体验。课程所用的编程语言,以Java为主。也曾经 根据学员的背景,调整为C++及C#等。
第二天我们先通过游戏的方式,对之前所学内容做一个回顾和分享。教练也会趁机解答学员的疑问。接下来就开始学习代码坏味道,让大家在审美之前先学会审丑,然后是如何根据坏味道来进行重构。当然,我们也会教给大家如何审美,好的设计毕竟是有章可循的。掌握了重构概念以后,教练会讲解在敏捷开发中如何通过不断重构来进行浮现式设计,灵活应对变化。
第三天我们还是先通过游戏的方式,对之前所学内容做一个回顾和分享。在 讲解完持续集成之后,教练就摇身一变,扮演Product Owner给出一个虚拟 项目的需求。学员当然就作为Scrum Team了,利用刚刚学到的技能将需求 实现出来。我们不是在上班,所以开发进度不是重点,关键是在过程中认真 地运用敏捷技术实践,以便回到日常工作后能学以致用。
作为敏捷实践者,我们非常重视迭代与进化。每次课程中都认真收集学员的反馈信息,不断调整授课方式。
举个例子,课程上会有大量的知识点讲解。以重构为例,最初我们是先讲解 重构的概念,然后再让大家动手练习。结果学员的理解不深。在研究了大 卫·库伯(David Kolb)的经验学习圈理论(experiential learning)之后,我们采 用了” demo-teach-practice”的方式重新设计了课程结构,教练先进行演示, 然后通过引导(facilitation)技术,向学员抛出精心设计的问题,引发学员的 思考,并促成课后行动。之后再进行概念讲解时,学员的理解会更加深入。 最后,通过学员的动手练习,再次加深对知识的理解,达到更好的学习效果。

再举个例子,最早的时候学员动手编程都是在自己的电脑上进行,由于网络、 工具、操作系统的差异,结果导致各种稀奇的问题影响了练习效果。于是我 们立刻转为虚拟机教学方案。大家上课之前,只要提前安装好VirtualBox软 件即可,教练会准备好虚拟机镜像,里面安装有课堂所需的所有工具,现在 学员可以更为集中在编程的乐趣上。到目前为止,我们的虚拟机已经更新过 十几个版本了。
在CSD课程上,学员还会见到教练带来精彩的视觉引导。通过图像的方式聚焦学员的群体记忆,营造生动有趣的学习气氛。 甚至曾经有学员将我们的海报带回办公室张贴起来!