前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序员们必须在工作中不断的学习成长

程序员们必须在工作中不断的学习成长

作者头像
程序你好
发布2018-07-20 11:29:37
3460
发布2018-07-20 11:29:37
举报
文章被收录于专栏:程序你好程序你好

IT 行业是一个变化非常快的行业,它需要我们持续去学习新的知识和技能。 但是,工作以后,我们经常会发现自己学习的东西很少了,倒不是没有时间去学习, 而是学习的效率太低了。久而久之,就演变成『一年的工作经验,重复用十年』。

在9月初,我在新西兰的Kiwi PyCon上做了一个关于有效学习程序员的演讲。演讲有两部分:一是关于心态,一是关于我们可以使用的学习策略。

在我去年加入Dropbox之前,我在纽约的一家叫RecurseCenter的公司工作了两年。RecurseCenter就像是程序员们的隐居之所。参与者可以花3个月的时间做最感兴趣的事情。所以人已经连续十年可能会编写Java RC像Clojure学习一门新语言,或刚毕业的人拥有计算机科学学位,可能会在学习web开发技能。这个项目几乎没有任何规则——没有deadlines,没有任务分配,没有培训。这是一个针对成年人的非结构化学习的实验。

我作为一个促进者的角色是帮助人们充分利用他们在RC所拥有的那种令人困惑的自由。那些来自传统教育经历或传统工作的人往往不知道该怎么做。所以我会帮助他们设定目标,帮助他们充分利用这些经验。我们经常思考的一件事是如何让程序员获得最有效的学习经验。今天,我将谈谈如何成为一个有效的学习者的一些研究,以及我们作为程序员和工程师,如何将这些研究应用到我们的日常生活中。

成长心态:Carol Dweck

让我们谈谈有效学习的第一个关键。社会学家卡罗尔·德维克(Carol Dweck)做了大量有趣的研究,研究人们是如何看待智商的。她发现有两种不同的思维框架。第一种,她称之为固定心态,认为智商是一种固定的特质,人们几乎不能改变智商高底。另一种心态是成长心态。在成长的心态下,人们相信智商是可塑的,并且可以随着努力而提高。

德韦克发现,一个人的智力理论——无论他们是否持有固定的或增长的思维方式——会显著影响他们选择任务的方式,他们应对挑战的方式,他们的认知表现,甚至是他们的诚实。我将从她在这里的工作中得到一些最有趣的结果。

这些心态导致工作上的差异。

第一个有趣的结果是,这种框架影响了人们如何看待努力。如果你有一个固定心态——你相信人聪明或他们不,他们不能改变,那么你也倾向于认为,如果你擅长某事,这对你来说应该很容易,如果有困难你比你必须不擅长它。这是一个固定心态的观点。拥有成长心态的人认为,你需要努力工作,并努力在某件事上做得更好。

一些研究发现,有固定心态的人可能不愿意真正地努力,因为他们认为这意味着他们不擅长他们正在努力工作的东西。Dweck指出:“如果每次任务都需要努力,你的智力就会受到质疑。”

“赞美适得其反”

第二个有趣的结果可能是最有名的。德维克和她的合作者们发现,给学生细微的不同的表扬会对他们的表现产生很大的影响。

在这项研究中,Dweck和她的合作者给了一个学生一系列的问题。在第一组问题之后,所有的学生都做得很好。然后,一半的学生被告知:“哇,你在这些问题上做得很好——你一定很聪明。”而另一个“哇,你在这些问题上做得很好——你一定非常努力地工作。”然后他们又遇到了第二套问题,难度更大,每个人都做得不好。然后他们得到了第三组问题,就像第一组一样,回到更简单的水平。

在这里,他们在第一组学生(你的表现表明你很聪明)和第二组学生的成长心态(你的努力推动你的成功)创造了一个固定的心态。

