查看原文
其他

写给程序员的有效学习方法

(点击上方蓝字,快速关注我们)


译文:伯乐在线专栏作者 - 百焱 

英文:akaptur

如有好文章投稿,请点击 → 这里了解详情

如需转载,发送「转载」二字查看说明


在 9 月新西兰的 Kiwi PyCon (一个关于 Python 语言的年度例行研讨会)研讨会中,我就提出了针对程序员的有效学习方法。演讲中主要提到了两个方面:一个是思维模式方面,一个是具体可用的学习方法。下文是那次演讲中关于思维模式的一个简单指南。如果你想了解学习方法方面的内容,这里有视频。


Recurse Center


在去年我加入Dropbox(美国一家云存储服务公司)之前,我在纽约一家叫Recurse Center的公司工作了两年。Recurse Center是一个针对程序员静修的社区,类似于作家的静修寓所。参与者在这里用三个月的时间来做他们最感兴趣的事情。因此一个做了十年java开发的人可能去Recurse Center学习一个新的语言,比如Clojure(Clojuer是一种在JVM平台运行的动态函数式编程语言)。或者有人刚刚毕业于计算机专业可能去那里学习Web开发技能。再者,有人只是业余学习编程,可能只是去那里充电。在那里编写程序几乎是没有组织计划的——没有交付期限,没有任务分配,也没有教学指导。是成人自学的一次体验。


我的角色相当于一个导师,帮助人们充分利用他们在Recurse Center因充分自由而感到迷茫的时间。受过传统教育或者从事过传统工作出来的人们经常不知道他们该做什么。因此我会帮助他们设立目标,帮助他们充分利用经验。我们考虑的最多的事情是对编程者来说如何尽可能有效地充分利用他们的学习经验。今天我将讲一些调研案例,涉及到如何成为一个高效的学习者以及作为程序员和工程师怎么将研究成果应用到们的日常生活中。


想从这篇文章中学到什么


花一分钟想想你想从这篇文章学到什么。你可能想要学到怎样尽可能有效地工作。你可能想知道怎样成为初级工程师的更好老师或指导者。或者你可能想知道怎么在组织中做出一些制度上的改变,为高效地工作创建一个更好的环境。


以上的这些都是有用的目标,我将在材料中提及相关内容。然而,我建议你仔细思考一下你自己大多的学习方法。当我听到这些学习方法的时候,经常是这些方法明显适用于其他人,但是对我来说并不适用。我稍后会详述这个观点。


成长型思维模式:Carol Dweck


让我们来讨论一下有效学习的第一个关键。社会学家 Carol Dweck 在关于人们怎样看待智力的问题上做了大量有趣的研究。她发现对于智力的看法主要有两种不同的看法。一种,她称为固定型思维模式。这种观点认为,智力是与生俱来、难以改变的资质。另一种是成长型思维模式。成长型思维模式的观点是:这些人相信智力是可塑的,可以通过努力来改善的。


(译注:Carol Dweck,美国心理学、社会心理学和发展心理学领域的杰出人格研究者)


Dweck发现,一个人对于智力的观点——固定型思维模式还是成长型思维模式,可以显著地影响一个人选择工作任务的方式、对于挑战的应对方式、一个人的认知表现,甚至一个人的诚信。让我们看一些Dweck有趣的的研究。


两种思维方式引起努力程度的不同


第一个有趣的研究结果就是,思维模式影响了人们对努力的观点。如果你是固定型思维模式的人,你相信人不是聪明的就是不聪明的,人们没办法真的改变这个事情。同时你相信如果你擅长某件事情,它对你来说就是容易的。如果某件事情对你来说是困难的,你就一定不擅长这件事。这是固定型思维模式人群的观点。成长型思维模式的人相信只要你在一件事情上付出勤奋的努力,你最终会变得擅长这件事。


一些研究发现固定型思维模式的人不愿付出真正的努力,因为他们觉得这样意味着他们不擅长他们正在努力的事情。Dweck备注道:“如果你每遇到需要付出努力的任务你就质疑自己的智力,很难保持你能力上的自信。”


“事与愿违的称赞”


最有名的大概是第二个有趣的研究的研究结果。Dweck团队发现,给学生们细微差别的称赞,显著地影响了他们的表现。


在这项研究中,Dweck团队给学生设置了一系列试题。第一套试题所有的学生都做得很好。他们称赞其中一半学生:“哇!你这些题做得非常好,你一定特别聪明!”。称赞另一半学生:“哇!你这些题做的非常好,你一定非常努力!”。接着他们做了第二套试题,这套题比第一套更难些,每个人都表现很差。然后他们做了第三套试题,第三套题像第一套题一样——又回到了简单的水平。


