编程失败的天才
林一和我很久以前就认识了——我从五年级就认识他了。他是班上最聪明的孩子。如果每个人在家庭作业或考试准备方面需要帮助,他们都会去那里。
有趣的是,林一不是那种连续学习几个小时的孩子。
他的聪明才智似乎与生俱来,几乎毫不费力。他只需阅读或听到一个概念一次,就可以轻松地将其内化。
完成学业后,林一继续获得英国最负盛名的大学之一的奖学金。当我不久前和他交谈时,他告诉我他打算学习编程,因为他想成为一名软件工程师。
然而就在两个月后,林一告诉我他的计划发生了变化。他不再想成为一名软件工程师,因为编程“不适合他”。
当他告诉我这件事时,我大吃一惊。
班里的天才觉得编程太难了?
与此同时,我注意到许多在学校平均成绩为 C 的学生后来成为软件工程师、网络开发人员和数据科学家——这些职业需要大量的编程专业知识。
对我来说,越来越明显的是,在编程方面,有些特质比卓越的技能或智力更重要——比如毅力、心态改变和自信。
在这篇文章中,我将详细介绍我为帮助我成为一名更好的程序员而开发的两个重要特征。
这些生活方式和心态的改变帮助我从一名“有抱负的程序员”变成了一份需要我每天编码的数据科学工作。
1. 培养成长心态
2012年,斯坦福大学心理学家卡罗尔·德韦克(Carol Dweck)创造了“成长心态”一词。
德韦克解释说,本质上有两种心态——固定心态和成长心态。
假设你面临一个对你来说有点太难的问题——当你陷入困境时,你最初的反应是什么?
您是否感到焦虑,或者因为不够聪明而无法解决问题而想放弃?
或者……你觉得你还没有解决这个问题吗?只要多做一点准备,你最终就会到达那里。
如果你属于第一类,那么你就拥有德韦克所说的固定型思维模式。固定型思维模式的人相信天赋和智力等特质是与生俱来的。你要么拥有“它”,要么没有。
让我们回到林一的故事。
作为一个学得很快的人,一个不费吹灰之力就能取得好成绩的孩子,林一几乎没有犯过错误。
他是学校里的完美典范,经常被称赞有“聪明的头脑”并且比其他人都聪明。
那么……当这个人一生中第一次尝试学习编码并且最初遇到困难时,你认为发生了什么?
当他浏览网页寻找答案和陌生人时,互联网上随机的人都能编写他几乎看不懂的程序?
当他努力执行最基本的任务而不出错时?
我会告诉你发生了什么事。
林一进入战斗或逃跑模式。他很沮丧。他认为编程不适合他。
你看,林一体现了固定型思维模式。他在认可他的环境中茁壮成长,并在失败的前景中崩溃。
而在很长一段时间里,我也是这样。
当我第一次尝试学习编码时,我认为世界上有两种类型的人 - 适合编程的人和不适合编程的人。
事实证明我是对的。
然而,那些适合编程的人并不比你聪明或更有才华。
他们只是有能力接受从头开始学习如何编码是需要努力和耐心的事情。它不可能在一夜之间掌握。
换句话说,他们具有成长心态。
成长心态意味着你认为你的编程能力是可以通过努力培养的。当你未能学习一个概念或遇到错误时,你不会将这种失败视为描述自己的一种方式。
相反,您将其视为学习和成长的机会。
对于我们许多人来说,成长心态并不是天生的。
当我第一次开始学习编码时,我会遇到一些简单的问题,而我看到我的同伴在几分钟内就解决了这些问题。
这让我质疑自己的智力并怀疑自己在该领域的能力。
然而,随着时间的推移,我意识到编程与我们在学校教授的其他科目不同。
学习编码并不像为了考试而背诵教科书。您不可能花几周的时间来学习它并期望在完成课程后构建全栈应用程序。
这是一项永无止境的终生努力——一项需要一遍又一遍地重复的练习,你花在上面的每一个小时都收效甚微。
我喜欢把它想象成去健身房或骑自行车。在健身房进行一次锻炼后,您不会一夜之间就增肌。你需要每周出现并连续几天重复这个动作,直到你变得更好。
如果你跳过一次锻炼或一个月没有出现,你最终会失去进度并不得不重新开始。
将编程视为锻炼。
可能需要几个月的时间才能看到任何明显的进展迹象,但持续表现并专注于过程是改进的唯一方法。
2. 将编程变成日常习惯
既然我们已经确定一致性是学习编码时的关键,那么如何将其变成一种重复足够多次才能真正看到进步的习惯呢?
学习编码很困难。研究表明,作为人类,我们的大脑倾向于走捷径。
那么……你如何克服走阻力最小的道路的冲动,并说服自己每天都编码呢?
当然,当你有动力时,一开始就很容易坚持成为一名程序员的目标。困难的部分是,当你因为看不到明显的进展迹象而开始感到沮丧时,保持在正轨上。
James Clear 在他的畅销书《Atomic Habits》中提供的一个技巧帮助我让编程成为一种日常习惯。
詹姆斯·克利尔在这本书中指出,当你经常重复某件事并使其成为你日常生活的一部分时,习惯就会形成。
为了将任何行动变成日常习惯,他建议设定一个“执行意图”。”
实施意图
实施意图让你能够真正具体地了解你要做什么、什么时候做以及在哪里做。
例如,与其说“我要学习编程”,不如说“我要每天上午 11 点到下午 4 点在我家附近的咖啡馆编码”。
这一实施意图是我特有的,但您可以为自己创建一个类似的实施意图并遵循它。
像这样的实施意图将确保您将编码作为日常工作的一部分并坚持下去,即使是在您感觉不到的日子里。
我发现另一个有用的技巧称为“诱惑捆绑”。
诱惑捆绑
这是将你必须做的事情与你喜欢做的事情结合起来的行动,以便将其变成一种日常习惯。
例如,我们大多数人都觉得去健身房既困难又不愉快。然而,我们喜欢看 Netflix 和听音乐。
如果你将观看喜爱的电视节目的行为与每天晚上锻炼的任务结合起来,你可以欺骗你的大脑期待锻炼。
作为一个咖啡爱好者,只有在编程的时候我才会给自己一杯冰拿铁,这让我更加期待打开笔记本电脑写代码的动作。
这帮助我每天起床编码,最终将其变成了我逐渐喜欢的日常习惯。
要点
总而言之,学习编码是一项艰巨的任务,既耗时又需要大量的练习。
一开始可能没有什么回报,你投入的时间几乎没有什么回报。
然而,就像去健身房或骑自行车一样,你必须把它变成一种日常习惯。专注于过程而不是关注结果,随着时间的推移,你将不可避免地取得进步。