huntman's Blog

For Freedom

笔记:入学手册(第二轮开始不仅要写ORID还要做课程笔记了)

| Comments

全栈营对全栈工程师的定义及目的——全能型选手:

*能够懂得拆解需求
*懂得把功能做出来
*而且在时间之内上线
*功能做得符合市场需求、卖得动
*甚至功能做好做对、销售口碑也长红

课程学习架构

1.编程门外汉——自学能力、排雷能力、自信心、问题反馈、元学习能力
*教大家如何建立编程的手感
*元学习的几个核心思想概念
*踏入编程的大门
2.新手——编程思维、用户故事、基础编程实践、小套路、小迁移
*建立一些编程的基本环境
*熟悉一些编程的基本流程
*独立自己做出一个小项目
3.高级新手——项目管理、进阶编程实践、中套路、中迁移
*如何设计架构
*按照架构搭建想要的功能
*找到搭建架构时所需要的外部资源
在此过程中培养出:
*独立解决问题的能力
*能够熟悉进阶的Rails API
*并且写出漂亮的技术架构
4.制作人——市场需求调查、有价值的解决方案、最小可行原型
*实作自由项目
*挖掘自由项目的真实痛点
*有能力设计最小商业原型
5.专案经理——里程、风险管理、团队协作、资源高度
*对功能时程做正确的排程
*并且能够管理风险与资源
*以最快的速度行军,几周之内把项目落地
*Bug Free
6.GrowthHacker——Growth UX、Growth Product
*要在销售上也牛逼
*做出对用户有价值的功能、愿意买单甚至推广
*教大家如何以硅谷的成长骇客思维,为项目注入成长的灵魂,并且保持业绩长红

元学习理论

学习编程失败的原因

花很多时间去分析学生样板,想找出:
*为什么有人学得会,有人死都栽在同一个坑里面
*学会一套编程语言并且独立开发程序需要多久
*及一般人自觉编程为什么低效
最后发现无非都栽在对于入门编程的四条错误认知上:
学习编程必须要有天赋
必须在学习编程中「看」懂每一个步骤
学习必须要扎实,要从技术基础原理学起
学习时复制代码是可耻的
这样的认知造成了「学习速度低下」,一旦学习者不能快速地进入「小获胜」的状态,找不到成就感,很快的就放弃了。所以这四条是没必要的伪概念。

「初学」方法绝对与「进阶」方法不同

进阶应该有的认知是:
*必须在学习编程中「看」懂每一个步骤
*学习必须要扎实,要从技术基础原理学起
*学习当中禁止使用捷径,如模仿以及复制代码
但这是在「熟悉基本框架」后的「复习」方法

该如何「初学」编程

Step1.建立自信
Step2.在大脑内建立足够的基础框架
刚开始学编程一头懵是绝对正常的,因为大脑无法以「未知解释未知」,而这往往却是一般人「从入门到放弃」当中的最大一个关键点。正常人一般来说遇到「很多知识不懂」的解决方法是:「花更多时间想办法解释弄懂未知的知识」或者「想办法去补自己都看不懂的基础知识」,直到自己筋疲力尽放弃为止。但是,其实最好的方式,是找到行业中「好的高频小套路」,背下来,即使很多不理解也没有关系。
*只要了解「输入」什么,可以「输出」什么就行了
只有在大脑内储存了够多的已知资讯,其他的资讯才能够有效附着,进而用「已知解释已知」,这也是为什么要在课前背颂101这个基本射门动作的原因
Step3.小迁移
「招聘网站」会带领各位脱离「只会抄模板」的新手学步车,带领各位搭建出类似场景的第一个小应用,慢动作重放一个小网站是如何被构思制作出来的。而且你在日常生活中就能具备这个能力
Step4.中迁移
「购物网站」会复杂上数倍,但可以体验到
*如何从零到有,将一个网站灵感,拆成数十条执行细项的
*如何按部就班,把这些执行细项化为程式码
*并且一步一步找到资源,写出未知的功能
Step5.提取练习(代码)
开学前:第一遍复制代码(观察输入与输出)、第二遍手敲代码(观察自己哪里错误)、第三遍以后,凭自己的记忆写出代码(提取练习)
科学依据:第一遍复制代码不容易出错,方便观察输入是什么,输出又是什么;第二遍手敲代码就可以比较出「自己打了什么」,又「为什么这样错了」,也不容易掉入坑里,因为你不需要去理解太多的知识;第三遍凭自己记忆写出代码,目的是为了让常用功能直接进入人类的「长期记忆」
*但是,如果各位在这当中还是蛮横地去查太多未知的东西,就会把自己带入恐慌的坑里。
Step6.提取练习(文章/错误修正)
要求按ORID这套科学模板写日记,是为了让各位近距离观察自己的情绪,写了几天之后,你就可以「客观」的观察到,自己的学习进度其实有很大的进展,而不是「一直懵」了。不会再被自己的「情绪」影响「进步」。
Step7.提取练习(错误修正)
再来呢,「错的部分」是一定要记下来的,也要写到博客中。虽然刚开始你可能觉得「记错的」而「不记对的」是很傻的一件事。但其实这是一套非常科学的「进步方法」,当你试着这样记了五六个错误以后,你会发现自己傻逼的错误不可能再错了,进步的效果会变得非常明显。
Step8.提取练习(教就是学)
Slack上进展比较好的同学开始在教落后的同学。「教就是学」这句并不是古人唬弄我们的,「教」其实就是一部分的「大脑提取练习」。当我们经由感官刺激接受到讯息后,其实大脑里面的记忆痕迹并不深。如果几天内不应用,其资讯根本无法留下来。所谓「教」,就是在讲述过程中,透过创造「自己版本的新记忆」,将这道资讯在大脑上面再刻深三遍。
所以课前作业貌似非常反常理,但全栈营的所有学习步骤都是走在认知科学的最前沿所设计的,若是各位「放下学习的傲慢」并「只字不差的执行练习」,将会在这个学习过程中,感受到自己巨大的进步。

