我认为结对工作其中一个被忽略的要点:如何让新人在可控的状态下经历失败,获取经验,并且在工作中学会思考问题的方式(如何发现问题?从何处着手?怎么在不 同的方案中取舍?从哪里开从哪里开始分析?),而不仅仅是思考问题本身(写什么测试?如何让测试通过?)。
从我的观察看,培养新人比较有效的途径是从全程结对工作开始,通过对细节的指导让新人了解工作的主要方式和职责,进行必要的知识贮备,学会如何正确的做事。接下来应当让新人逐渐学会什么是正确的事情。
我们目前的做法是:
- 新人接到任务后,自行思考。
- 在白板上写下完成任务的主要步骤
- 向教练讲解主要思路和考虑点,教练通过提问引导新人
- 新人自行完善方案
- 新人和教练一起确认方案
- 教练对整个思考过程进行点评,告诉新人这类问题的思考要点。
整个过程大致耗时半个小时左右,这种方式的优点:
- 新人对方案非常了解,执行起来不容易跑偏;
- 有机会在可控范围内犯错,成长更快;
- 新人可以通过不断的练习,有能力通过多个任务逐渐总结出一套思维方式。
- 教练利用这种方法可以通过代码检视和有选择的结对(譬如针对任务中的难度部分结对) 同时帮助多人,更有效率。