他们从中发现了很多有趣的东西。实验的第一个方面是,在第一个和第二个问题之间,他们问学生,他们是否愿意做一个更简单的练习,或者一个更困难的练习。(在实践中,每个人都得到了下一个更难的设置。)Dweck等人想看看得到不同类型表扬的学生之间是否有区别。果然,有90%的学生都称赞了自己的努力,选择了更困难的一组问题,而只有三分之一的学生因为智力而受到表扬。受到表扬的孩子们对挑战更感兴趣。

他们研究的第二件事是学生在第三组问题上的表现。他们发现,那些因智力而受到表扬的学生在第三个问题上的表现要比第一组糟糕得多,但那些因努力而受到表扬的学生表现得稍好一些。获得智力表扬的学生在第二组问题上不能有效地恢复,而努力表扬的学生可能会反弹。

在这之后,他们让学生给笔友写信,说“我们在学校做了这项研究,这是我得到的分数。”他们发现,几乎有一半的学生对自己的分数撒了谎,而且几乎没有人因为努力工作而受到表扬,这是不诚实的。

因此,这里有三种含义:一种成长心态让学生更倾向于选择挑战而不是简单的事情,更有可能在挫折后坚持下去,更诚实地对待自己的表现,而学生则有固定的心态。

这其中最吸引人的地方在于它对表扬的细微差别。被告知你很聪明,会导致所有这些试图保持你的聪明,只做一些简单的事情,你知道你可以表现良好,并隐藏你的糟糕表现。别人告诉你,你努力工作,努力保持工作努力的样子,最好的办法就是努力工作。

应对困惑

另一项研究调查了学生们在面对一段短暂的困惑时所发生的事情。德韦克和她的合作者设计了一门关于心理学的短期课程给小学生。这门课是一本关于心理学的小册子,后面跟着一个小测验。有些书里面有令人困惑的段落,有些则没有。令人困惑的部分不在测试中,所以学生可以自己选择是否他们可以忽略令人困惑的部分。研究人员想要看看学生们是否能够从这本小册子中完全被迷惑的情况中恢复过来。

他们发现,拥有成长心态的学生在70%的时间里掌握了这些材料,而不管是否有令人困惑的段落。在有固定心态的学生中,如果他们阅读了没有令人困惑的文章的小册子,大约70%的学生掌握了材料。但是,那些遇到了令人困惑的段落的固定思维的学生,他们的掌握能力下降到了30%。有固定心态的学生在从困惑中恢复的时候很糟糕。

“一个人怎样才能最好地描述那些最会模仿别人的人的本性呢?”这些人是我们想要成为的人,因为他们很好,还是他们是我们想要被喜欢的人?”

我想写一段令人困惑的段落,因为这让我产生了共鸣。如果你已经开始使用一个新的工具,并使用这样的文档,请举手。大约100%的人举手。这是常有的事——你可以让领域专家为初学者编写文档,或者是过时的文档,或者其他一些问题。这对于程序员来说是一种非常重要的技能,能够克服这种混乱,并且能够成功地保留我们正在阅读的文档中的其他信息。

程序员需要一个成长的心态。

程序员需要一个成长的心态!对于程序员来说,关键的技能——比如应对困惑、从挫折中恢复、愿意接受新的挑战——都要容易得多,而且要有固定的心态。

有人相信固定的心态吗?

有时候,当人们听到这种固定心态的想法时,听起来就像一个稻草人。科技行业的人真的相信这一点吗?我认为完全固定的心态是一种普遍的信念。这里有几个例子。

英雄崇拜

我们看到的另一个例子是英雄崇拜。所以Julie Pagano在2014年的PyCon大会上做了一个关于impostor综合症的精彩演讲,她的一个建议是“杀死你的英雄”。不要把其他程序员放在台子上,不要说“那个人跟我太不一样了。如果你有编程英雄,你认为他们与你完全不同吗?你会变得更像你欣赏的那种人吗?如果你不这么认为,那就是一个固定心态的证据。

