今天下午公司开了IT大会,会议上讲到了学习的问题,大领导说他从大学开始到现在,保持学习的习惯已经有21年了,我看他分享的书单,各种类型的都有,数学通识、哲学、人文、管理、心理学、人际关系。其实总体说学习的话,还是要保持看书的习惯。我自己来说的话,也是从这两年才开始真的感受到主动学习的乐趣,才真的找到了为自己而不是为家人为前途为其他学习的动力。正如会上其他领导提到的,这件事的到来是需要一个契机的,我的契机就是,在两年前的一段人生阴暗期,各个方面都很不顺利的时候,读了一本书,《上帝掷骰子吗》,一般来说我都是在地铁的间隙看电子书,但当时我甚至牺牲上班午睡时间,下班时间以及周末时间将这本书看完了,并且短暂地忘却了工作上的不开心,家庭的烦恼,感情的不顺利,那时候只觉得自己很渺小,物理很伟大,那时觉得自己不能再这么平凡地颓废下去了,迫切地想要让自己更靠近伟大一点点,甚至动了考研的念头,其实不仅动了念头,我查了很多资料,报了中山大学的计算机专业,并且买了很多书和练习题,大概是突然多了一个目标让自己觉得好像远离掉了工作上的不开心,然而这种热情在我换了工作之后就荡然无存了,一百多的报名费就这样浪费了。
不过也不是一点改变都没有,在那之后我陷入了科普书的狂热中,疯狂找科普书来看,《从一到无穷大》《时间的秩序》《七堂极简物理课》《肠子的小心思》《费马大定理:一个困惑了世间智者358年的谜》《复杂》《GEB》都是我看过比较好的科普书,并且豆瓣评分很高的,其实很多书我都是在豆瓣找的,毕竟受众多的东西并且评分很高,大部分情况下都是优秀的作品,除了在粉圈之内不成立。当然我本身也是很爱看文学书的,当我觉得一本书不错的时候,一般有几个方面的原因,一是内容引人入胜,二是它能引起你极大的情感共鸣,当你觉得感同身受的时候,其实会让你思考以及对自己过去经历有更多的总结和感悟,三是改变或者教会你新的思考方法,一本好书总是能给你带来一些东西的,有时候甚至能改变以及重塑你的世界观,很多的情感都是由于你看待事情的角度不同。我记得有一阵子觉得人生异常灰暗的时候,《被讨厌的勇气》这本书给了我很多力量,并且教会了我很多,总之,从那时起我就开始保持看书的习惯,并且将其视为一种学习方法,现在想学技术我也会去豆瓣搜索高分的技术书,质量一般都很有保障。我甚至开始觉得自己浪费了大学四年以及毕业两年的学习时间,很多东西总觉得自己明白的太晚。
学习的渠道,除了看书,看纪录片对我来说也是一种学习。既能轻松看视频,又能学习到或者说认识到一些新的东西。我第一部主动看的应该是《但是还有书籍》,这部纪录片最近出了第二部,更新中,真的很不错,包括今天我在网上发现k8s居然也有一部纪录片《Kubernates:The Documentary》,已经在我的收藏夹里了,B站就能看。B站还有很多课程,我记得我看过一个复旦教授王德峰讲的一节课,非常生动有趣,并且有很多从未思考过的观点,里边关于《金刚经》以及他举的一些例子实在是幽默极了。看纪录片是我觉得最轻松的一种学习方式了,有的时候不一定能学到什么,但是会觉得和看剧的自己相比,更加没有浪费生命了一点。因为周末出去玩了我会觉得自己没有休息到,躺在家里看剧打游戏又觉得自己十分颓废,只有感受到自己在学习在进步才会觉得内心充满安全感,是的,当我觉得自己在荒废生命的时候,时常觉得非常不安,这也是我学习的原动力之一。
关于技术方面的学习,除了看书,看技术博客,看源码,最重要的还有做笔记,我感觉我每次对技术最有热情的时候就是我准备跳槽的时候,每当这时候我就会开始系统复习以及重新学习,在这当中我总能发现自己原来不懂的东西好像突然就看懂了,所以学习真的是需要“温故而知新”。因此你一定要做笔记,不然连温故的机会都没有,我也是面试的时候有时候回答不出的问题会回来查然后记下来,久而久之就形成了一个笔记,以后每次需要的时候都拿出来看就很方便,另外你也需要重新学习,并且去更新提炼你的笔记,并且现在有很多工具,比如我用的就是印象笔记,但我写的很粗糙,我有一次无意间看见一个男同事的印象笔记,写的格式漂亮极了,真的很气,但我真的不会,而且懒。
印象笔记有时候会发现自己之前的学习不过是背诵而已,背下spring ioc和aop原理,mvc原理,但是当你理解了之后,会发现好像不需要背了,顺着逻辑就能讲出来,所以说费曼学习法真的非常有用,核心就是你能将你掌握的东西用自己的话说出来,也就是“以教促学”。
费曼学习法所以做技术的人写技术文章还是非常有用的,当你新学了一个东西,最好写一个文章把你所学串成有脉络的东西,当你写的时候你就会发现,自己是不是真正理解了这个东西。比如前两天为了了解spring cloud stream3 函数式的新特性,我读了官方文档,中途我又觉得里边好多笔记,于是我打算整理成文章,边整理便发现自己这也不懂那也不懂,这里面涉及到了spring cloud function,projectReactor,这两个又是另外两个大学问,于是只能硬着头皮继续看,文章一时半会也是写不出来了。
另外在工作中,程序员最容易遇到瓶颈期的时候就是,感觉公司的东西对你来说已经没有什么难度了,其实很多东西用起来肯定是没难度的,刚参加工作的时候觉得新学会怎样用一个新的技术,就已经很兴奋了,但其实学会怎么用是最简单的,有时候甚至不需要怎么学,依样画葫芦就行,跟抄书区别也不大的。其实最重要的是要了解它是什么,以及为什么,当你觉得没有问题的时候才是问题最大的时候,所以当你学习一个东西,如果太顺利反而是不好的,而如果你踩了很多坑,你反而会有很多疑问,带着疑问去学习是效率比较高的。
另外一个重点是必须去实践,你看再多书,读再多技术文章,技术文档,没有实践,可能还是不能真正了解,有的时候看文章,一句话好像是理解了,我们就过去了,但很多时候它真正的意义我们并没有体会到,比如说我们看MVC原理的时候大多觉得简单,很多人都是背下了网上的步骤,最后几步“处理器处理完业务后,会返回一个 ModelAndView 对象,Model 是返回的数据对象,View 是个逻辑上的 View。ViewResolver 会根据逻辑 View 查找实际的 View。DispaterServlet 把返回的 Model 传给 View(视图渲染)。”我们看着好像理解了,你也许会把ModelAndView当成我们的返回,但你真正去调式源码的时候,你会发现mv对象一直是空的,因为你背最后这几步是传统的 MVC 模式开发模式,会直接返回给客户端一个视图,现在我们使用的RESTful Web 服务一般会将返回的数据以 JSON 的形式返回,这也就是现在所推崇的前后端分离开发。包括我前阵子读了我前领导以前写的一篇文章,“对大部分的程序员来说,会更习惯 OOP 的方式,因为这种方式带给程序员的约束更小,编码会更为自由。但这样带来的问题是,缺乏对整个程序的整体思考,尤其是对数据流的整体思考,大部分的时间其实是通过“调试”来编写代码,可能1天编写的代码,调试要2-5倍的时间。这种写起来很爽,把困难留给调试的方式,很难说可以提高程序员的思维能力。”瞬间觉得很有共鸣,很多时候开发一个东西总是觉得直接动手,想到什么就写了,是最快的一种开发方式,但同时可能也是最差的一种开发思维方式,所以对于技术人员来说,基础理论很重要,其中的“道”很重要,我们不能只局限于怎么用,了解大概原理,我们要真正去理解人家为什么要这么做,其中的思想是什么,抽象出来的模式是什么样的,抽象思维很重要,这也是设计模式出来的原因吧,还是要多思考,多总结。
还有一个点是要时常关注新技术,当你对现状都不感兴趣的时候,不妨去学点新的东西,多关注一些技术公众号,知乎技术博客,各种技术博客,还有一个https://github.com/trending,github的trending,每天都会推荐一些项目,在里面偶尔会发现一些有趣的项目,或者一些工具,或者一些技术整理文档,多刷刷还是蛮有益处的。
就写到这里吧,很晚了,睡觉
网友评论