程序员的有效学习策略

【编者的话】作为一名IT行业的软件程序员,凭借着他们对于编程的兴趣和热情,日复一日地重复着编程的工作。但是要想成为一名优秀的程序员,必须通过有效的学习提高编程的技能。但是如何进行有效地学习呢?最近,Allison Kaptur在新西兰举行的Kiwi PyCon会议上做了一个主题为“程序员的有效学习”的主题报告。在报告中,她谈到了关系程序员有效学习的两个方面,即对智力的认识以及程序员能够使用的特殊策略,作者将自己的发言用文字整理出来,本文主要是关于观念方面的内容。本文是一篇翻译稿,原文题目为“Effective Learning Strategies for Programmers”。

正文

九月初我在新西兰举行的Kiwi PyCon会议上做了一个主题为“程序员的有效学习”的主题报告。主要讲到了两个方面:一个是对智力的认识,一个是我们能够使用的特殊策略。下面的文章是根据报告内容进行编辑的,主要是关于观念方面的内容。如果你还关心策略方法的内容,还有相应的视频。

Recurse Center

在我去年加入Dropbox之前,我在位于纽约的Recurse Center公司工作了两年。Recurse Center对程序员来说就像写作者的一个隐居地。参加者花3个月的时间来了解对他们来说什么是最有趣的。因此,有人使用了十年的Java,来到RC之后却学习了一门新的语言,例如Clojure,或有人只有一个CS学位,却可能从事着Web开发的工作,或有人只是在业余时间学习编程,最后却学会了turbo-charge技术。在那里编程几乎是没有任何结构的,没有期限,没有任务,没有教学。对成年人来说,这是一项非结构化学习的实验。

作为一个推进者,我的角色是帮助人们最大限度地利用他们在RC所拥有的大量容易令人迷失的自由。从传统教育和传统职业中走出来的人们常常不知道该怎么做。所以我想帮助他们制定目标,也帮助他们最大限度地利用这段经历。其中我想到的事情之一是如何让程序员能够获得最有效的学习。今天,我在这里跟大家展开讨论。主要是我针对如何做一名高效的学习者所做的一些研究,以及如何将这些研究应用到程序员和工程师的日常工作中。

怎么跳出这个职位

花一分钟,好好想想你要如何跳出这个职位。你可能想学习新的东西,关于如何尽可能让你的工作变得有效和高效。你可能想听听如何能够成为一名更好的初级工程师的导师。或者你可能想听听你能如何在你的组织中做一些制度上的变革,来为所有的这些事情建立一个更好的环境。

所有这些都是有用的目标,下面我将会触及所有这些相关的方面。不过,我想让大家好好想想实现这些目标的策略。当我听到一些策略的时候,很多时候似乎很明显其他人也应该在关注它们,但事实上我们自己并不一定需要关注。只是由于别人的关注会让我们紧张。

重要通知:接下来InfoQ将会选择性地将部分优秀内容首发在微信公众号中,欢迎关注InfoQ微信公众号第一时间阅读精品内容。

程序员的有效学习策略_第1张图片

成长的观念:Carol Dweck

让我们来谈谈有效学习的第一个关键问题。关于人们如何思考智力,社会学家Carol Dweck已经做了很多有趣的研究。她发现,关于思考智力有两种不同的框架。首先,是所谓固定的观念,认为智力是一种固定的特质,它们中的大部分人们都无法改变。另外一种观点认为智力是不断成长的。在成长观念的观点中,人们认为智力是可延展的,并且可以经过努力提高。

Dweck发现,关于人的智力的理论,其是否拥有一个固定的或生长的观念,可以显著地影响他们选择工作任务的方式,他们应对挑战的方式,他们的认知能力,甚至是他们的诚实度。我将对她工作中几个有趣的结果进行介绍。

不同观念导致是否愿意付出努力

第一个有趣的结果是,不同的观念会影响人们对待努力的态度。如果你有一个固定的观念,你会相信人是否聪明是天生的,它们是不能真正改变的,同时你也容易认为,如果你擅长一些东西,它对你来说应该是很容易的,相反你不擅长的东西对你来说就很难。这是固定观念的视角。拥有成长观念的人认为,你需要付出努力,并辛苦工作,并努力去更好地掌握一些事情。

一些研究发现,带有固定观念的人可不愿意真正付出努力,因为他们认为如果一件事情他们应付起来很艰难,那表示这并不是他们所擅长的。Dweck指出,“如果每一项任务都需要非常努力,这将很难让你对自己的能力保持信心,你会对自己的智力产生质疑。”