左右脑模式——与苍蝇和蜜蜂模式有异曲同工之妙

更精确地说,一般人其实没有意识到,进行一项学习,其实调用的是两种模式
*一种叫「左脑」模式,利用逻辑分析学习
*一种叫「右脑」模式,利用感知学习
以Betty Edwards只用5天就教会新手学画画为例(《像艺术家一样思考英文电子版》)这个方法极其简单 让新手在刚开始学素描时,倒着画自己的自画像

当中的原理:

发现学生正着画通常会七歪扭八,因为熟悉自己样貌,所以作画时就会纠结细节,一直想要去修改自己所呈现的容貌。问题是新手又没有足够的绘画技巧,于是就会画得一团糟;但是如果倒过来时,他们就突然会画了。正因为自己都不知道自己在画什么,所以「纠结比较」的那一个部分会被关掉,反而会把重点放在观察全局与细节上。其实这正是因为人类的左右脑具有不同的动作模式:左脑注重逻辑分析,右脑注重全局观。因此用这个方法可以让初学者强制关掉左脑的分析模式,专注于全局。其实学英语和编程也是同样的道理,正因为「语言」或「编程内使用的单词」是我们熟悉的语言,在学习时,学习者会不自主地开启分析模式。去试图找到与过往经验相匹配的模式,但若匹配不到或匹配错误,就会自己绊倒自己。

人人都该「用」英语

所以为什么很多有效的英语学习技巧都要求学习者不要试图去记单词,能够的话就是
*大量的去听别人说什么
*大量的去模仿说句子
这其实就是让学习者大量的使用「右脑」的直觉以及其他身体感觉,去快速抓到全局感,拼出基础框架,而学英语的最有效方式甚至是:
*直接到说英语的地区去居住
*在这样的情境下,学习者可以大量的模仿、大量的使用累积出的简单框架
*在当地生活购物,累积更强的语感与成就感

大脑无法用未知解释未知

同样的一开始学编程,初学者不应去尝试搞懂里面的用法,就算看了一整天,你也无法用逻辑分析出所以然,学习编程的最有效方式就是冲进度,你只需要知道输入什么能够得出什么就可以了。
模仿——>小项目——>大项目——>发布——>激励——>
|_______________________________________________________|

用这样的方式,你就可以抢在自己放弃之前建立正循环的方法!

大脑(记忆)动作原理

一般人学习之所以低效是因为不了解大脑怎么动作。一旦你开始了解自己的大脑是怎样动作的,很快就会发现学习是有套路的,而且你可以利用这套方法大幅拉长自己的学习初速度:
1.大脑并不擅长思考,而且大脑的思考是很缓慢的
蜡烛、火柴、图钉的例子——大脑不仅思考缓慢,而且相当费力,很难凭空想像出一些场景,但如果接上视觉与触觉等具像化的系统进行可靠回传,就会调用其他地方可用的资源做运算,就能迅速得到答案

2.多数的思考,并不是真的思考,而是调用过去记忆所组成的结果
大脑的动作原理是这样的:


接收到环境刺激——>然后把决策放到工作记上——>熟练之后烧到长期记忆中(事实性知识、过程性知识)
工作记忆就是我们当前正在意识、思考的「工作区域」
*(以计算机比喻,就是电脑的内存。容量小,资料存在时间短,重开机就不见了)
*长期记忆就是我们长久以来储存的事实性知识、经验
*(以计算机比喻,就是电脑的硬盘。容量大,资料存在时间长,可以长期复用)
而长期以来,我们日常遇到的大量决策,事实上是调用了长期记忆(经验以及不变的科学事实),让身体自动做出判断完成。而所谓的解题与思考,是复用了短期记忆以及长期记忆而成的,如7
8与177*288后者你能用心算吗?
人类几乎很难凭空展开后面的算式,因为人类的大脑工作记忆中只能暂时存7±2个结果(对人类无意义的结果)事实上人类很少思考,更多的是调用「记忆」在做决策

3.人是利用已知的事务理解新的事物,但「理解」其实是「记忆」
「理解」其实不是一个调用大脑思考的过程,而是一个匹配「记忆」的过程。很多行业为什么不喜欢招小白就是因为其经验太少,缺乏太多相关记忆,可以直接匹配学习。而一般人之所以难以上手编程是因为编程几乎跟过往所有的生活环境动作原理几乎是不匹配的,所以造成「无法理解」,而大量调用大脑资源匹配、思考,结果却一无所返的情况下,造成意志力崩溃。很多人其实是被一堆所谓的枯燥「基础知识」吓跑的。老手觉得「基础知识」很重要,但恰恰对于许多新手来说是「无法理解」的。
以Git运作原理为例!按照所谓的初学指南所谈的动作原理来讲,对一般小白是无法理解的。而如果比喻成时光机则很容易让他们理解并产生兴趣,实际去使用了。等到理解了功能后,且想控制更多细节时就会愿意使用命令列,操作更高级的命令与效果,进而去研究Git底层的动作,学到更多奇技淫巧,从而「使用起来更轻松且有效率」
总之记住一个结论——人类只能利用已知的事物理解新的事物。而这也是教育界的圣经如教育七律反复提及的教学要点,人类的「理解」,实质上是一道不断在旧有记忆上不断叠加累积的过程。

4.没有重复的练习,就不可能精通任何脑力活
就像足球运动员一样,在带球过程中还要思考足球的角度和速度的话,不太可能成为一个优秀的选手。像这样的低层次过程必须不假思索,才能给更高层次的过程,比如战术策略提供足够空间。
正因为我们的工作记忆之狭小,如果你将大量需要调用的资源放在工作记忆,那么大脑就会瞬间寸步难行。就如同这个足球选手来说,如果他要一边思考足球角度和速度,那么下场不但是无法射门,甚至可能将自己绊倒。多半优秀的足球选手进行射门往往凭「直觉」判断,「感觉」角度对了,场上有空档,直接射门就是了,这个「直觉」往往就是深焊在肌肉里面的长期记忆
而一般人所谓的学习,事实上是在将新东西存在短期记忆中,进行「理解」的连结,再透过反复的练习,往下放置在长期记忆中。

5.题海战术以及填鸭教育有时是必须的
正因为过去我们的应该教育中,因为我们大量的被灌输填鸭教育以及题海战术,以至于我们非常痛恨,所以,往往对于「肌肉记忆」的练习术这件事十分不苟同,甚至得出相反的结论「我们未来教育学生,必须使用理解型教育」这个甚至看似正确实则谬误的决策。
如果你的大脑从来未曾存在相关记忆,那么又如何「理解」?比如你如何让幼儿理解7*8=56?中学生如何理解e=mc²;想学编程的大学生理解git的repository机制,答案是不可能,因为事实上他们就没有这样的相关记忆连结,所以你只能让他们硬背,直接先锁在记忆区里面。等待将来更有意义的相关材料,进一步的将这些硬背的东西,锁到更深的地方