你能改变一个固定的心态吗?是的

希望你现在确信,成长的心态比固定的心态更适合你。所以下一个问题是:这是可塑的吗?你是否能以一种固定的心态,把它转变成一种成长的心态?答案是,是的,你绝对可以改变一个固定的思维模式。

事实上,在Dweck的许多研究中,他们通过实验诱导了一种固定的或增长的心态,通常以非常微妙的方式。表扬学习就是一个例子:一句话的表扬改变了学生的行为。在其他的研究中,他们让学生读一段关于一个名人成功的段落,最后说“因为他们工作非常努力,”或者“因为他们的DNA是这样的”。“这绝对是可塑的。

那么,你如何改变一个固定的心态呢?有时候,挑战主要在于确定固定的心态,一旦你听到自己说“我永远学不会物理”这句话已经很明显了,那可能不是真的。但有时很难根除这种固定心态。这里有一些标志可以用来识别固定的心态,这样你就可以将它们根除。

你如何确定一个固定的心态?

“我……”

“有些人就是……”

如果你在寻找思维定势的地方,你应该听这样的句子。比如“我从来都不擅长CSS”或者“我不是一个人”或者“有些程序员只是比其他人快。”任何以“我是……”开头的词都是候选人。“just”这个词经常出现。

现在,很明显,你可以用“我是”来表达,这不是固定心态的标志。相反,这里的重点是,把像这样的句子当作是你自己的一面黄旗,来通知你,然后更仔细地审视你的心态。

顺便提一下,“我不是一个人”这个例子是由研究支持的,Dweck和合作者做了一个关于交友和社交的研究,这项研究也在那里进行。

你如何改变一个固定的心态?

重塑表扬和成功

好的,一旦你确定了一个固定的心态,你该如何去改变它呢?这里有四个策略。

第一个是重塑赞美和成功。我的意思是,当你得到了错误的赞美,把它们转化成成长心态的赞美。所以如果有人说,“哇,这个项目很棒,你很聪明,”翻译成“是的,很棒,我在这个项目上非常努力。”“你不需要大声地把它弄出来!”但是,这种重构强化了你自己,你通过寻求挑战和努力来获得精通。

你也可以用同样的方法来获得成功和成就。当某件事进展顺利时,不要想,“那当然很好,因为我很了不起。”相反地,“我在那个项目上使用了一个有效的策略!”我应该经常这么做。

重新定义失败

当然,这种动态的另一面也很有效。一个固定的或成长的心态的很大一部分是你如何应对失败。当你面对挫折或得不到你想要的东西时,你的自我对话是什么?如果你说,“也许我根本不适合这份工作,”把它当作一面红旗。相反,问问你从失败的尝试中学到了什么,或者你可以用什么策略来代替。这听起来很俗气,但确实有效。

庆祝的挑战

第三种改变固定心态的方法是庆祝挑战。当你不得不挣扎时,你该如何回应?试着明确的庆祝。当我在递归中心的时候,这是我一直坚持的。有人会坐在我旁边说:“(叹气)我想我有一个奇怪的Python bug,”然后我会说,“太棒了,我喜欢奇怪的Python bug !”“首先,这绝对是真的,如果你有一个奇怪的Python错误,让我们来讨论,但更重要的是,它强调参与者发现他们挣扎一项成就,这是有意的,这对他们来说是一件好事做的那一天。

正如我提到的,在RC没有截止日期和任务,所以这种态度是非常自由的。我想说,“你可以花一天时间在瓶子里寻找这个奇怪的虫子,多么令人兴奋!”现在,在Dropbox上,我们有一个产品可以发货,还有最后期限和用户,我并不总是喜欢花一天时间在一个奇怪的bug上。因此,我同情世界上存在最后期限的现实。但是,如果我有一个bug要修复,我必须修复它,并且抱怨bug的存在不会帮助我更快地修复它。我认为即使是在一个截止日期迫近的世界里,你仍然可以运用这种态度。

