81

一年经验重复用十年?程序员如何高效学习?

 6 years ago
source link: http://www.10tiao.com/html/200/201806/2655442084/1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

(点击上方公众号,可快速关注)


作者:屈光辉

zilongshanren.com/blog/2017-05-09-learning-how-to-learn.html


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


当然,有些人会说自己经常加班,没有时间学习,这只是表象,时间挤挤总是有的。 你想想你为了上王者,浪费了多少时间?为了刷今日头条,又消磨了多少光阴?


另外,很多人推崇碎片化学习,但是有一些东西碎片化学习效率是很低的,比如数学。


这篇文章是我学习完 coursera 上面的《Learning How to Learn》MOOC加上我自己多年来的学习经验积累整理而来。


注:文中可能有一些内容思考没有很深入,另外一些观点可能还需要更多的时间去检验,读者请自行甄别。

 

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


3 小结


Coursera 的这门MOOC 《Learning How to Learn》 强烈推荐给每一伴热爱学习的小伙伴,也欢迎大家给我留言,分享你的学习感悟。



【关于作者】


屈光辉:游戏开发者。《Cocos2D 权威指南》的合著者,《游戏编程模式》译者之一。个人博客:子龙山人(zilongshanren.com)。


【关于投稿】


如果大家有原创好文投稿,请直接给公号发送留言。


① 留言格式:
【投稿】+《 文章标题》+ 文章链接

② 示例:
【投稿】
《不要自称是程序员,我十多年的 IT 职场总结》:http://blog.jobbole.com/94148/


③ 最后请附上您的个人简介哈~



关注「程序员的那些事」,不错过圈内事


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK