成长的路上,谁不曾反复自我怀疑

最近在学习小组中,有同学问到:

怎么学到后面感觉越来越难了

教程看完一遍后懵懵懂懂的

脑子绕不过弯来,我是不是不适合学

……

大多数人在入门之后,都会遇到一个比较大的“瓶颈期”:这个阶段,你已经了解了编程语言的基本语法,可以看懂入门书上的所有例子,但是合上教程却又无法写出一个完整的代码,对于接下来的学习又缺少方向。以至于对编程这件事情感到迷茫,甚至自我怀疑。

这是种很普遍的感受,也是很正常的现象,而且不仅是在学编程上。

有种现象在心理学上被称为“达克效应”,指的是:人在对一件事认知不足的时候往往会高估自己的水平;在经过适当的学习和训练之后,就会认识到事情的复杂度和自己的不足,转而对自己产生否定;继续坚持,走出这一阶段,就会客观看待,进入稳定的成长期

所以,如果开始感到迷茫,至少说明你已走上正确的道路,比起很多刚刚接触甚至还未接触编程就觉得自己可以三个月成为软件工程师的人,你已经超越了一个阶段。

可以说,几乎所有的程序员都是这么过来的,包括我自己。你们看到教程前几课里的那个猜数字游戏,我刚开始学编程时,做了一个多星期;大一的暑假折腾了近两个月,才完成一个很蹩脚的黑白棋。以我的经验来看,这个过程甚至不只是一个达克效应的曲线这么简单,而是无数个小的达克效应:你总是会不停地面对自信和自我怀疑

无论你的心态(纵轴)如何变化,你对于编程的认知(横轴)一定是增长的

那么问题来了,我们该如何面对这种起伏

在软件工程领域有个概念叫做“迭代式开发”。最传统的“瀑布式开发”是遵循 需求->设计->开发->测试 这一开发流程,每一步都完善之后进入下一个阶段,直到最后交付成品,一步到位。这看起来是个很有效的模型,但实际中有太多不可预知的因素,造成了大量软件的开发失败。“迭代式开发”则在其基础上做了改变,虽然同样是从需求到测试这一流程,但并不再是一步到位,而是把产品拆分成很多小版本,每次迭代只需要实现一部分功能,之后再根据实际情况调整下一版本。如今的互联网产品几乎都是基于类似的迭代开发方式。

迭代开发的好处显而易见,但到了学习这件事上,很多人就还没想通这一点,潜意识里还是觉得应该一步到位。你可能觉得编程学习是这样的过程:

但其实,它更类似于这样:

除了一开始很基本的一些语法外,后续的进阶内容很少是线性发展的,通常都是多个知识点的结合。所以你必然会在第一次遇到某个概念时茫然。对此,你要做的并不是寻找一个按部就班的教程(这基本不存在),而是坦然接受这种未知,不求甚解,硬着头皮往下看在第一次学习的迭代时,去构建整体的认知,勿钻牛角尖;在后续的迭代中,这些曾经孤立的知识点就会在你脑中逐渐产生化学反应,形成连接这是个不断迭代的过程,也是个量变到质变的过程。所以让程序员去给新手讲一个概念,往往很难讲明白,因为这本身就不是通过“讲解”获得的认知,你没有相关的概念,没有前9次的迭代,不可能直接领悟第10次迭代的结论

所以你以为的学习曲线可能是这样:

但实际上,它更可能是这样:

你需要不断经历反复的学习。大多数瓶颈期的问题,只是因为学习的时长还没到位,写的代码还太少。饭要一口一口吃,编程也是要一个坑一个坑地踩。但好的一方面是:你每次的迭代学习,都会得到新的认知

举个实际例子:我在爬虫教程里写,Chrome 开发者工具 Elements 里看到的源代码,是渲染后的结果,跟你用代码抓下来的不一样。这个话但凡我在爬虫相关的文章和教程中,基本都会提,但对于没有操作过人来说,这话毫无意义,你听了也不会增加任何认知。但反过来,只要你满足 1.踩过这个坑 2.看到过这句话,这个知识点的连接就形成了,并且几乎不可能再忘,因为本身并没有难理解的逻辑,只是你不知道而已。

所以说进阶靠项目,目的就是通过实践开发,把你曾经看过的点都连接起来。就像乔布斯说的:

Conneting the dots

你在向前展望的时候不可能将这些片段串连起来;你只能在回顾的时候将点点滴滴串连起来。所以你必须相信这些片段会在你未来的某一天串连起来。

you can't connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future.

Steve Jobs

虽然这话说的是人生大道理,但放在编程这件小事上,同样适用。

我们总是容易高估自己短期内能做到的事情,而又低估自己长期能达到的高度。

