优秀程序员具备的高效习惯,你具备吗?

我在《聊聊阿里面试的三个层次》中说到阿里的面试要求,其中有一个读者看完觉得很困惑,觉得这些知识点平时都用不着,如何去学习这些知识才能保证学习质量呢?

我有个迷茫的地方在于,这些知识点如果在工作中都用不上,应该怎么保证学习的效果呢,面试的时候又该怎么聊呢。例如很多软件系统(ERP、财务、税务等内部信息系统)其实核心在于实现业务逻辑,就是基于业务的CRUD,高并发、分布式这些技术都用不上,做的时间长了技术深度广度都没有。

现实中确实存在像这位读者说的情况,但我们稍微仔细想一下我们身边的人,你会发现总会有几个人,他们能不断进步。虽然他们起点低,但是通过不断努力,却可以取得不错的成绩。那他们到底掌握了什么学习技巧,能让他们不断进步呢?

答案很简单,那就是主动学习。

什么是主动学习

我的一个朋友小黑,他在公司里做的任务都是一些业务性的需求,并且都是增删改查类型的,对于技术方面的历练比较少。但小黑并不因此而闷闷不乐,反而细致地把每一个需求都做好,并且需求做完都会思考怎么才能做得更好。

而在工作之余,他也主动地学习 Spring、Dubbo 等开源框架的源码,了解这些框架的原理。就这样过了一段时间,公司因为后台架构调整,成立了架构组自行研发技术框架,这时候小黑因为之前对于开源框架的深入研究,比其他人有了更深刻的理解,而进入了架构组。

从小黑身上我们可以看到,一个主动学习的人,他并不会局限于公司的层面,他除了学习公司本身的技术之外,还会思考怎么样去优化项目的技术,业界有什么更好的解决方案,从而不断学习不断成长。

与主动学习密切相关的,是被动学习。

什么是被动学习

当小黑进入架构组之后,他会发现自己之前学习的东西还远远不够,要自行研发框架所需要学习更多的知识。于是在这样的压力之下,小黑又不断地学习更多的资料,更加深入地研究各个框架的源码。在外界(项目、排期、工作)的压迫之下,你不得不去学习的成长方式,就是被动学习。

如果一个人只会被公司的项目推着走,公司需要什么知识,他就只学什么知识,那么久而久之他会发现自己一直处于原地踏步的状态,没有进步。这个时候如果遇到一些技术变动或者人事变动,就很容易产生辞职的念头。

从小黑的例子来看,你会发现其实主动学习和被动学习都是相辅相成的。当你没有高并发的相关经验的时候,你需要主动地学习相关的理论知识,争取比别人掌握更多。而机会来临的时候,你能抓住这样一个机会,从而在实践中被动地掌握更多的知识。

文章首发于微信公众号「陈树义」,专注于 Java 技术分享的社区。点击链接扫描二维码,与500位小伙伴一起共同进步。微信公众号二维码 http://p3npq6ecr.bkt.clouddn.com/blog/chenshuyi_gongzhonghao_guide_full.jpg

如何改变

就像文章开头的那位同学一样,也有许多人都跟我说:你说的我都懂,但是我看了没几天源码,我就看不下去了。

而且我感觉这样学习效果都无法保证,自己看完之后还是懵懵懂懂的。

那么我们到底应该如何去改变这一切,让自己习得「主动学习」这个搞笑的习惯呢?

在这里我给大家几个建议,都是实实在在的能帮助大家改变的。

改变对于工作的认识

与一些刚入行的朋友沟通,我们了解到很多人期望从工作中学到一切,希望公司给与他们更好的学习机会。于是这些朋友一直没有找到很好的公司,很多都是没过几年就换一家公司。

之所以会如此,是因为这种想法本身就是错误的。公司雇佣你是让你解决问题,不是让你来学习的。学习与成长,只是解决问题之后顺带的结果,而不是目标。如果你无法接受这个观点,那么你永远无法找到正确的学习通道。

公司给你钱,你帮公司解决问题,其他的都是扯淡。成熟的公司为了留住员工,会建立一系列的培训机制,但这并不代表你就该把这种学习和成长当成理所当然。

建立自己的学习圈子

当你接受这个观点之后,你自己会明白,工作不应该成为我学习的唯一渠道,我应该有自己的学习渠道,应该有我自己的学习圈子。而这个学习圈子才是一直伴随着你,能跟随你一直走下去的,无论你在 A 公司,还是在 B 公司,你都能不断进步。

公司的成长是短期的,而学习圈子的成长是长久的。这两者的关系就像被动学习与主动学习一样,互相促进,相互融合。所以如果你希望长期不断进步,那么你就要建立自己的圈子,认识更多比自己厉害的人,跟着他们一起学习,一起成长。

技术路上是非常枯燥无味的,找到趣味相投的人一起学习,能让你们更容易坚持下去。这条真理无论对于新手还是大神都是适用的,没有人会排斥与别人交流。像我一样,无论在哪个公司,我都会跟比我厉害的人学习,跟他们加微信探讨问题。现在我把他们都拉入了一个微信群,我们经常在里面探讨技术问题。很多时候一些很难解决的问题,就在你我讨论之间就解决了。

努力、努力、再努力

很多朋友其实都不明白自己为什么做技术,甚至不知道喜不喜欢做技术。其实我一开始也不清楚,也是因为生计而选择了开发这一行,我也一直迷茫要不要一直做下去。每次看到「面试基础题」里列出的一大串技术要点,我也困惑,到底要学到什么时候啊。

其实很多人之所以厌恶做开发,是因为国内企业的加班成风,使得本来很有创造性的开发变得死气沉沉。但我们生活在这,我们可能在很长时间里无法去改变这种现状,我们只能调整自己的心态,让自己变得更加优秀,让自己热爱技术。当你技术达到一定高度的时候,或许你也不需要再加班,而能真正享受编程的乐趣了。

但在那之前,你还必须调整自己的状态,让自己努力下去。即使在难搞的日子,也要笑出声来!

总结

比起技术知识上的积累,思维方式的改变更加重要。从现在停止幻想,拓宽自己的学习渠道,主动学习更多的知识,建立自己的学习圈子吧。

如果你也是一个对技术有热情,希望不断精进自己技术的小伙伴,那就赶紧加入我的技术圈子,与众多优秀的小伙伴一起学习成长吧!(关注微信公众号获取入群二维码)

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=jgpjhcggl6be

文章首发于微信公众号「陈树义」,专注于 Java 技术分享的社区。点击链接扫描二维码,与500位小伙伴一起共同进步。微信公众号二维码 http://p3npq6ecr.bkt.clouddn.com/blog/chenshuyi_gongzhonghao_guide_full.jpg

posted @ 2018-04-09 02:57  陈树义  阅读(1345)  评论(9编辑  收藏  举报