询问过程

改变固定心态的最后一个策略是询问过程。像你们很多人一样,我和一些伟大的工程师一起工作。有时候,我会试着修复一个棘手的bug,并且不能,然后其中一个就能马上修复它。在这些情况下,我试着对他们如何做到这一点非常自律。特别是当我刚到Dropbox的时候,答案会很有启发性。有时候这些信息来自我不知道的来源。既然我已经在那里呆了更长时间,这通常是一种技术或策略上的差异,或者是为什么我的策略没有成功的细节。

从长远来看,这是一个非常有用的策略,而不是说“噢,当然,那个人得到了错误,因为他们是一个巫师。”

附文:

1 一些学习的坏习惯

1.1 被动反复阅读

通常编程新手在学习一个新东西的时候,喜欢买一本权威指南之类的书(大神或者同事推荐),比如「C++ Primer」和「Javascript 权威指南」。 而这样一本书,一般页数在700-1400页左右,要完整读完,在不求甚解的基础之上大概要花费好几个月甚至大半年时间。 别说是新手,就算是一个C++编程老手去读「Javascript 权威指南」这样的书也不可能在只阅读一遍之后就能理解。 这时,很多人会选择重复多次阅读。有人会从头开始重复阅读,也有人只挑不理解的章节来阅读。 我以前上大学那会儿就是这么干的,读了好多C++的书籍,其实自己编写的C++代码并不多,也没有做过大型的C++项目。 看了好多书,其实都是一知半解,效率很低。工作以后,这种学习方式更加不可取,因为你没有那么多时间这么干。

1.2 喜欢在书上划重点

很多人偏好纸质书,因为在看书的时候手感不错,另外,还可以在书上把喜欢的句子和重点的段落用彩色笔标注出来。 这样做除了给自己造成一种假象「书上的重点我都标出来了,所以我都掌握了」之外,其实并无多大益处。 我现在喜欢在电脑上面看PDF,可以边看边写代码。

读书的时候,还有一个误区,就是大脑被动地跟着作者的思路在走,如果是一本经典的书,你会每每被作者的真知灼见所震惊, 一种「于我心有戚戚焉」的感觉由然而生。如果作者的书写枯燥乏味,估计看几页你就丢到一边去了。在看书的时候,头脑中要 有自我意识,要感觉自己在跟作者对话,对于作者的观点不能一味全盘吸收,可以看一会儿,停下来,问几个为什么。

另外,我并不是说划重点是不好的,只是划重点的效率没有想像中的高。划重点有点像收集资料和网页链接,在你收集了一大堆PDF和视频教程之后, 你会得到一种满足,但是这并不代表你真正学到了东西,这个是要非常警惕的。

1.3 看书中代码示例认为自己就理解了,从不动手编程

这是新手学编程的大忌,不去动手写,不去跟编译器和开发环境做斗争,你永远不知道软件开发过程中的操蛋事情。

1.4 拖延

这个问题最大,也是影响N多人不去学习的理由。解决的办法只有一个,马上去做!一旦你开始去做了,你的大脑就不会排斥了。 你的计划再完美,你选的书籍再经典,你挑的视频水平再高,如果你不马上去看,去学,去动手实践,那永远也只是停留在空想的阶段。 成功学习的典范就是成功战胜拖延症的典范。

1.5 学习任何东西,只停留在编写「Hello World」的水平

这个是什么意思呢?不是说你真的只会写「Hello World」,而是说要跳出自己的舒适区,去尝试一些自己不了解的领域,去做一些超过自己能力范围的事情 。

1.6 喜欢加QQ群和微信群,美其名曰「技术交流」

这是国内技术圈的一大通病,可能刚开始会聊点技术,但是时间一长就水了。好好的技术群一秒钟就可能变成水群。 而且经常还有老司机冒然发车,此时马上有人冒出一句「留图不留种,菊花万人捅」。