此时,A 组学生(被称赞聪明的学生)建立了固定型思维模式。B 组学生(被称赞努力的学生)建立了成长型思维模式。


他们发现这里有一堆有趣的事情。一个事情是:在做第一套题和做第二套题间,他们问学生,接下来他们想做更简单一点的练习还是更难一点的。(在实际练习中,每个人接下来拿到的都是更难的试题。)Dweck 想要看看获得不同称赞的学生是否会有不同的回应。果真如此,90%被称赞努力的学生选择接下来做更难的试题,对比之下,被称赞聪明的学生仅仅有三分之一的人选择更难的试题。被称赞努力的学生更喜欢挑战。


他们发现的第二件事情是在第三套试题中学生的表现。他们发现,A 组学生很明显地比他们做第一套试题时表现更差了。但 B 组学生比第一套试题做得稍稍好一点。A 组学生不能很好地从第二套试题的碰壁中恢复过来,而 B 组学生却可以很好地恢复。


此后,他们让学生给笔友写信讲这次研究:“我在学校中参加一个了研究项目,这是我得到的分数”。他们发现被称赞聪明的学生中,几乎有一半在讲述成绩时撒谎,但是被称赞努力的学生几乎没有一个不诚实的。


因此,这里有三个启示:成长型思维模式相对于固定型思维模式,使学生更愿意选择挑战而不是选择更简单的事情;在遇到挫折时更容易坚持;并且在表现中更加诚实。


这个研究最有趣的地方在于,两种称赞方式之间差别这么细微,导致的结果却天差地别。被称赞聪明导致他们想要保持聪明的表现,通过只做一些简单的、他们知道一定能表现好的事情来隐藏他们不好的表现。被称赞努力导致他们想要保持更努力的表现——最好的方式就是更加努力。


对干扰的反应


另一个研究考察了学生面对临时干扰的反应。Dweck团队给基础教育学校的学生设计了一个简短的心理学课程。这个课程是一个小册子附带一个小测验。有一些小册子有一个混乱的段落,另一些没有。混乱的部分没有设入测验,因此学生如果完全忽略掉混乱的地方就可以掌握重点。调查者想知道学生能否从混乱片段的晕头转向中恢复过来。


他们发现,不论有没有人遇到干扰段落,成长型思维模式的学生掌握了70%。而固定型思维模式的学生当中,没有遇到干扰段落的学生也掌握了70%,但是遇到干扰段落的学生仅掌握了30%。固定型思维模式的学生,在遇到干扰时恢复能力比成长型思维模式的人差些。


“怎么更好地解释人喜欢模仿别人习惯的本性?是因为这些人本身很优秀,我们想要变得像他们?还是我们想让这些人像我们?”


如果我参与其中,我希望拿到有干扰片段的册子,因为这个事情真的能引起我的共鸣。如果你曾经在使用一个新工具或者查看技术文档时有过类似情形或感觉请举手(大多数人会举手)。类似的事情时常发生——你拿到了某领域专家针对新手编撰的文档,或者冷门或有些其它的问题的文档。在我们阅读的文档中跳过困惑的地方,成功获取到剩余的信息是程序员至关重要的技能。


程序员需要一个成长型思维模式


程序员需要一个成长型思维模式!程序员的关键技能:像对干扰的反应、受挫后的恢复能力、对挑战的渴望,对成长型思维模式的人来说很容易应对,而对固定型思维模式的人来说却很难。


每个人都是固定型思维模式吗?


现在,有时当人们听到固定型思维模式的观点时,像一个稻草人一样(一脸懵逼)。比方说,技术公司的每个人都真的了解这个观点吗?我认为绝大部分人是固定型思维模式。这里有一些例子。


10倍效率的工程师


从「10倍效率工程师」的概念开始讲。「10倍效率工程师」指一些工程师比其他工程师的效率高出一个量级,「10倍效率」是对效率的一个定义。这个概念有很多争议,但是我们现在暂时把它们先放一边。如果你认同「10倍效率工程师」的概念,那么你认为「10倍效率工程师」天生就是一个超级高效的程序员吗?还是认同他们的效率也是逐渐增长的?


我认为,很多相关的流行概念中,「10倍效率工程师」的概念是建立在一个观点上的,比如“我们永远也没办法成为某些人”的观点。很明显这是一种接近固定型思维模式的观点。


