2005年,David Kaskel和Shiv Rajendran发现,
人们在大型多人在线角色扮演游戏中,会很快学会一门语言,
于是创立了languagelab.com
,教大家通过玩电子游戏的方式学习英语。
2011年,languagelab.com
与Pearson Education集团合作,
推出了一款称为Market Leader Live的虚拟产品,教人们学商务英语。
2014年,开始面向企业和软件工程师进行培训,
2016年官网改名为immerse.io。
现在,人们将这样的学习方式,
称为沉浸式学习(Immerse Learning)。
沉浸式学习,一般会通过虚拟现实技术,为学习者提供一个接近真实的学习环境,
借助虚拟学习环境,学习者通过高度参与互动、演练而提升技能。
如何教别人学习
首先值得一提的是,学习效率是有快慢之分的,
采用不同的学习方法,最终会得到不同的学习成果。
因此,我们除了要坚持学习之外,更重要的一点是,
还要坚持改进自己的学习方式。
然而,每当讨论到学习方式之时,就总会出现一个误区挥之不去,
这个误区简而言之就是,
人们总是习惯上,用自己认为适合别人的方法,教别人学习。
这其实是不正确的。
典型的案例,例如,学习骑自行车。
我们知道,一个会骑自行车的人,骑行几乎成为了一项本能,是下意识的行为,
所以,经常看到的教学行为是这样的。
告诉学习者自行车朝哪边倒,就把车把转向哪边。
于是,每当自行车要倒的时候,
学习者都要先判断倒向,再回忆教学者的指令,最后才能做出调整行为,
这通常都是于事无补的。
那么,怎样才是更好的教学方式呢?
实际上,我们应该用我们现在的大脑考虑,
如果我们还不会骑车,如何教会自己骑行。
这样办法就很明显了,我们肯定会先让自己习惯滑行,
熟悉车把对自行车的控制情况,
然后再慢慢过渡,用脚踏板方式骑行。
总之,我们如何教会自己,就应该如何教会别人,
而不是把我们学会之后总结的规律,讲述给学习者,
这几乎起不到任何作用,只会忙中添乱。
不一样的软件领域
软件行业,颠覆了很多传统行业沿袭已久的规矩和理念,
例如我们知道,沟通成本会随着人数增多,指数倍的增长,
向落后的项目中增加人手,只会让项目更加落后。——Brooks法则
我们还知道,与建筑行业不同,
小批量快速的交付可运行的软件,可以有效的降低发布风险。
除此之外,还有很多。
因此,我们应该怀着开放的心态看待软件,
经常对自己的一些习惯认识,保持警觉。
下文我们在编程的学习方式上,尝试做出了一些新探索,
试图分析一下,怎样的学习方法,才能让自己学的更快。
第一步:项目综述
编程是一种脑力密集型劳动,与科研工作者的工作性质相仿。
在科研工作中,如果想要在某个领域做出一点成绩的话,
第一步就是,阅读这个领域的文献综述。
文献综述给了我们一种全局性的背景知识,
让我们快速了解了当前领域的历史,以及事物发展的来龙去脉,
也知道了其他人在忙些什么工作,他们在整个潮流中处于什么位置。
回到编程学习中来,
我认为最快的学习方式,就是直接投入到某个进行中的项目中,
找一个有经验的参与者,综述一下整个项目。
其中可能会涉及到某些奇技淫巧,要自己整理一下,
这些不同寻常的小细节,正是我们梦寐以求的最佳实践。
因此,有时候编程就像下棋,
理解规则并不难,难的是学会下棋的方法。
对进行中的项目进行回顾,能让我们立即上手,毫不迟疑。
第二步:照猫画虎
不论是解题还是编程,有一点十分相似,
自创总是很费时间,更快的办法是见多识广。
如果在项目中已经有类似的应用场景,
直接照猫画虎,是最快的,(当然复制粘贴是不对的)
我们可以迅速融入项目中,贡献出和其他人类似的代码。
在这个阶段,
不要试着自己去创新,而是,只需模仿。
同时,与项目组成员,针对自己模仿出来的代码进行评审,也会事半功倍。
掌握一个典型项目所用到的技术栈,一个月足以。
第三步:独立自主
其实到这一步之前,我们已经熟练掌握项目相关的技术栈了,
但是为了能发现项目组中的固有问题,或者称为盲区,
就必须具备脱离框架的独立开发能力。
这时,我们应该分析这个项目是如何搭建的,怎样从零到有。
我们能否在干净的环境中,复原出这个框架内的舒适区。
我们能否领会到,当前环境所遇到的种种约束,
能否感受到,数代决策者所忧心的事情。
独立自主,才能帮团队解决问题。
结语
本文探讨了编程学习的几个新方法,
我认为,如果自己现在是个初学者,用这个办法可以让自己更快的学会,
那么这可能会比一个自认为对别人有效的办法,更有效果。
我没有通过总结规律,来说明应该如何快速学会编程,
而是将自己作为学习者,探讨了有效的学习策略。
切实可行的策略比道理更实用,
须知,我们知道很多道理,却仍然过不好这一生。