“赞美是事与愿违”

第二个有趣的结果可能是最有名的。Dweck和她的合作者发现,微妙地给学生不同种类的好评会显著地影响他们的表现。

在这项研究中,Dweck和她的合作者给学生们一系列问题。第一组问题后,所有的学生都完成得挺不错。然后,一半的学生被告知,“哇,这些问题你做得非常好,你肯定很聪明。”而给另一半人的评价是,“哇,这些问题你做得非常好,你肯定工作得非常努力。”然后他们得到了第二组问题,更难,每个人都做得不好。最后,他们得到了第三组问题,跟第一组一样简单。

这里,他们正在为第一组学生创建一个固定的观念(你的表现说明你很聪明),并在第二组学生中建立一种的成长的观念(你的努力推动了你的成功)。

他们发现了一堆有趣的事情。在实验的第一个方面,在第一组和第二组问题之间,他们问学生们接下来想做一个简单的练习还是难的练习。Dweck等人想看看得到不同种类的好评的学生之间是否有差异。果然,有90%获得努力赞美的学生接下来选择了更难的题目,相比较而言,只有三分之一被赞美聪明的学生选择了更难的题目。被赞美努力的孩子对迎接挑战更感兴趣。

接下来他们感兴趣的是学生们是如何执行第三组问题的。他们发现,被赞美聪明的孩子做第三组题目的结果比做第一组题目时差很多,但被赞美努力的孩子反而做的有些进步。被赞美聪明的孩子在第二组问题中遇到困难时并不能很好地恢复过来,而被赞美努力的孩子却能够很快地恢复起来。

之后,他们继续这个研究,他们让学生给笔友写信,告诉他们自己取得的分数。他们发现,几乎一半被赞美聪明的学生对自己的分数撒了谎,而被赞美努力的学生中几乎没有是不诚实的。

因此,这里有三层含义:相比于有固定观念的学生,一个成长的观念让学生们更倾向于选择一个挑战,而不是选择容易的事情,更可能在经历挫折后重新振作起来,并且有更加诚实的表现。

这个地方吸引人的是,只是赞美上的细微差别就产生了非常不同的结果。通过只做一些你知道做的很好的、很容易的事情,并通过隐藏自己的表现不佳,被赞美聪明导致他们试图让所有事情保留着聪明的外表。而被赞美努力会导致人们试图让所有事情保留着努力工作的外表,知道最好的方法就是努力地工作。

应对混乱

另一项研究调查了当学生遇到暂时的困惑时,会发生什么。Dweck和她的合作者给小学生设计了一个短期心理课程。课程是一本心理学的小册子,以及之后的一个测试。部分小册子中有一些混乱的片段。混乱的部分并不在测试中,如果学生完全忽略这些混乱的部分也可以掌握这些材料。研究人员想看看学生们是否能从这些小册子的干扰中恢复出来。

他们发现,70%有成长观念的学生掌握了材料,而不管册子里面是否有混乱的部分。而有固定观念的学生,如果他们读到的这本小册子里没有混乱的部分,约70%的人掌握了材料。但是,如果他们读到的这本小册子里有混乱的部分,那么掌握率会下降到30%。有固定观念的学生从混乱中恢复的能力很糟糕。

“对于我们大部分人期待成为的那类人,如何能够描述他们的本性呢?因为我们认为他们是好的,所以我们希望成为他们那类人,但他们真的是好的吗?”

我把关于混乱的这一章放了进来,因为这真的契合了我。如果问,在开始使用一个工具之前先阅读说明文档的人请举手(差不多100%的人会举手)。你让领域专家针对初学者编写文档或者过期文档,是经常发生的。对程序员来说,pass掉这类混乱并成功地留住我们所读文档的剩余有效信息是一项关键技能。

程序员需要一个成长的观念

程序员需要一个成长的观念!程序员的关键技术,比如对混乱的反应,从挫折中的恢复,承担新挑战的意愿,所有这些在成长的观念下都会变得容易,而在固定的观念下却更加困难。

有谁相信一个固定的观念?

有时候当人们谈到有这种固定观念的人的时候,会觉得他像一个稻草人。高科技领域的人也这样认为吗?我绝对认为固定的观念是普遍的。下面是几个例子。

10倍工程师

先从10倍工程师的想法开始。它的意思是一些工程师的效率是其他人的数倍。这种想法召来了很多的批评,但是我们暂且将批评放在一边。如果你相信10倍工程师的想法,你是否认为他们天生就是超级有效的工程师呢?
我常常认为这是一种常见的场景,10倍工程师是建立在一个高台上,因为其他人根本成为不了。很多时候,这是从固定观念出发的。