我强烈建议大家不要过渡依赖Q群和微信群来学习技术或者解决问题,技术论坛,Stackoverflow 和 Github issue是你更好的去处。

1.7 天天熬夜打王者和LOL,睡眠严重不足

实践证明,睡眠不足,啥事也干不成,只想睡觉。有人会说我晚上不到那个点睡不着,我这里有一招。 拿着一本 Kindle,挑一本英文书,躺在床上看,半小时保管睡着。虽然说看书的效果不一定佳,但是催眠也是极好的。

1.8 工作中遇到模糊的问题不搞清楚,停留在面向 Google 编程

遇到问题,不假思索「百度」和「Google」,虽然现在80%的问题都可以找到解决方案,但是这样做对于自己并无多大益处。 找到解决方案之后,还要花几分钟时间探寻问题根源。可以查找背景资料,以便自己下次遇到同类型的问题时可以举一反三。

1.9 看几分钟书,敲几行代码就开始刷知乎和朋友圈

做事情不专注,注意力不能集中,这也是学习的大忌。可以利用番茄工作法,给自己一段时间专注于某件事情,这样可以极大地提高 自己的工作效率。

1.10 从不看书,所有问题的解决方案都从论坛,Q群和Google中来

认为看书效率太低,而且收益也不高,看书需要大量的时间,而且看完感觉也没太大的用,不如直接Google和Q群来得容易。 如果你真的这样想过,我只想说「小伙子,你思想很危险!」

2 一些学习的好习惯

2.1 与其反复阅读,不如经常回顾

与其一遍又一遍地阅读重复的书籍,编写同样的「Hello World」,不如有意识地总结回顾看过的书,学过的知识。 只需要每晚趟在床上的时候,回想一下今天都学到了什么?今天自己有进步一点点吗?

2.2 多做练习,多写代码,从错误中学习

看技术书籍要多写书中的代码,在初学阶段哪怕对着书本敲也没有什么问题。认真完成书中留的习题,在自己没有尽最大努力的情况下面不要去看答案。 不要怕犯错,每一次犯错都是自己进步的机会。不断地测试自己是最好的学习方法,不管是「刻意练习」还是「10000小时定律」,都要求我们通过不断地 实践来巩固我们的所学,从而让自己成为大师。

2.3 多总结问题的解决方案,多写可复用的代码,拒绝复制粘贴

每天把工作中遇到问题的解决方案总结一下,想想为什么要这么做,是什么导致了这个BUG,导致BUG的根本原因是什么。 是自己的逻辑混乱,粗心大意,还是程序框架太复杂?做需求的时候,要尽量避免复制粘贴,不要让代码里面有重复代码。 Don’t Repeat Yourself! Don’t Repeat Yourself! Don’t Repeat Yourself! 「重要的事情说三遍!」

2.4 对于自己想要学习的内容,制订一下计划,有节奏地学习

我是一个非常爱学习的人,但是有时候还是感觉学习不够高效。经常会由于一些突发情况把原本的学习计划打乱,导致学习效果打折扣。 因为学习一个东西最怕三天打渔,如果能够持续地学习一个东西,我可以把它学习地很好。这时候,我就得结合我自身的情况,选择一段最佳的 学习时间,在这段学习时间里我可以不被打扰,保持高度专注。比如每天早上6.30起床看一个小时书。

2.5 尝试使用不同的方式来解决一个问题

在遇到一个没有显而易见解决方案的问题时,你可能费了好大功夫想出一个方案,但是千万要记得,该方案不一定是最优的, 而且很大可能还存在一个更佳的方法。而这个方法只需要你退后一步,换个思路,或者与同事讨论一下就可以得出。 这也是我为什么非常喜欢别人 Review 我的代码的原因,因为别人能看到我代码中存在的不足。另外,有些时候,对现有的方案做一些 「微创新」也能使原本普通的方案变得不普通。

