什么是CodeRetreat?

Code Retreat是一个一天的集中练习的活动,专注于软件开发和设计的基础。让开发人员远离完成工作的压力,提供专注练习的机会,CodeRetreat这种形式已被证明是提升编程技能的有效方法。通过练习模块化和面向对象的基本原则,开发人员可以提高他们编写代码的能力并使变更成本最小化。

什么是全球CodeRetreat日?

全球CodeRetreat日是一个全球性的软件工艺庆典。去年,全世界有来自150个城市的超过2000名充满热情的软件开发者在同一天通过CodeRetreat的方式来练习软件开发工艺。今年,我们的目标是200个城市!按照平均每个城市15到20人来计算,参与活动的开发者将超过3000人!

以上是这个活动的介绍。而我,在上司里获得消息,并尝试了报名,不经意间得到了参与资格。

参加coder的活动这还是第一次。在回复参加前我还特地跑到这篇文章去了解了一下活动详细。起初我对这个活动的定义是免费吃喝的程序员聚会。既然组织者都说这是“轻松”的活动,也就回复了,反正没坏。

11月15日当天,我提早到了预定的地方。供应的场地是家比较冷清的酒店,在酒店大门看连服务员都没见到几个。这个活动甚至连仅有的几个服务员都不知道,看来果然非常不正式,猜想会有人来么。活动差不多开始前,发现有个汉子搬水拉着行李箱上电梯,我看这应该是主办方了。随后我也更上去了。聊了一阵,原来我们公司之前跟他们ThoughtWorks(后简称TW)合作过。我记得,本来我们的项目也是他们TW主导设计的,结果成果不太效率,就夭折了。

集合、自我介绍和客套的活动就不多说了,不过来到现场的人还不少,有30人左右的样子。主题活动与往年一样,使用特定方式写Game of Life。

Game of Life
生死规则如下:

  • 定义的元胞都有8个邻居。上下左右,左上左下,右上右下八个方位。
  • 如果一个元胞有一个或零个邻居,会因为孤独而死亡。3个以上的邻居会因为拥挤而死亡。
  • 如果空元胞弟正好有3个邻居,会在空元胞的位子生成一个元胞。

第一个场景是45分钟可以自由两人一组完成这个程序。其实这就是一个接触需求的阶段。我们组的表现是没有找到这个任务真正的目的。我跟同伴开始就陷入初始化的死胡同。其实,我们应该讨论理解这三个条件的逻辑。

第二个场景是使用TDD的方法写这个程序。TDD,测试驱动开发。而我,在活动之前只是文字上的接触,并没事件过。由于活动同伴是轮换的,这次我碰上了一个大大,这个场景也是我学习最多的。这位大大看着经验老到,实际也是如此。我在这个场景出现了好多问题:

  • 不清楚TDD的思想,完全处于无知状态
  • 学习过的知识居然忘记得一干二净
  • 思考不缜密,比起同伴只会拖后腿

我敢说,如果是同伴抛弃我写的话,估计45分钟是可以完成的。可是,这位大大放弃了完成程序机会,一步一步地解释和展示如何实现TDD。“TDD就是先写测试让程序挂掉,再让对方写好代码让程序活起来通过测试。”面对各种问题,有点沮丧,但感受到强烈的学习喜悦。

每个场景结束后,主办方都会来一个总结。两个场景过后,吃饭时间到。之前忘了说,这个活动好多吃的。早餐有面包牛奶,零食有水果、饼干、啤酒。为了方便轮换组队,主办方还提供了木糖醇!午饭也是免费的快餐,一天下来基本不愁吃不愁喝。

下午的两个场景分别是不能使用鼠标和不能说话。不能使用鼠标对于我这种手残党真是超大挑战,同伴和小波同志(主办方)看了都非常无语。不过同伴还是不离不弃(嫁人一定要嫁程序员!),在一边教导一边玩手机去了。不能说话的场景也是醉了。幸好大家都对这个主题很熟悉了,但在体验沉默的沟通中,我还是能体会到无法语言交流情况下,代码质量对合作的重要性。

活动到这个时候其实已经尾声了,毕竟其实不像是轻松的活动,譬如对于我来说就压力山大。太多太多的东西在思考,太多太多的不足需要改进。最后一个场景我已经不在活动中,而是飘到未知的未来,想看看那时候的自己究竟能达到什么水平,能不能达到这些大大们的水平。

能够参与这个活动是我程序猿生涯的一个转折,能够认识这么多厉害的coder也是我一生的荣幸。在此感谢TW和各个赞助商,感谢全世界支持这个活动的参与者,有缘再会。