英雄崇拜

我们看到固定观念的另一个例子是英雄崇拜。Julie Pagano在PyCon 2014上做了一个关于冒名顶替的报告,她对于打击冒名顶替的其中一条建议是“杀死你的英雄”。不要把其他程序员放在高台上,不要说“那个人跟我如此不同”。如果你心中有编程的英雄,你会认为他们与你完全不同吗?你能变得更像你欣赏那种人吗?如果你不这么认为,这就是固定观念的一些证据。

所以,我要说yes,一个固定的观念在科技行业内非常普遍。

你可以改变一个固定的观念吗?当然是yes

到现在希望你已经确信成长的观念比固定的观念要好。所以,接下来的问题是:这是可延展的吗?你可以开始有一个固定的观念,然后把它变成一个成长的观念吗?答案当然是yes,你绝对可以将一个固定的观念改变为一种成长的观念。

事实上,在Dweck的许多研究中,他们常常是以微妙的方式,实验性地诱导出一种固定的或生长的观念。赞美的研究是一个例子:赞美的一句话改变了学生的行为。在其他研究中,他们让学生读一个关于名人成功的段落,并在最后说到:“因为他们很努力”或“因为他们有很好的DNA”。这绝对是一个延展性的事情。

那么,你如何改变一个固定的观念呢?主要面临的挑战是如何实际上识别这种固定观念,一旦你听到自己说这种话,“我从来没有学习物理”,这已经很明显地表明你可能有一个固定的观念。但其他很多时候,很难深挖这种固定的观念。事实上,存在一对标识,你可以用它来确定固定的观念,从而将它们根除。

如何识别一种固定观念?

“我是 ..”

“有些人只是......”

如果你担心你的观念已经固定了,你应该经常听到这些句子。比如像“我是从来都不擅长CSS的”,或“我是一个不善交际的人”,或“有些程序员仅仅比别人快”。任何以“我是...” 开头的话都代表存在固定心态的可能。话里出现“仅仅”也经常代表一种暗示。

反过来讲,说一句“我是”,显然也不能完全代表一种固定观念。事实上,这里的关键是当发出这样的语句时将是一个警告的信号,这时就要注意到它们,然后检查你的观念。

如何改变一个固定的观念?

重构赞美和成功

好了,一旦你确定了一个固定的观念,你应该怎么去改变它?这里有四个策略。

首先是重构赞美和成功。通过重构赞美,我的意思是,当你得到错误类型的赞美时,把他们变为成长观念的赞美。所以,如果有人说“哇,你在该项目中表现非常出色,你太聪明了” ,把它翻译为“是的,太棒了,我在这个项目中真的很努力” 。你不一定要将它们大声说出来!但这种重构会让你自己通过寻求挑战和付出努力而重新获得成功。

您还可以使用同样的技术来取得成绩。当事情顺利的时候,不要以为,“理所应当,因为我很棒所以事情很顺利”。反而应该这样想,“我在该项目中用了一个有效的策略!我应该经常这样做”。

重构失败

当然,上述情况的另一面也很有效。一个固定的或成长的观念中,很大一部分是如何面对失败。当你面对挫折或没有得到自己想要的东西的时候,你会对自己说什么?如果你说,“也许我不适合干这项工作”,这将是一个危险的信号。相反,问问你从你的失败中学到了什么,或你将用怎样的策略来代替它。这听起来俗气,但它确实有效。

庆祝挑战

你可以用来改变一个固定观念的第三种方式是庆祝挑战。当你不得不挣扎的时候,你会做出怎样的回应?尝试好好庆祝一下。这是我还在Recurse Center时就一直坚持的东西。有人在我旁边坐下来,对我说,“哎,我遇到了一个奇怪的Python错误”,我会说:“真棒,我爱奇怪的Python错误”。首先,这绝对是真实的,如果你有一个奇怪的Python错误,让我们来讨论怎么解决它,但更重要的是,它在对参与者强调,在他们努力获得成就的地方发现了一些东西,对他们最终取得成功是一件好事。

正如我所提到的,在Recurse Center,没有期限,没有任务,所以这种环境非常自由。我会说,“你得花一天解决这个奇怪的错误,那是多么令人兴奋”。如今,在Dropbox,我们要生产产品,有期限,有用户,我并不总能高兴地花一天时间到奇怪的错误上。所以我很同情那些有期限的世界。然而,如果我有一个错误要修复,我必须解决它,抱怨错误的存在并不会帮助我更快地解决它。我认为,即使在世界上最后期限迫在眉睫的地方,你仍然可以采用这种庆祝挑战的态度。

