[译]培训有用吗?软件行业应采用“学徒制”
在“ Software Training Sucks: Why We Need to Roll it Back 1,000 Years”(软件培训真糟糕:为什么我们需要倒退1000年)一文中,Rob Walling为抛弃传统的培训课程、转而倡导“学徒制”提出了有力的论据:
为什么不使用久经考验的方法呢?让我们举个电工学徒的例子:在今天的美国,国际电子工人兄弟会(International Brotherhood of Electrical Workers,简称IBEW)每年都会培训数千名电工。他们通过两种不同的方式来学习:
- 参加夜校,学习电气理论知识。
- 在工作日的白天,到建筑工地上去亲手实践理论,并从中获取经验。
在他们上岗的第一天,每个人都会被分配一位熟练工师傅——师傅是一位经验丰富的电气技师,他会向学徒传授窍门。一开始,师傅通常会把任务讲解给学徒听,然后示范,接着让学徒亲手做,并在任务完成后提出反馈意见。这个过程简单来说就是:听(Listen)、看(Watch)、做(Do)、评审(Review)。
联系到软件行业,理想情况应该是这样的:导师先评估手上的任务(比如需要编写数据访问代码,或者建立一个基于Web的用户界面),然后召开一次白板会议与学徒进行讨论(听)。接下来,导师可能会写一段示范代码,以说明一个特别困难或者容易混淆的概念(看)。到这时候,导师就可以放手让学徒去编写代码,以便他们获取第一手的经验(做)。最后,导师应该检查学徒的代码,并提出正面的反馈、指出不足之处以及改进建议(评审)。这就是听、看、做、评审。
任何类型的学习关键在于“做”这一步。大多数的软件培训课程只是让你“听”和“看”,而忽略了“做”和“评审”,但最后这两步才是促进成长和技能提升的关键。学徒制强就强在,它让理论和实践浑然一体。而且做起来没有你想象中那么难。
与其组建松散的部落联盟,也许我们应该在软件开发中培养从“学徒”到“熟练工”再到“专家”的这种关系。
晚上学习理论,白天编程工作——这种组合方式特别有效。我曾经看到很多有潜质的实习生最后变成了出色的开发者,或许原因就在于此——他们在学校里学习计算机科学的理论知识,同时还可以在现实的商业项目里实践编码。
然而,当一名好导师可不容易。对于那些技术水平远在我之下的人,我几乎无法指导他们。我太没耐心了!如果你想让足球运动员们在同一块场地里打训练比赛,请不要把职业球员与高中生球员混在一起。他们在技术上的差距太大了,导致他们没办法真正地把比赛打起来。连比赛都打不起来,他们还能怎么学习呢?但是,如果你放一些大学生球员进去,效果就完全不一样了!