另外,习惯了面向对象,何不尝尝函数式编程?每年学习一门新的不同范式的编程语言,可以极大地开拓你的眼界,给你一些不一样的解题思路。

2.6 注意劳逸结合

多参加体育锻炼,多去户外走走,运动能够增强人的记忆力,并且有时候还能产生灵感。 如果身体不好,比如颈椎不好,下了班你就只想葛优躺了,因为你的本能告诉你,我不能再写代码了,会挂的。。。 想要成为大神,身体好是前提条件。有人30岁成为大神,我资质不好,我35岁成为大神总可以吧。 切莫在30岁的时候就把身体弄跨了,然后35岁转行了,永远失去了成长为大神的机会。

2.7 向别人解释你的知识,多与人讨论

多写博客,多分享自己的所学所思,这些对于学习者自身也是非常有益的。通过用别人能够理解的语言来解释你学到的东西, 本身就要求你对该知识充分理解。另外,很多人经常感叹「跟你讨论一下,我马上变得有思路了」,这其实就是交流的作用。

2.8 保持学习的专注

很多知识没有足够的专注力和足够多的时间是很难学好的,保持学习的专注尤其重要。 因为人的大脑在专注模式下面,神经细胞更活跃,你学的东西更容易从短期记忆变成中长期记忆。 而且在高度专注下面,你的解决问题的能力也会提高,原本看起来复杂的东西,在专注面前说不定就不是事了。

2.9 找到自己的短板并补足自己的短板

发现并找到自己的不足相对来说是比较容易的,但是要补齐短板就非常不易了。 因为人总是有畏难思想的,拖延症是怎么来的,就是你的大脑出于本能去做一些让自己分泌更多多巴胺的事情。 如果自己英语不好,就要下决心把英语攻克。如果自己数学不行,就要下死力气掌握数学。 补齐短板就像渡劫,越早渡劫,越快升仙。

2.10 给自己设计学习奖励

比如学好了 3D 数学,就给自己买一台顶配 MacBookPro 之类的。为什么游戏可以让你上瘾,因为它有反馈,有奖励机制。 学习数学是非常枯燥的,如果有了这个奖励机制,也许自己就更容易坚持了呢。

PS:这一点对于有家室的程序员有用,你想学好什么,要获得什么奖励,你可以当着你老婆的面立个FLAG

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序你好 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 一些学习的坏习惯
    • 1.1 被动反复阅读
      • 1.2 喜欢在书上划重点
        • 1.3 看书中代码示例认为自己就理解了,从不动手编程
          • 1.4 拖延
            • 1.5 学习任何东西,只停留在编写「Hello World」的水平
              • 1.6 喜欢加QQ群和微信群,美其名曰「技术交流」
                • 1.7 天天熬夜打王者和LOL,睡眠严重不足
                  • 1.8 工作中遇到模糊的问题不搞清楚,停留在面向 Google 编程
                    • 1.9 看几分钟书,敲几行代码就开始刷知乎和朋友圈
                      • 1.10 从不看书,所有问题的解决方案都从论坛,Q群和Google中来
                      • 2 一些学习的好习惯
                        • 2.1 与其反复阅读,不如经常回顾
                          • 2.2 多做练习,多写代码,从错误中学习
                            • 2.3 多总结问题的解决方案,多写可复用的代码,拒绝复制粘贴
                              • 2.4 对于自己想要学习的内容,制订一下计划,有节奏地学习
                                • 2.5 尝试使用不同的方式来解决一个问题
                                  • 2.6 注意劳逸结合
                                    • 2.7 向别人解释你的知识,多与人讨论
                                      • 2.8 保持学习的专注
                                        • 2.9 找到自己的短板并补足自己的短板
                                          • 2.10 给自己设计学习奖励
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档