询问过程

改变一个固定观念的最后一个策略是询问过程。像你们许多人一样,我与很多优秀的工程师一起工作。有时候,我会尽力解决一个棘手的错误,却解决不了,然后其中一人就能立刻帮我解决。在这种情况下,我会自觉地问他们是如何做到的。特别是当我在Dropbox还是新人的时候,问题的答案都是非常有启发性的。有时,信息都来自我所不知道的一个来源。现在,我在Dropbox工作的时间越长,越体会到询问带来的通常是一个技术或策略上差异,或者是关于为什么我的策略还没有成功的一个细节。

这是一个更加有用的策略,从长远来看,不是说“哦,当然,这个人得到一个错误因为他们是怪胎” 。

信心与冒名顶替综合症

围绕冒名顶替的讨论,Dweck的研究非常有趣。冒名顶替综合症是一种感觉,即你是一名分分钟就能被发现的不合格的骗子。如果你曾经在工作中觉察到冒名顶替综合症,请举起手来[房间里80%的人会举手],是啊,这是很多的你,我也一样。然而它是如此的痛苦,这对你的职业生涯非常糟糕,因为如果你担心你已经对已有的工作感觉到疲惫,你不太可能冒险或去寻找新的机会。

对冒名顶替综合症提出的解决方案往往以信心为中心。就像,“哦,如果你觉得你不能胜任你已有的工作,你应该更加自信,然后你会没事的”。这有时就是这么简单,“不要有这样的感觉”,因为这作为建议并不会非常有帮助。但是,即使这非常细微,的确我们会不可避免地关注信心和过去的成就。

信心不会帮助你应对挑战

Henderson & Dweck, 1990

但这是关键。Dweck的研究表明,信心并不能在你应对新的挑战,或从挫折中恢复时帮助预测能否成功。

Henderson和Dweck做了一个美国学生的研究,从小学到初中,当他们年龄还很小时,他们让学生评估他们自己的信心,他们还测量学生是固定的还是成长的观念。然后,他们跟踪学生初中时的学习成绩。

他们发现,有固定观念的、自信的学生在学业上遭受到了挫折。相比之下,不管自信心是高还是低,成长观念的学生都易于在学业上取得成功。自信并不是成功的预言者。

现在,还有很多其他的研究显示信心与成功是相关的。Dweck认为,自信是一个好的预测器,可以帮助预测你能将正在做的事情做得多好,但是并不能帮助预测你能将新的挑战应付的多好,也不是你如何看待失败的预测器。

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

所以,过去的成功并不能预测你是否能应对新的挫折和失败,你的自信心也不能预测你是否能应对失败。能够很好地预测面对失败时的应变能力代表了一个成长的观念。

打破束缚

这非常令我感到兴奋,并且我认为对各种冒名顶替综合症的讨论还不够多。基本上,如果你持有一种固定观念,当你不得不拼一把的时候,你会真的感受到压力和恐惧。我们是程序员,所以大部分时候都在战斗,对吧?是一直在战斗。拥有成长的观念,你可以享受这种战斗,享受你正在努力攻克的难题。这为我们打击冒名顶替综合症提供了一个新的、更有效的框架。

你猜怎么着?当由于一个棘手的错误,你的身份正在受到威胁的时候,专注于错误就更容易。你不会担心会感到疲劳,并且是一个骗局,这样你就可以腾出这些认知资源,专注于手头的任务。

因此,如果你相信,例如,“有些人只是不善于编程”,你可能花大量的时间和精力去寻找证据,进行验证和确认。相反,可以颠覆这个框架。打破那种天赋是一成不变的想法,想象每个人通过努力都可以提高自己的技能。

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

有一个成长的观念会让你在面对失败时更有弹性,会让你付出努力更加容易,会让你更能应对挑战,这些对程序员都非常有用。

如果你想更深入了解这些研究的细节,可以同时看看我今天没有时间提到的一些调查结果,我强烈推荐Dweck的一本书,名字叫Self-theories。Self-theories是一本短文集,概括了她的研究中的许多重要的观点。普通读者也可以从中获得这些研究的很多细节。她还有一本叫Mindset书,主要是写给普通的读者,但如果你想多了解一些具体研究的细微差别和细节,Self-theories才正好合适。