6.右脑模式开始探索整体框架
如果「编程」是你这辈子从未碰触过的学问,那么按照大脑最容易入门的方式其实是
*不要强求自己用眼睛,甚至不用大脑去理解,把左脑模式关掉
尽量的摸索一个外围框架,在大脑深处种下记忆点(比如你只要知道「输入什么」,然后可以「得到若干输出」就好了。
*透过肌肉的练习,把这些记忆点种到肌肉里面(打错字不再犯,无法理解但常用的都先背起来)
形成一个防衰记忆层后,再用左脑去分析自己未来想知道更多的东西
*一层一层的用「已知解释已知」
当然这当中要保持「开心」、「有成就感」不妨完成一个小作品后,就扔上网给那些不懂编程的朋友看一下,得到他们的毛病。只有充满成就感的学习,才是初学状态最重要的。有成就感的进步,才容易形成习惯回路。
这一路下来,相信你开始可以理解,为什么社会上「政治正确」的那些「常识」是有多么毒的吧!如果按照那套初学者从入门到放弃根本就是99%可以预期的结果!

提取练习

如何让自己的学习更加牢靠呢?
对于一般人读书复习的方法是:打开课本,画重点、抄笔记,然后复习时重读这些重点以及笔记
The science of learning教到一个简单的方法——高效的姿势应该是:
*当要复习时,禁止打开课本重点与笔记
*拿一张全新的白纸,回想你之前划了哪些重点,以及为什么要划这些重点,写下来
*打开当初的课本重点与「回想笔记」对照
这样「提取练习」会让你在记新东西时,记得非常牢!

提取练习的原理

我们在大脑存取知识时,其实存取的方式不是读取一块一块的小音频和小视频,而是另外再创造一块新的记忆提取出来。但是这个方法会让一般人感觉到非常不舒服,若要精确形容这个感觉,叫做「酸麻的挣扎」。也因为太酸麻了,也需要一点时间。所以一般人会下意识地放弃这个做法。但事实上这个方法却是最有效的深刻记忆的方式。「提取练习」之所以有效,是因为在一般人以往的学习,其资讯是放在外部资讯上(如书本、影像)。在读书时,你以为自己欣快地学会了很多东西,但事实上并没有。而因为大脑并没有「有效的记忆轨迹」连到这一段资讯上。所以黏着度非常低。两三天就忘记了,要回溯时变得很困难。而提取练习,事实上做的是让这段资讯,在大脑反复创造「记忆轨迹」。所以将来提取这段资讯时,就会非常迅速。

教就是学

为什么我们常常反复地讲「教就是学」这个观念呢?
其实正是因为「教」,事实上就是「提取练习」的一种形式。要把一个概念教给别人,这其实「就是在大脑里面提取一份资讯,并且创造一段新的记忆,转成音频输出」。
当你重复这个动作越多次,你就越了解也越记得这段内容。
*很多人以为认真听老师讲课就可以造成有效的学习,这是错的
*有些人也以为只字不差的阅读是有效的,这其实也是错的
真正有效的学习是:学习时写下笔记,复盘时讲授给别人听

有效的反馈

提取练习的另外一个重点是:当同学进行提取练习完,必须收到准确的反馈。这个反馈可以是老师给的,或者是同学一起对照的反馈。这样就可以让自己知道,这是不是有效的练习。

Tip:

*每日练习完毕,请写下自己当日的练习ORID
*观看同学的ORID,对照自己提取方法是否正确
*复盘总结,积极辅导班上落后同学,是学习进步的最快方式
*太多人在「酸麻」这个阶段放弃了。以为懵与酸就是「学不会」,事实上「学不会」的感觉是「关我卵事」
*「酸麻挣扎」代表正在前进,而且正在有效的形成记忆,「酸麻」并不表示学不会,相反的你只要不放弃,就赢了一百个人

破解学习金字塔


他指出其实大多数课堂上我们最熟悉的学习方法,其实都是属于「被动学习」
这种学习方式,在经过学习24小时后的平均保持率却是最低的,不管是「听讲」、「阅读」、「声音」、「影片」的残存记忆效果都是极差的。

教学格式

传统的MOOC都有几个典型的大坑:
以为影片示范教学编程是最有效的
不给学生「复制」示范代码与步骤,以防盗版
学生花了许多时间敲了代码以后,有许多错字。又不知道如何 Debug
影片太消耗学习者的注意力,专心的看了七个影片之后睡着,从此不想再打开
结果迅速的从入门到放弃
所以我们打算在这门课这样做:
每一周只放出小部分的视频介绍重要观念
每堂课有完整的代码可供复制步骤
有小的加分练习题,必须自己思考「动手」解出来
之后会有助教示范写出功能

练习方法——学写代码最有效的:

第一遍先复制观察
第二遍全程手打
第三遍自己写出来

作业格式

同学们必须要交以下作业
Github代码
博客ORID日记
指定知识点的题目的Google搜索整理结果
这样的方式,是协助将各位的被动学习状态,积极的转为「知识残留率高」的高效主动学习法

Comments

comments powered by Disqus