写给六个月前的自己。全文2725字,阅读时间约5分钟。

古人把弓箭当作教育器材,开发出修身治国的必修课,是因为拉弓的姿势和状态,可以分出武功与修养之高下。奥运会射箭冠军林东贤,视力只有0.1,却能射中70米外靶心,是因为拉弓时体态周正。

心正,才能身正。上个星期,你的心偏了。你盯着靶心,忘了体察气息的缓急、肩膀的松紧。你太关注他人的进度,却忘了无论学习哪种知识,万般变化都在自己身上。

每次代码运行失败,你便陷入焦虑。你把BUG当成障碍,一种延迟你实现目标,阻碍你证明自己的东西。你不断判断自己:我是不是不够聪明,我的学习方法是不是错了。而这种判断会重新引导并浪费你的精力。

为什么你心不正?因为你不如以前纯粹了。过去练拳时,你只想做好每个动作,有朝一日要一拳打死一头牛。

那时有人问:“打死一头牛又有什么意义呢?”你被问题难住,开始哲思起来。可是多年后你终于明白:你只是无法允许自己住在软弱的身体中,也无法抛弃体内巨大的潜能。

现在的你也一样,当你看到人们因为重复劳作而无法享受生命真正的宝藏——智慧、慈悲与美时,你便无法再忍受贫瘠的大脑和庸碌的生活。

你的初心是:你享受那种键盘变成画笔、变成触手、变成弓箭的感觉;你把所有的能量都投入其中,不在乎他人眼光。就像那些终生沉迷于心流的人一样,你要年复一年地追随内在动机:

「我认为自己从未坐下来自问,对现在的人生有什么打算?我只是一味向前,做自己想做的亊。」 — Limis Pauling(两次诺贝尔得主,于89岁时)

当然,光有内在动机和自我觉察是不够的,你还需要理解下面两个概念:

心理表征

下一次你责怪自己没有编程天赋时,请把自责的句子改成:我的心理表征还不够清晰。心理表征这个概念最初由西蒙着手研究,后来他的弟子在《刻意练习》这本书中反复重申「创建心理表征」的重要性。

它指的是:我们大脑在思考某个观点、某些信息时,所对应的心理结构(有时具体有时抽象)。小狗对你而言是详细、准确的心理表征,因为你不仅看到它,并且曾经抚摸它的皮毛,听过它无数动人的故事。

但导数就不是所有人都有的心理表征,现实生活中你很难看到它。而对数学家而言,导数是再基础、再清晰不过的概念了,他们可以举出一百个例子说明导数的应用。

因此心理表征的一个重要事实是:它们都是「行业或领域特定的」。福尔摩斯的心理表征是「记忆宫殿」,象棋选手的心理表征是棋子的走势和格局。然而这些心理表征都无法迁移到其他领域(高阶模型作为超级大牛开发出的心理表征,可以迁移到各个领域)。

在你建立一些编程的心理表征之后,你闭上眼睛都能回忆起许多行代码的细节,以及模块与模块之间的关系。而在以前,你看到那么多代码会立刻怀疑人生,认为程序员都是另一个宇宙来的。

为什么?因为所有的心理表征都有一个共同点:它可以帮助你突破「工作记忆」的局限,让你迅速处理大量信息。那些超级程序员在脑中建立了数量庞大、质量完美的心理表征,能更快更有效地解决问题。

曾有朋友谈到:优秀程序员能一眼看出BUG在哪里,并提出代码结构的优化方案。他们就像搏击运动员,看到对手肩膀微动的瞬间,就知道对手接下来的动作和将要出现的破绽,并用鬼魅般的速度全力反击。

心理表征的另一个特点是,它能帮助你既见树木,又见森林 。战神白起为将30多年,攻城70余座,杀敌百万人,一生不败。究其原因,是因为白起虽然出身秦国世家,但在成长时拒绝所有门路,从百夫长一级一级升到大将军。

