dengchengchao

如何提升自己?

看完后浪,感慨良多...

在程序员圈子,听得最多的便是”35岁中年危机“。


危机

其实不仅仅存在“35岁危机”,还有“毕业危机”,“被裁员危机”,不仅仅在程序员圈子,几乎所有圈子都是这样,就像刚毕业的大学生说的:毕业等于失业。现在的社会飞速发展,我们常常感叹大多数父母一代的人,智能手机玩着都比较费劲,其实也算是一种危机。其实不管任何职业,任何年龄的人,都应该保持“学习”的状态,只有自身有了底气,才能挺直了腰板,度过一个又一个危机。恩,做的不开心,我就换个工作...厉害的人,都是别人来请他去上班的。

作为一个Javaer,当然也需要不断的保持学习,特别是对于刚毕业的人,可能在找第一份工作的时候,你大厂与你擦肩而过,但是只要你对未来有一个完整的规划,3年后,你一样能达到你的目标。

说了这么多,只是为了强调学习的重要性。但是如何学习?学习什么?这才是真正的问题。

如何学习?

很多人喜欢看视频学习,记得刚学Java的时候,很多同学都会去看马士兵,传智博客等等。。。的确,视频适合带你入门,但是却不适合进阶。

如果你是一个什么都不知道的小白, 不知道什么是IDE,是什么叫配置环境变量,那么的确可以看看视频学习,因为它能带你很快的上手,避免走很多坑。

但是如果你是一个有一点项目经验的人,那么个人是不推荐通过视频来学习新的知识的。第一个便是因为资源太少。除了培训机构和各种专门为了做教育行业的人,很少有其他人会专门通过视频介绍技术,即使有,视频质量也难以得到保障。第二个便是效率问题,看视频你不敢跳过,害怕错过知识点,你也更加容易走神,因为进度掌握在别人手里。

所以最好的学习方式便是看资料,比如看书,看官方文档等。


如何看书?

书读百遍,其义自见。能真正把一本书看很多遍的人,一定能体会到这句话的精髓所在。

拥有不同知识的人,看一本书的收货一定是不一样的。这里可以简单举一个例子:一个刚学完Java基础知识的人,看《Effective Java》的时候,可能只会死记硬背。一个拥有三年开发经验的人,看《Effectice Java》的时候,会觉得恍然大悟。而一个拥有丰富的开发经验的人,看《Effective Java》的时候,一定会激动的拍打着桌子:“对,当时这个坑就是这样的”。

当你想要了解一个知识点的时候,比如JVM,你可以先去各个网站,找一找网友推荐的书,一般比较经典的技术,都会有一本比较经典的书。比如JVM中的《深入理解Java虚拟机》。记住,如果是想深入了解的话,一定要买好书,凑字数的书,只适合你看个大概。

挑选好一本书后,首先应该查看书的前言,然后看看目录,了解整本书得框架以及知识点的分布。最好带着问题去看书。比如你看JVM,可能就是想了解大家常说的GC,JVM内存分布,JVM调优等等,明白这些问题在书的第几节,想想作者为什么要把这个问题安排在这个地方?想要解答这些问题,需要明白哪些前提条件?

做完上面的步骤后,就可以开始看书了,看一个好书,我建议一遍泛读,两遍精读,三遍薄读。

第一遍,快速阅览这本书,但是每个地方都要留一个印象,有问题不用怕,记在心里。明白书的大体讲了什么,侧重讲了什么,哪些是重点。更加重要的是,你在快速阅览过程中,产生了什么问题。

当看完第一遍后,我不太建议立即去看第二遍,看完第一遍,应该对整个技术有个大概的了解,这个时候你应该实际去上手去做,比如JVM打打日志看看,jps.exe,jstat.exe等调试工具用一用看看,尝试将书中的内容应用到实际中。这个时候,你会产生更多的问题。

第二遍,当经过一定的上手后,这个时候你就可以去看第二遍了,看第二遍的时候,心里应该明白,你想解决什么问题,你应该重点看哪里。看的过程中,多想一想为什么?想不明白的,一定上网查一查,问一问。这个过程中,其实更加推荐的是写读书笔记或者博客。尝试将自己学到的东西讲给别人听,你会有意想不到的收获。

当看完第二遍后,就可以暂时休息了,因为一本书,写的再好,看两遍都会有点乏味,看完这遍后,整理下知识点,简单回顾下。

第三遍,第三遍应该在时间过去比较久之后再看,这一边的速度可以很快,主要目的就是检查你对这本书的内容的记忆程度理解的再好,都有可能会忘。每看到一部分内容,就去回想一下这部分内容的重点是什么?有什么值得注意的?为什么是这样。当你发现你都能说出来时,这本就,就已经薄成一张纸了、


看哪些书?

明白了怎么看书之后,最后一个问题便是看哪些书了...

作为一个程序员,最重要的便是基础。基础不牢,地动山摇。技术的迭代是非常快的,前几年大火的C#,如今在国内需求已经比较少了,再比如现在慢慢崛起的go,想要不被时代抛弃,必须学会快速掌握一个新的知识,而这些知识其实都万变不离其中。那便是基础。

掌握操作系统,能让你快速明白JVM,多线程,NIO,零拷贝原理等。

掌握网络基础,能让你快速明白HttpSocketHttps

...

当然,这里所说的基础,也包括一本语言的基础,比如Java开发基础等。

等有了这些基础知识,再去学习整体开发的框架,会事半功倍。


明白了基础的重要性,剩下的就是掌握一个高级开发工程师应该掌握的技能。

然而,什么才是一个高级开发工程师应该掌握的技能?

很遗憾,我不能告诉你。因为不同方向,不同企业,不同部门,不同的业务。对一个人技能的要求,是不一样的。

最好的方法便是定制一个目标,然后看看你离这个目标还有多远。

怎么去衡量你离这个目标还有多远呢?最好的答案便是面试。面试犹如考试,少看哪些博眼球的文章标题为面试官问我...,制造焦虑,太偏的知识点可以简单了解,但是别太浪费时间。不管你有没有准备好,现在开始,准备一份你的简历,找一些差不多的岗位,然后接受面试官的鞭挞。总结每一次面试中,你发现你有空白的知识点,然后找一本书,看它。不用害怕简历没什么写的,没什么写的简历,更应该开始着手准备,机会总是给有准备的人。


坚持上面我说的,我相信,offer会比“危机”先到一步。

有感而发,随便写写。

------ 胖毛2020/06/19

个人公众号,随便写写

相关文章: