如何组织程序员集体学习活动 Code Retreat(二)

2017-02-24 08:04

昨天说完了确定时间,场地和题目。今天来说说活动当天要做些什么。

准备

活动当天,提前半小时到达,准备如下东西:

  • 门口指引
  • WIFI
  • 插线板
  • 椅子
  • 视觉引导(非必须)

破冰

到了活动开始时间,邀请大家一起玩破冰游戏,用语要温柔:

因为今天我们会一整天和很多人结对编程,我想邀请大家一起来玩一个游戏,帮助我们彼此熟悉。

而不是:

大家到这边来,我们玩一个游戏。

我最喜欢的游戏是记名字:

大家围成一圈,从我开始介绍,我是李小波,然后我左边的朋友就要说,我是李小波左边的 AAA,他左边的朋友就要说,我是李小波左边的 AAA 左边的 BBB。一直到最后,由我结束。

这个游戏看起来很挑战记忆力,但实际上并不是很难,只要用心,基本都能记住。过程中抓住机会即兴幽默,让大家笑出来,只要笑出来了,大家就能放下防备,后面一整天的活动都会轻松很多。
过程中会陆续有迟到的人加入进来,邀请他站到你的右边,也就是最后一个位置。
如果第一轮下来,你觉得大家还不够放得开,或者人还没到齐,那就再来一轮,加一个挑战。比如,我是有双胞胎儿子的李小波,或者我是坚持每天写一篇文章的李小波,请大家继续,模仿着来。
两轮下来,大家也熟悉了,人也差不多到齐了。

开场

开场需要做:

  • 自我介绍
  • 主办方介绍
  • 活动背景介绍
  • 感谢场地赞助商
  • 友情提示(信息安全规定,洗手间,喝水等)

介绍活动形式:

  • 全天 5 - 7 个 Session
  • 每个 Session 45 分钟
  • 每个 Session 删除代码,换人结对
  • 每个 Session 有一个目标(约束)
  • 保持开放心态

告诉大家,我们一整天都会玩同一个题目。
目标不是把代码写出来,应该关注在每个 Session 的练习目标上。
介绍题目规则,不用说的很清楚,可以让大家自己去网上找。
有一个视频建议放一下:Epic Conway's Game of Life
问一下大家是否熟悉结对编程,如果不熟悉,可以介绍一下。
推荐放一个视频:告诉你什么叫结对编程! Atlassian愚人节视频

Session 设置

我通常第一轮不加约束,可以用自己平时的方式去做。
第二轮开始要求 TDD,之后就随机选取一个约束:

  • 快捷键
  • 函数式编程
  • 每个方法不超过 5 行
  • 使用纯文本编辑器
  • TDD as if you meant it
  • 静默结对
  • ...

分组

第一轮,大家会倾向于找熟人结对,可以适当提示,和不熟悉的人结对会有更多惊喜。
如果对方坚持,就由他们去吧。
在 TDD 环节,调查一下大家对 TDD 的熟悉程度,可以说:

从 1 分到 10 分,认为自己 TDD 掌握程度在 5 分以上的举手。

如果差不多一半,就可以让熟悉的和不熟悉的结对了。
如果 5分以下的特别多,可以引导 5 分以上的同学,来简单分享一下 TDD 怎么做。

其它时间,就随意地结对,不断提示大家:

背景越不一样,结对的收获越大,不要重复结对。

巡场

大家开始编码后,开始计时。
我以前试过,如果现场有一个人落单,我就去和他结对,现在我不会这么做了。
巡场是很有必要的,去提醒大家当前 Session 的关注点,不要沉迷于实现需求。

  • 如果两个人结对编程做的顺畅,比如用两台电脑,提示他们只用一台。
  • 如果一个人没有参与感,提醒他们切换角色。
  • 如果他们都不熟悉快捷键,给一些提示。 反正,引导者的目标是保证活动顺利进行,每个人都有最大的收获,除了写代码,可做的事情有很多。

回顾

每个 Session 介绍后,邀请大家回到白板前,分享自己的代码。
这个时候是共同学习,有经验的人也可以学到很多东西。同时,作为分享者,也会很有成就感。
每次回顾结束后,休息 5 分钟,让大家可以喝水,上洗手间,检查手机。

午饭

感谢饿了么,让订餐这么方便,现场拉个群,帮大家订外卖,大家还可以自己选,反正自己掏钱。
如果有公司赞助午餐,那就统一订就行了。

整体回顾

最后,邀请大家做一个整体回顾。用便利贴写,每张写一条,从三方面写:

  • 学到了什么
  • 什么让你震惊
  • 回去下一步准备做什么

最后拍照留念,感谢大家抽出时间参与活动。再次感谢场地赞助商~

活动后
在微信群里继续探讨,把拍的照片发给大家,尤其是有人分享的照片。鼓励大家写活动心得,回顾。
一方面回顾是个好习惯,另一方面可以作为宣传的素材,扩大活动影响力。

常见问题

时间到了,大家根本停不下来
这时要用一些引导的技巧,基本上是借用群体压力。
比如,时间到后,我开始拍手,请听到声音的同学也跟着拍手,直到所有人都开始拍手。

没有人愿意主动分享。
在巡场的时候,观察哪些组做的比较好,提前鼓励他们分享。
在回顾时,每次分享完感谢分享者,带头鼓掌。
有些人想分享,但缺少主动的勇气,那你就可以点名请他分享。
尽量记住所有人的名字,多叫出他们的名字,会让人感到受尊重。
不要打击,评价分享者,给建议时要委婉,有建设性。

经验丰富的人也会有收获吗?
是的,教学相长。我调查过,在 TDD 环节,5 分以上的同学,在 Session 结束后觉得分值有所提升。
因为在给对方解释时,自己的理解又加深了。
另外,在每次回顾时,也可以从其他有经验的人身上学到很多。

作为引导者,需要技术很牛吗?
不需要。是加分项,但不是必须的。同时反而要控制住自己的表现欲,为大家搭建一个分享知识的舞台。
你要做的是控制好时间,节奏,氛围。 程序员大多是内向的,多鼓励,营造安全的氛围。这里没有项目经理,没有老板,放心大胆地玩。
无论何时,照顾多数人的利益,这样每个人都愿意成为多数人。
我举个例子,有人迟到了,我们就让准时到的人一起等着,这就不对,这是在惩罚守规矩的人,那下次大家就都不守规矩了。


组织 Code Retreat 活动,对于引导者,不仅可以收获知识,影响力,还可以锻炼到控场,引导能力,讲话技巧。
希望大家都勇敢迈出第一步,去尝试在自己的公司内、在社区,组织 Code Retreat 活动。
需要任何帮助,给我留言,我坚定地支持你!