一郎科技|怎么学到后面越来越难?达克效应在作祟,#自学编程方法论#

最近总是听到很多有同学问:怎么学到后面感觉越来越难了!
教程看完一遍后懵懵懂懂的
脑子绕不过弯来 , 我是不是不适合学
……
大多数人在入门之后 , 都会遇到一个比较大的“瓶颈期”:这个阶段 , 你已经了解了编程语言的基本语法 , 可以看懂入门书上的所有例子 , 但是合上教程却又无法写出一个完整的代码 , 对于接下来的学习又缺少方向 。 以至于对编程这件事情感到迷茫 , 甚至自我怀疑 。
这是种很普遍的感受 , 也是很正常的现象 , 而且不仅是在学编程上 。
有种现象在心理学上被称为“达克效应” , 指的是:人在对一件事认知不足的时候往往会高估自己的水平;在经过适当的学习和训练之后 , 就会认识到事情的复杂度和自己的不足 , 转而对自己产生否定;继续坚持 , 走出这一阶段 , 就会客观看待 , 进入稳定的成长期 。
可以说 , 几乎所有的程序员都是这么过来的 , 包括我自己 。 你们看到教程前几课里的那个猜数字游戏 , 我刚开始学编程时 , 做了一个多星期;大一的暑假折腾了近两个月 , 才完成一个很蹩脚的黑白棋 。 以我的经验来看 , 这个过程甚至不只是一个达克效应的曲线这么简单 , 而是无数个小的达克效应:你总是会不停地面对自信和自我怀疑 。
那么问题来了 , 我们该如何面对这种起伏呢?
在软件工程领域有个概念叫做“迭代式开发” 。
最传统的“瀑布式开发”是遵循需求->设计->开发->测试这一开发流程 , 每一步都完善之后进入下一个阶段 , 直到最后交付成品 , 一步到位 。 这看起来是个很有效的模型 , 但实际中有太多不可预知的因素 , 造成了大量软件的开发失败 。
“迭代式开发”则在其基础上做了改变 , 虽然同样是从需求到测试这一流程 , 但并不再是一步到位 , 而是把产品拆分成很多小版本 , 每次迭代只需要实现一部分功能 , 之后再根据实际情况调整下一版本 。 如今的互联网产品几乎都是基于类似的迭代开发方式 。
对此 , 你要做的并不是寻找一个按部就班的教程(这基本不存在) , 而是坦然接受这种未知 , 不求甚解 , 硬着头皮往下看 。 在第一次学习的迭代时 , 去构建整体的认知 , 勿钻牛角尖;在后续的迭代中 , 这些曾经孤立的知识点就会在你脑中逐渐产生化学反应 , 形成连接 。