英雄崇拜


另一个表明我们是固定型思维模式的证据就是英雄崇拜。因此Julie Pagano 在“PyCon 2014”大会做了关于“冒名顶替综合症(冒牌者综合症、骗子综合症等各种中文译法)”一个精彩的演讲,她的一个战胜冒名顶替综合症的建议就是“干掉你的偶像”。不要将其他程序员作为衡量你自身能力的标准,不要讲“这个人跟我有很大的不同”。借这个事情验证两种不同的思维模式也很有用。如果你有一个程序员偶像,你是不是认为他们跟你很不同?你是不是变得更像你崇拜的人?如果你不这么认为,这就是固定型思维模式的证据。


因此我承认,一个技术公司固定型思维模式确实很普遍。


你可以改变固定型思维模式吗?当然可以!


很值得庆幸,你们现在确信了成长型思维模式比固定型思维模式更好。因此接下来的问题是:这个是可以改变的?你可以从固定型思维模式转换为成长型思维模式?答案是:当然可以,你完全可以将固定型思维模式转变为成长型思维模式。


实际上,在Dweck的很多研究中,通过一些细微的方式诱导了成长型思维模式或固定型思维模式。“称赞”研究就是一个例子:一句称赞改变了一个学生的行为。在其他研究中,他们让学生阅读了一段某著名人物的成功事迹,在文章末尾写“因为他们工作很努力”或“因为他们优异的基因决定的”。所以这完全是一个可改变的事情。


因此怎么改变固定型思维模式?有时,挑战实际上可以用来识别固定型思维模式,一旦你听到自己说“我从来不学物理学”,这已经明显是错误的思维。但是有时,很难根除固定型思维模式。因此你可以用一些小旗来识别固定型思维模式从而根除它。


怎么识别固定型思维模式?


如果你担心你是固定型思维模式,你应该留意以这些关键词开始的句子。像“我从来不擅长CSS”、“我不是一个受欢迎的人”或“一些程序员就是比别人学得要快”。以“我是……”开头的句子就是“嫌疑句”。关键词“就是”也经常出现在此类句子中。


现在,显然你不是不可以讲带有关键词“我是”的句子,这不是固定型思维模式的标识。而是将这些句子作为你提醒自己的一个黄色小旗,紧密地提示并检查你的固定型思维模式。


只是说句题外话,“我不是一个受欢迎的人”是某个研究的案例——Dweck团队做了一个关于交际和社交情境的研究,这个研究也有所保留。(详情请看问答环节)


怎么改变固定型思维模式?


好,一旦你被识别为固定型思维模式,你怎么改变它?这里有四个方法。


①对称赞和成功进行认知转换


第一,对称赞和成功进行认知转换。转换对称赞的认知,我的意思是当你获得错误方式的称赞时,将它们转换为有利成长型思维模式的称赞。因此如果有人说“哇,你的工作做得真好,你太聪明了!”,你可以将它转换为“耶!太好了,我在这个项目中真努力!”。你没必要大声地喊出来!但是认知转换能让你提高寻求挑战和付出努力的主动性!


你可以在成功或成就中采用相同的方式。当一些事情进行的顺利的时候,不要觉得“当然会做的很好因为我聪明啊”,而是想“我在这个项目中采用了一个有效的方法!我应该更多地去应用这个方法”。


②转换对失败的认知


当然这个方法的另一面也非常有效。固定型思维模式和成长型思维模式的很大一部分是你怎样应对失败。当你面对挫折或者没有得到你想要的结果时,你的内心戏是怎么样的?如果你觉得“可能我确实不适合这份工作”,这时应该用红色小旗做标识。与此相反,你应该问问你从你的失败中得到了什么或者哪种学习方式你需要改变。这个方法听起来很平常,但是真的很有用。


③为挑战庆幸


第三,为挑战庆幸。当你必须竞争的时候你是什么样的反应?试着为此感到庆幸。这是我在Recurse Center工作时始终坚持的习惯。一些人会坐在我旁边说:“我遇到一个奇葩的Python bug(叹气)”。 我说:“太好了,我就喜欢奇葩的python bugs!”。首先,让我们来说说,有一点是清楚的——当你遇到一个奇葩的bug,相对于bug本身更重要的是,这说明你找到了一些可以通过努力获得成就感的事情,这些事情是你可遇不可求的。