白起走的路,似快实慢,他的目标不是尽快上位,而是熟悉军中每一个职位的行动细节。所以他的指挥精度高得惊人,每位战士都知道自己每个时辰要执行哪一个动作、会达成什么效果。作为将军,他对战局的理解又精准异常。白起「既见树木,又见森林」的视野背后,是他建立了无比精准的心理表征。

故此你在写代码时,也要像白起一样,建立精准的心理表征,让心理表征更精准的办法是:自己做自己的教练,敏锐察觉自己的错误。问具体的问题,给具体的解决方案。

谈到教练,我们再来看开学典礼时一个有趣的例子:教练们强烈建议我们参加MeetUp,而大妈却认为真正的MeetUp,就是自己与自己的对话。

他们谁说得对呢?一旦你理解了心理表征的概念就会知道,他们都对。完成任务之前,听大妈的建议,之后,听教练的建议。因为自问自答可以帮你形成初步的心理表征;看同学作业,听同学聊代码,会让你的心理表征更鲜活、更清晰。

所以我会先理解每一个知识点,但理解得不透或做不出作业时,再读大猫或者Shippo的作业,他们的作业有的用词生动,有的逻辑清晰。之后,崭新的心理表征就烙在了脑子里。

默认网络

你有没有注意到,读到这里,你开始紧张起来了,你发现你找到了学习的秘诀,你渴望下一次挑战的来临,你非常地....专注

而当你被任务卡得一筹莫展时,请学习「如何放松」。创造力研究专家曾提到过放松的3B方法:睡觉(bed)、洗澡(bath)、坐公交(bus)。

你这个混蛋真是太幸运了,刚好买了很舒服的被子和枕头,刚好宿舍澡堂可以每天泡热水澡,刚好你还办了张公交月卡。你甚至散步五分钟就能到海滩(没错,散步也是在放松中寻找创造力的办法)。

为什么你需要做这四件事?为什么康德每天啃书,却固定时间散步?因为大脑有两个系统,注意网络(Attention Mode)和默认网络(Default Mode Network)。创造心理表征时,你的思维像一束激光,处于注意网络;放松时,思维像开了散光模式的手电筒,处于默认网络。

默认网络和注意网络的活动相互拮抗(anticorrelation),但它们又存在结构连接。具体表现在:有些作家找不到灵感就去泡澡,泡着泡着就有灵感了。有些化学家想不明白化学结构了就睡个觉,睡着睡着就想明白了。

当你专心写代码时,你眼中只看到一行代码、一个模块,思维的格局很小;但当你放松下来,你的大脑会进入一个更大的格局,并在那个格局里像贪食蛇一样汲取灵感。

比如上个学期我修了太多学分,所以平均一天有一个报告要写,所以我会在去学校的公交上背单词,回宿舍的地铁上回想这一天学习了哪些知识。

如果到家了,我还想不到报告要怎么写,就会去散步去海边,看日落。我敢保证,这种诗意、闲散的姿态绝非做作,而是你活得更深沉、更投入的一种法门。

这个理论应用到编程上的具体建议是:拿到本周任务后,不要急着撸代码,而是放轻松,用一小时概览完成任务所需要的知识点。你可以称之为「预习」。这个行动会在大脑的「默认网络」中创造许多神经挂钩,方便你在「注意网络」中把具体的心理表征挂上去,这会帮助你轻松地掌握各种概念。

此外,当你做不出作业时,带着问题进入梦乡,或者进入澡堂。说不定就有结果了呢?当然,最棒的要属坐公交了,你可以看到窗外的风景,你可以去一个没有去过的地方,当你的五感都被调动起来,感受到生命有多可爱,一切都会迎刃而解。

最后,请保护好你的闲暇时光,它们是知识和灵感的农场。

本周我能给的建议就是这些了,接下来你会碰到更多挑战。不要怀疑自己的智力,不要痴迷于天花乱坠的编程方法论,你唯一要面对的,就是每一行代码。

results matching ""

    No results matching ""