问&答环节

问:有没有任何在团队级别进行成长和固定观念的研究,团队该如何开展这些问题的研究?

答:我不太清楚,但这是一个有趣的问题。如果有,我很乐意看到这些研究。

问:我读过Mindset,我是一对双胞胎女儿的父亲。我发现这些策略确实帮助提高了他们的韧性以及他们解决问题的能力。

答:是的,这项研究是可怕的。就像,你告诉你的孩子,他们很聪明?你似乎感觉正在毁掉他们!报告中我没有机会谈论这个,但书中有一些关于性别差异的研究,发现成绩优异的女孩更有可能有一个固定的观念,当她们遇到一些很难的事情时,不太可能去冒风险。

问:这是二元的,还是灰度的?

答:我认为它可能是一个频谱。此研究可以被划分为一个二元模型。我不能准确地肯定在哪进行划线。而一些对固定或成长观念进行实验诱导的案例中,如果有人是一种观念,然后往另一种观念诱导,他们可能会最终停留在一个中间的位置。

问:是否有可能在一个领域是一种固定观念,而在另一个领域是一种成长观念?

答:绝对可能。对程序员,编程时是成长的观念,而在社交技能方面却是固定观念,这种情况非常普遍。

问(从一名CS讲师):对于我们的新同学,有没有一种方法可以让他们建立一种成长的观念?很多在学校的人都有一个固定的观念,这可以在那些早期的课程中被打破吗。

答:如果您是一名讲师或有机会站在观众席前面,你可以明确地说:“编程是一门技能,你可以通过努力提高它,”即使它听起来不是很有说服力,但研究表明说与不说确实有差别。

另一件真正有趣的事是一项关于价值的练习的研究。基本想法是,如果你确定作为一名程序员,而你的程序员身份受到质疑,这是非常痛苦和艰难的。但如果你有体现自己价值的其他方面的东西,那么这会减轻这个质疑。对于那些在技术上被边缘化的人来说,结果真的是悲剧。有关详细信息,请参阅Leigh Honeywell的(worksheet)[https://github.com/hypatia/virtuoso/]。

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

答:我不会以那种方式刻画,部分原因是我觉得这两种东西都不能单独代表一个个体。你的观念是你在很大程度上可以控制的事情。这就是为什么我认为从我们自己的情况出发思考这些研究如此重要,不仅仅是我们的孩子或学生。

问:在编程中人们容易想到很多方法来应用这些,但你可以多谈谈在社交场合如何应用这些吗?

答:当然可以。在Self-theories所涵盖的研究中,Dweck让孩子们写信申请加入笔友俱乐部(这是一个真正的笔友俱乐部)。然而,所有的孩子都被笔友俱乐部拒绝了[观众笑]。在写这封信之前,他们会告诉一半的孩子,“这是看你有多么善于交朋友”,而告诉另一半孩子“这是一个实践以及提高你的交友方式的机会”。获得固定观念建议的孩子有时写了同样的信,或者有时写了一封更短、不太详细的信。获得成长观念建议的孩子们更容易写更长的事情,会更加主动,即使是给一个笔友写的第一封信,也会说:“哦,我喜欢和你说话”。是啊,在这整本书中,Dweck和她的合作者都非常小心,以免让学生们受到任何精神创伤,不要让他们认为自己很愚蠢或不善于交朋友。

如果你对社交场合的特定策略感兴趣,我强烈推荐(Captain Awkward)[http://captainawkward.com/]的博客。Captain Awkward有关于社会挑战一些解释,如“我将去参加一个聚会,要跟三个人交谈,那么提供给我关于他们每个人的十点事情,并了解有关事实”。对于处理社交焦虑,在互联网上有很多有趣的东西,你使用与否我觉得主要看你正在努力的事情。

有关评论

针对Allison Kaptur的报告,大量网友在Hacker News上展开了广泛讨论。有的用户表示关于提高成长观念的研究并不像人们期待的一样深刻,何况过多的关注成长观念的提高会容易导致人们精力分散,不能很好地专注于自己正在进行的工作。此外,很多网友表示了对成长观念的支持,他们认为人的智力水平是可以提高的,对很多事情,即使自己不擅长,也可以通过付诸努力而得到提高,相反现在的教育容易陷入固定观念的思维模式,一些学习成绩不够好的学生,容易被认为是自身就不擅长,所以容易导致放弃,他们认为应该多培养学生成长的观念。如果你也有自己的认识,不妨在下面留言评论。

你可能感兴趣的:(程序员的有效学习策略)