搬开成长之路上的最大“绊脚石”
最近的学习进程步入到C++的领域中。因为学习的难度上了一个新的台阶,我又一次遇到了困难,走了一段弯路。好在总算是及时调整过来,重新走上了正轨。不过,这一次遇到的问题跟从前竟然很是相似!学习编程过程中屡屡走入岔口,让我很不舒服,我要找到这背后的原因,一劳永逸地解决它。
一、最快的成长方式
前一段时间阅读了稻盛和夫老先生的《活法》,很赞同他对“上一线”重要性的强调。结合我自身的成长经历,我自是十分认可“上一线”的工作方式,并且把它当作最快的成长方式。在步入C++的学习过程中,我深刻体验到了这种方式的威力。
师兄给了我一份系统代码,让我努力读懂它。师兄带着我读了一部分,将一些基本的概念给我大致讲解了一遍,然后就让我独自向下进行了。这一次,我终于理解了季羡林老先生当年在学习俄文的时候是多么痛苦了!因为对C++没有什么了解,所以,几乎每一行代码中都会出现我不明白的地方。于是,我只能一个函数一个函数地查询,然后再回到代码当中去理解。更要命的是,一个完整的系统代码,中间存在很多逻辑调用,也就是说,阅读代码并非可以像读英文原著一样从头到尾地顺序读下去。如果不先搞懂基本的逻辑,从哪里开始读都找不到,更不要说读懂整个代码的意思了。
可是,若想读懂代码,这已经是最快的方式了,甚至是唯一的方式!而我,偏偏又偏离了这个方式。
经过了第一天痛苦地挣扎,我虽然搞懂了一些问题,但是就代码的总量来看,进展缓慢。与此同时,伴随着我的是深深的挫败感。随着挫败感的增加,我的耐心慢慢消耗殆尽,不再能够保持很好的专注力。而这是变糟的开始。因为专注力的下降,所以大半天过去之后,我竟然没有什么实质性的进展。如此逡巡不前让我放弃了继续阅读源代码的方式,转而开始去读讲解C++的教材。因为教材的展开方式是循序渐进的,我更容易找到一种安全感。
但是,一天之后,师兄问我代码读得怎么样的时候,我实在没法回答他。因为在过去两天的时间里,我用来阅读代码的时间还不到一天!而剩下的时间,我选择了相对容易的,却并不高效的学习方式。在师兄的提醒之下,我幡然醒悟,意识到自己偏离了航线。而此时,对照这两种学习方式,效果的好坏高下立判。
1、直接阅读代码。直接阅读代码的时间虽然不长,过程也相对痛苦很多,但是对于遇到的每个问题,只要我查询到准确的讲解文章,真正理解之后,都能对理解代码有直接的作用。而这样习得的知识点也印象深刻。
2、阅读教材。阅读教材的时间相对长一些,过程也更易让我接受,但是,对于理解代码的作用实在微乎其微。而学习到的一些知识点因为缺少实际的应用案例,印象也并不深刻。
二、最大的“绊脚石”
回想自己走入“岔路”的过程,发现最大的“绊脚石”竟然是——恐惧!恐惧的来源主要有以下两个方面。
第一,进展缓慢,怀疑自己。因为源代码对我来讲确实很难,每前进一步几乎都需要查询资料,所以进展缓慢是一定的。但是,在自己折腾了很长一段时间之后,发现仅仅只向前走了一点点时,那种挫败感还是非常强烈。即使我已经做好了心理准备,知道自己会很慢,也提醒了自己需要保有耐心,但当实际情况出现的是时候,自己的耐心还是很快就被消磨殆尽了。当自己产生自我怀疑的时候,也是恐惧感产生的开始。我怀疑自己能否最终看懂这份代码。而这种恐惧感和挫败感交织在一起,让我放弃了继续留在正确的、高效的学习之路上,转身选择了让我感觉良好的“学院式”学习方式——拿起了书本。而这一选择,进一步减缓了理解源代码的进程。
第二,不知如何“交差”。师兄在我的身上倾注了很多精力,所以,在某种程度上,我们不仅仅只是朋友的关系,他有的时候更像一个师长。对于师兄交代的事情,我总是渴望尽快做好。但是,很多时候,这种想法会变成一种压力,让我有一种压迫感。当自己能够在预期的时间内较好地完成师兄交代的任务时,这份压力也就可以随之化解。反之,这份压力会随着时间的推移不断增大,最后变成一种恐惧——感觉自己辜负了师兄的付出。
以上的两种思维模式,都会将恐惧感带到我身边。当我处在恐惧之中的时候,就需要调动相当多的精力去对抗恐惧,没有办法很好地集中注意力。于是,便进入到一种恶性循环。这一次能够重新回到正确、高效的方式上来,师兄的提醒起到了至关重要的作用。不过,我回想了自己经历的整个过程,找到了拆解陷入恐惧陷阱的方法。
三、搬开“绊脚石”
第一,坚定信念。
这里的“坚定信念”并非空话,而是当自己确定做事的方法和路线之后,在没有明确证据指明当前的方式是错误的时候,一定要坚定信念,保持当前的做事方式(学习和成长当然包含在内)。拿这次经历来说:当确定直接阅读源代码是最快的学习方式之后,应该坚定信念,保持这种高效的学习方式——即使这个过程很痛苦!想要做成一件事情,就需要抓住其重点,集中精力搞定。而重点往往也是难点,攻克的过程就不可能舒服。如果只是按照自己的喜好和感受做出判断和选择的话,很容易走上“岔路”。
第二,接纳自己。
这四个字在近一年的时间里反复出现了不知多少次,但是我依然没有办法做好。耐心的丧失很大程度上源于对自己的不接纳。开始阅读源代码的时候,付出很多是事实,进展很慢也是事实。这是自己C++基础薄弱所导致的必然结果!我根本就没有必要担心。然而,因为自己并没有接受这个事实,所以慢慢失去了耐心。另外,如果自己保持专注和努力之后,就算最终进展很慢,那这也是我能给出的最好结果。即使在师兄看来我的进展很慢,这个结果也必须接受——更何况实际上师兄并未给我太大的压力。
第三,释放情绪。
无论是耐心还是注意力,在一段时间之内都会有一个上限。这一次我深深体会到,当自己的耐心和注意力消耗殆尽的时候,是没有办法让自己不产生负面情绪的。这个时候,与其去与情绪作斗争,不如选择放下当前手中正在做的事情,换一个新的场景,尽情地释放自己的情绪。剧烈运动、弹琴、激烈的游戏等等,都是不错的方式。当然,好的休息(睡眠)也是至关重要的。当我休息不好的时候,同样容易烦躁,那时候想要集中注意力无异于天方夜谭。
后记
这篇文章献给在编程道路上不断成长的自己,希望自己能够在学习、成长的过程中不断修炼,坚定信念、保持专注、接纳自己。