如果心态不好,急于求成,一时学不会就很容易自暴自弃。你想想看,专业的大学生再怎么不努力,好歹也学了四年呢,凭什么你觉得自己三个月就能跟别人竞争?要是抱着这样的心态,最后难免是21天从入门到放弃。

但说难很难,说简单也简单。难在并不是每个人都相信时间的力量,都能在尚未看到成果的阶段坚持下来,跨过绝望之谷。简单在于,只要你做得够久,就已经胜过了许多人,跟什么天赋、出身都没多大关系。

Crossin的编程教室,写了六年多的教程和文章,没写出过 10w+ 的爆款刷屏文,不也一样有了二十几万的关注度。当年同时期一起写的,很多都没做下去,我只不过更耐得住性子罢了。就算是碰运气,也是你坚持得够久,才更可能被幸运女神眷顾

时间是杠杆,会让你微小的努力产生巨大的效果。与君共勉!


(0)

相关推荐

  • Rust vs. Go:为什么强强联合会更好

    本文翻译自乔纳森·特纳(Jonathan Turner)和史蒂夫·弗朗西亚(Steve Francia)的文章<Rust vs. Go: Why They're Better Together& ...

  • C 20标准公布了,跟你有关吗?

    2020年的最后1个月,C++20的标准正式公布了,它的变化有多大? 先来看一张图: 分别用C++11和C++20编写代码,来实现同一个数据操作的功能 显而易见,C++的代码变得更简洁了,甚至有人说, ...

  • 在成长的路上 你要学会自我疗伤

    一别两宽 作词:燃点记忆 我晚睡是一个人的对白 就像藏了很久的心事 我一个人静静体会 不需要别人感伤 黑夜给了我最好解药 我不过是自我疗伤 默默疗伤 我早已习惯无人问津的生活 像是一个人的黑夜 总有很 ...

  • 当自我怀疑时该怎么办? | 自然居成长回顾

    当自我怀疑时 该怎么办? 问题:你们在做工作室的过程,有没有对自己产生过怀疑?如果遇到事情的结果,和自己想的不一样的时候,是怎么应对的呢? 在去年,就开始陆续有朋友,希望我们分享一些开办自然居这个过程 ...

  • 出关思考14|这些年事业中遇到的坑4—心理成长4/从自我怀疑走向自我认同

    接上一篇: 证明自己.取悦顺从他人.一个只想一件事的中年人--丧失自我的后果是什么? 我们从内心里并不真正相信自己的价值,或者看不清自己的价值,从而只能从关注外界对自己是否认同,来判断自己存在意义. ...

  • 【成长】|TED演讲:如何从自我怀疑中解放出来?

    自我怀疑是多么的令人麻痹,自我怀疑导致人们选择痛苦而不是快乐,选择空虚而不是满足,选择禁锢自我而不是解放自己,那个唯一不相信自己的人,唯一还需要相信自己的人,往往是我们自己.而当我们在自我怀疑的花园里 ...

  • 还在自我否定、自我怀疑?教你3招1分钟摆脱焦虑

    你好呀,这是深蓝. 不知你是否常常陷入强烈的自我怀疑与自我否定,大脑里各种思维反刍,不断质问自己: 为什么会干出这种傻事? 为什么没有更好地准备? 为什么任由时间悄悄溜走却无能为力? 感觉自己搞砸了那 ...

  • 投射:我们如何从容地避免自我怀疑?

    用生命影响生命 · 一杯咖啡活动组织和社群管理团队招新(2021) 公益心理科普自媒体团队招募常任编辑2名 翻译心灵语言:一杯咖啡英语编译组员招募中(2021版) 文章编号:F20210303 自我成 ...

  • 对成为国王 威廉很有压力 并出现了自我怀疑

    身在帝王之家,威廉王子虽拥有一生享不尽的荣华富贵,但他对于自己的未来,也有过迷茫与怀疑. 据一位王室内部人士称,威廉王子对自己未来的国王角色感到"自我怀疑". 消息人士称,威廉王子 ...

  • 过度的自我怀疑只会阻碍你人生的进步

    自我怀疑有时如同毒药 每天早上,我都会花不到半个小时的时间回想昨天的事情以及安排今天要做的工作或是其他事情. 一天下来,当我看到自己安排的事情都完成后,内心的成就感简直爆棚.那种感觉就是"一 ...

  • 我们每个人成长的路上都要遇到这十种人

    几十年来的风雨霜雪,离奇坎坷,在近七十岁时才弄清了,原来在人生成长进步的路上随时都有着这样十种人,他们从不同的角度对你影响着,使你不得不在这些人的面前有所作为:哪十种人呢,下面我来分享一下: 1.恩人 ...