像我提到的一样,在Recurse Center没有交付日期,没有任务分配,因此这种心态是无需付出任何代价的。我一般会说“你可以花一天时间在Flask(python的一个框架)上追踪这个bug,多好啊!”现在,在Dropbox(一种云存储服务)上,我们有一个产品要开发,有交付日期和相应用户。我不能总是一味地为花一天时间来为追踪bug感到高兴。因此,我对身处有交付日期的现实中的人们深感同情。然而,如果我必须修复一个漏洞,我承认bug的存在不利于我对漏洞的修复。但是在没有交付日期的情况下,你仍然可以采用我的态度。


④关注过程


第四,关注过程。跟很多人一样,我同一些优秀的工程师一起工作。有时,我会试着用不合理的方式修复一些棘手的bug,但是有些人能够以正确的方式修复。在这种情况下,我会习惯性地问他们怎么做到的。尤其当我刚用Dropbox的时候,他们的回答会很有启发性。有时,他们回答的一些信息来自于我根本不知道的知识中。现在,我在这里待得久了,经常看到和别人技术和方法上的不同,或者发现一些自己的方式之所以不能成功的细节。


这种方法对于总是觉得:“这个人能解决这个bug一定是个天才!”的一类人,是长期最有效的。


自信和冒名顶替综合症


Dweck关于冒名顶替综合症的研究是非常有趣的,冒名顶替综合症是一种总觉得自己是一个见不得人的无能骗子,可能随时被揭穿。如果你曾经在你的职场中有过这种感觉,请举手(80%的人会举手)。你们很多人会这样,我也很清楚地有过这种感觉。这种感觉太不爽了!很痛苦,而且非常不利于你的职业发展,因为如果你总在担心失去已有的工作,你不大可能去冒险或者寻找成长的机会。


对冒名顶替综合症的解决建议是保持信心。比如,“如果你觉得在工作中表现不合格,你应该更加自信,这样你的状况就会好起来”。这个建议有时就像建议你“不要有这样的感觉”一样草率而无用。即使这个方法的效果甚微,但是它会让你将精力集中在自信心和过去的成就上面。


自信不能帮你应对挑战


但是这是关键。Dweck的研究表明,在你应对新的挑战的和你从挫折中恢复的时候,自信不能预测你的成功。


Henderson和Dweck对从基础教育中学升入大学的学生做了一个研究。他们叫低年级的学生对自身的自信程度进行自我评定,同时测试了这些学生是固定型思维模式还是成长型思维模式。接着对这些学生的学习表现保持追踪直到他们升入高年级。


他们发现,固定型思维模式的较自信的学生在学习上遭受到了挫折。对比之下,成长型思维模式的学生的学习情况更乐观。不论他们自信程度高还是低,自信不能有效地预测成功。


现在,有很多其他调查显示自信和成功是有关联的。Dweck坚持认为自信可以很好地预测你做过的事情能够做得多好,但是不能预测你对于新挑战的反应和你对失败的感受。


第二个相关点是,Dweck发现,成功的经历也不能影响你对挑战和失败的反应。


因此过去的成功不能预测你对新的挫折和失败的反应,你的信心水平也不能预测这些,能够很好地预测你面对失败的恢复能力的是成长型思维模式。


打破束缚


我接触到的关于冒名顶替综合症的探讨很少,因此这个事情让我感到很兴奋。这给了我们一个新的更有用的方法去战胜冒名顶替综合症。基本上,如果你是固定型思维模式,你会感到非常有压力,每时每刻你都对竞争充满了恐惧。如果你有成长型思维模式,你可以享受竞争,享受去做棘手的事情。


你猜怎么着了?当你的身份不被棘手的问题威胁到的时候,专注于问题本身还是很容易的。你不必担心被开除,不必处在欺骗中,因此你可以轻松地运用资源,专注于手头的任务。


因此再讲一次:如果你相信“一些人不适合编程”,你需要花费大量时间和精力,费力去找到证据确认、确保你是能做到的人之一。因此要反过来颠覆这个观点,打破传统的天才观,转变为每个人都可以通过努力来增强他们的技能的观念。


《Self-theories》:在动机、个性和发展中的作用


成长型思维模式使你面对失败更有恢复能力,很容易去付出努力,使你更容易接受挑战,这些都对程序员非常有用。


如果你想要探究这个研究中的更多细节,可以去看一些调查结果,我今天没有时间面面俱到了,我强烈推荐一本Dweck写的书,叫《Self-theories》是一些随笔文集,总结了很多作者研究的要点。里面提到了研究的细节,但是都是一些通俗易懂的内容。同时她有一本书叫《Mindset》写给需要科普的观众,但是如果你想看到更细节的内容,《Self-Thieories》是更好的选择。


