1.什么是元学习
很多人在学习编程的时候,都会在网上找各种各样的入门书籍,从入门到精通的教程,但大部分人都是直接从入门到放弃,原因何在呢?
我想大部分都是没有学习如何学习。
最初听到这个例子是从李笑来那里听到的,然后慢慢发现他说的确实有道理,但是有道理没有用呀,关键还是靠实践。
今年六月份,大三就基本已经过去了,在考虑是考研还是找工作的过程中,最终还是选择了找工作。
原因在此不细说,总之,相比于老师面对面教,我更喜欢自己慢慢琢磨思考,自己找资料学习。
由于我学的是数学,目前人工智能,大数据那么火,刚好我的专业也是半数学,半计算机,干脆转大数据,人工智能算了,这就说到编程了。
编程在这个行业属于必备知识,以前没怎么写过代码,所以对于编程的学习,我一直都是弱势群体
刚好,在这段时间,碰到了Xdite的元学习课,非常系统的讲解了学习编程的基础理念,所以准备根据听课记录,以及自己的一些理解,写几篇文章,然后按照这些个基础理念,慢慢制定自己的学习路线。话不多少,马上上正菜。
什么是元学习,元学习就是学习如何学习的方法,有很多人甚至大学毕业之后,都没有掌握太多的自学能力。即使在网上有很多教程,但是很少有一门课程是教学习如何学习的课程,所以元学习就出来了,我会通过学习编程为例子,让大家学会如何学习。
2.编程是什么?
其实编程就只有一个简单的公式:$$输入\rightarrow 输出 \rightarrow 循环$$如果你遇到A状况,就执行A方法,如果你遇到B状况,就执行B方法。
确实是这样子的,我们举个例子,假如你要学炒菜,你是不是也会先找菜谱,看一下别人的示范, 然后自己再跟着做。看的多了,你要开始自己煎牛排了,是不是就知道该怎么煎了呢?
假如你是一个新手, 你要学煎牛排,你会不会先去买一本牛肉指南,然后再研究一下热力学原理,再去学煎牛排呢?是个正常人应该都不会这么做吧!
但是很多人学习技能就是这样子起步的,比如学音乐先从音阶开始,学英语先从背单词开始,学编程先从C语言开始,仿佛自己很努力的样子,但最后放弃的时候还是会告诉自己不够努力,原因何在?
学习一门新技能的正确姿势是什么?编程到底应该怎么开始呢 ?
很多野生程序员都是直接上手就干的,想想你现在掌握的技能,是在学校的时候掌握得快些,还是毕业在工作的时候掌握得快。大部分人的答案应该是在毕业之后的几个月,为什么呢?因为毕业之后马上要用到自己的技能了,如果不会,那就得查,然后用,再学,再用。
对于程序员来说,在毕业之后直接上手项目学到的一定比在学校学到得更多吧。
所以,我们在学习之前,更多的应该先学习如何学习?
3.拼图理论
编程的学习不像登山一样,需要一步一步先打牢基础,而是像一张拼图,先描绘出边框,然后再往里面一步一步填东西。
什么意思呢?
就像一般人学习一些技能一样,比如说学习PPT,或者word。可能你是先去图书馆找一本从入门到精通的指导书籍,或者从网上找一堆教程,然后慢慢看,最后很可能就直接放弃了。但是到工作的时候,或者要写毕业论文的时候,你发现找一个模版修修改改,其实也挺不错的。改多了,你又发现,其实这个也不难呀,自己就能做,慢慢得,你就知道PPT应该怎么写,怎么设计才更美观了。
仔细思考这个过程,登山不就是慢慢打基础吗,但往往是基础还没打好,我们就从入门到放弃了。
而拼图,不就是先看一下别人的PPT是怎么设计的,有了整体感,这就是边框,慢慢得自己修修改改,就知道这个图案是怎么设计出来的,等改多了,就知道这其中的套路应该是怎么样子的,于是自己也就能写PPT了。
4.成就感
很多人放弃都是因为在这个过程中无聊,同时也没啥成就感,但想想王者荣耀这样的游戏,是怎么做到让人一直想玩的呢?
你应该也会在朋友圈,或者朋友中发现:“我把王者荣耀卸载了,以后再也不玩了”这样的话,但往往没过几天,就又发现:“时隔几天不玩王者,感觉生活失去了乐趣”。所以我一直非常的好奇,到底是什么样的产品能让人如此沉迷呢?
仔细挖掘里面的奥秘,终于还是有所发现了,举个例子。
如果是一般的游戏,你玩完之后,可能过一两周就忘记了,但是王者荣耀不一样,你杀死了一个英雄,你再杀了一个英雄,屏幕上会一直给你鼓励,三杀,四杀,无敌啦,爽不爽,你在这里得到了认可,收到了金钱的鼓励。
想象一下,假如你是这款游戏的设计师,要设计游戏结束的情形,你会想,那一般游戏就是结束,获得了多少积分,点击退出游戏,或再来一局嘛。但王者荣耀不一样哦,王者荣耀结束的时候可没有直接退出,而是一个你不能跳过,不能关闭的画面,展示水晶被消灭的过程。为什么腾讯要浪费这样的时间,来展示这个画面呢?
让你爽到底,这就是诺贝尔经济学家丹尼尔-卡尼曼发现的定律---峰终定律。所谓的峰终定律,就是一个过程中最巅峰的时刻和临结束时的体验。让你在体验的过程中感受三杀,四杀,无敌,超神,在结束的时候让你慢慢得感受,延长这个感觉,你就能在最后收获到满满的成就感,自然就会感觉这次体验非常好。
细想,如果你学习也能上瘾,是不是很很好呢?
我们同样可以应用游戏中策略,把大任务拆解成小任务,同时把握两个关键点,第一个关键点就是在这个过程中,每完成一个小任务,就给自己一个小奖励,每完成一个就给自己一个小奖励。在最后完成大任务的时候,给自己一个大奖励,或者发个朋友圈,炫耀一下自己做的项目成果,以此收获成就感。
5.刻意练习
结束水晶被消灭的画面之后,游戏有没有立马结束呀?没有,它会给你反馈,给你数据,跟你说这次我为什么没有超神,而且从头到尾,都没有退出,继续,下一局的字眼,唯一的按键就是返回大厅,不会让你有游戏结束的感受。更牛逼的是,在玩王者荣耀的整个过程中,完全看不到时间,根本不知道时间,你可能想玩一局 就20分钟,没想到,哇,三个小时了,一定玩王者荣耀的人都有这个体验吧。
这个过程又叫什么呢?及时反馈,我们做了项目,项目做得好快,需要通过别人的反馈,让我们知道哪里做的不好,需要改进。而对于编程,具体到写代码,则是对于初学者来说,有一个模版,或者别人现成已经写好的代码,自己只是照着模版先抄一遍,抄得多了,自己就知道要怎么写了。这个过程,需要我们刻意练习,时时练习。
6.像艺术家一样思考
在《艺术家一样思考》这本书里,作者曾说到一个故事,让学生正着画自己画像的时候,往往画不太好,但如果让学生把画像倒过来,然后画自己,很多人都能画得不错。
他在书里分析了为什么会出现这种情况,大致原因是对于初学者来说,本来自己画画的技能并不是很好,当正着画的时候,左脑就会开始分析,应该怎么画才好,稍微画得不太像,就想着改。
而如果反着画呢?反着画,因为大脑看不到自己到底画得怎么样,所以在画得过程中不会主动分析自己哪里画得不好,没有了牵绊,就能画好。
其背后的原理就是左脑善于利用自己的分析能力,给自己指路,在做事的时候就会有很多顾虑,往往会自己绊倒自己;而关闭左脑的分析能力后,右脑更善于抓住全局观,不分析,死记硬背了。因为人不能用未知来解释未知,对于初学者来说,新的领域就是未知的,当你死记硬背足够多的关于这个领域的知识后,你就能用已学到的知识来解释未知的,但更加高深的内容了。
就像学英语一样,当你记了很多语法之后,这些语法有时候甚至会成为我们的负担,因为你在说的时候,往往会想一下自己说的到底对不对?
而如果我们直接到美国或者英国去,你被迫使用英文,说英语的目的不是为了说得一点语法错误都没有,而是为了让对方明白自己要表达的意思,也就是交流,你就不会再用左脑去分析你说的对还是不对,而是直接说,直到让对方理解你的意思为止,所以即使说错了很多,但交流的目的达到了,在这个过程中,英语自然会变好。
所以学习编程,一开始的时候,不需要搞懂里面到底都是啥,只需要模仿别人写代码,快速搭建一个小项目,然后发个朋友圈获得成就感之后继续练习。利用这样的方法,就能形成自己学习编程的正循环了。
7.总结一下
- 学习一般技能的三个理论基石:拼图理论,成就感,持续刻意练习
- 对于初学者,学习一项新技能的时候应该关闭左脑的分析模式,利用右脑快速建立起关于这个技能的框架
- 对于编程初学者,最好的方法就是模仿别人写代码