问答环节


问:有关于成长型思维模式和固定型思维模式针对团队的调研吗?团队是怎么处理问题的?


答:我还没听说过,但是这是一个有趣的问题。我很乐意看到这样的调研。


 


问:我读过《Mindset》,我是一对双胞胎女儿的父亲。我发现这些方法确实可以改变她们的恢复能力和她们解决问题的方式。


答:是的,这项研究是有点可怕的。就像,你是不是告诉你的孩子他们很聪明?你这是在害她们!我没有机会讲这些,但是这本书里有一些关于性别差异的调研,发现高目标的女孩更倾向于有固定型思维模式,在未来中她们遇到困难的时候更不愿意冒险。在场的女性大概都是这样的。


 


问:这个研究的结论是非黑即白的,还是存在一定的灰度?


答:我认为它可能是一个频谱。这项研究可以被规为一个二元模型的类别。我也不能准确地确定在哪里划分。在实验中固定型思维模式和成长型思维模式的反馈结果表明一些情况:一个人有一种思维模式,但是也有另外一种思维方式的反应,这两种思维模式平衡在某个范围内。


 


问:有没有可能一个人在某些领域是固定型思维模式,另一些领域是成长型思维模式?


答:绝对有可能。在程序员中在编程中是成长型思维模式,但是在社交技能方面是固定型思维模式是很普遍的。


问(来自计算机科学讲师/助教):对于我们的新生来说,有让学生建立成长型思维模式的方法吗?很多学校出来的学生都是固定型思维模式,这不利于我们早期的授课。


答:如果你是一个讲师或者有机会站在听众面前,你可以明确地讲:“编程是一个通过努力就可以做得很好的技能”,即使这听起来没有说服力,研究显示它确实可以产生一些影响。


另一件特别有趣的事情是,一个关于价值的科研实验。实验显示让女性在进入一个有“成见威胁”的环境前详细写下她自己的价值所在,可以显著地提高她的表现。这个基本概念是,如果你作为一个程序员,你的程序员身份受到质疑,这是非常痛苦而且艰难的。但是如果你在其他的地方能体现出自己的价值,就会减轻质疑。这个研究结果对于在技术中被边缘化的人来说是非常激动人心的(这里并无意中伤任何人)。详情请看Leigh Honeywell的这个 工作表。


 


问:所以这是本质上又是先天与后天的问题,对吗?


答:我不这么定义它,在某种程度上,我觉得这两种思维模式都不能单独代表一个个体。你可以很大程度地控制你的思维模式。这就是为什么我认为从我们自身情况出发思考这些研究是非常重要的,而不仅仅是在我们的孩子或者学生身上。


 


问:在编程中可以想到很多方式来应用这些方法,但是你可以讲讲怎么在社交场合应用这些方法吗?


答:当然。这个研究在《Self-theories》中覆盖到了,Dweck让孩子们写信申请加入笔友俱乐部(是一个真实存在的笔友俱乐部——最终会促成笔友关系)。结果所有的孩子都被笔友俱乐部拒绝了。(观众笑)在写信之前,孩子们有一半被告知“这是考察你是否善于交际的时候”,另一半被告知“这是一个提高你交友能力的一次练习的机会。”被引导为固定型思维模式的孩子们的申请信有的写的一样,有的写得很简略。被引导为成长型思维模式的孩子们更喜欢写很长的内容,为了有更多机会被关注,会说“我非常喜欢跟你聊天”,即使这是第一次写信给笔友。(观众发出了同情的感叹)正本书中,Dweck团队都很小心不伤害到任何学生,不让他们觉得自己不善于交友。


如果你对社交的方法感兴趣,我强烈推荐你去看看Captain Awkward的博客。Captain Awkward有一些社交挑战的计划,比如“我将去参加一个聚会,主动同三个人聊天,每当我成功跟一个人交谈并了解他们的一些事情,我就奖励自己10分。”关于应对社交焦虑网上有很多有趣的方式,不管你有没有这方面的困惑都可以去试试。


感谢


感谢 Maggie Zhou、 Amy Hanlon、Alyssa Frazee 和Julia Evans对早前这个主题演讲的反馈。


感谢Sasha Laundy,她在《关于得到和给予帮助的PyCon演讲》中引导人们思考他们想要什么,感谢她鼓励我使用同样的的方式。


感谢Kiwi PyCon组织成员,尤其是Marek Kuzie,为我主持。


看完本文有收获?请转发分享给更多人

关注「程序员的那些事」,提升编程技能

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存