技术学习的路径

像点样子的大公司社招都是会去招聘最好的人,就是某个领域或者多个领域有比较深的能力,然后又有一定知识广度,能独挡一面。最近尝试面了几家公司,发现了自己的很多不足,比如:

  • 很多知识一知半解、不够透彻
  • 所做项目并没有很值得述说,也就是没有亮点
  • 了解的不少,但是真正清楚明白的不多,真个的原因一方面是学习过的东西总结做得比较少,一方面是学习的时候深入理解的不够

自己一直以来的学习习惯都是随便抓一样东西,看几篇文章敲几个用例,都比较一知半解,这样是不行的。真正比较好的学习方法应该是先囊括几个领域,比如数据库、分布式计算、中间件等、JVM,然后再从这些根节点出发去学习更多相关的知识,就像是一棵树,慢慢往下衍生,越往下就越深入。当然囊括根节点的时候需要寻找几个相关的节点,如果是后端为主,那么就不要去弄什么前端了,Java图形相关也不应该涉猎。这个的原因很简单,人的精力优先,再聪明的人也无法在所有领域都能深入和精通的。更何况自己这样精力不是很多,时间上更是会受限制。

以上总结的是技术学习需要有个宽度界限,还有就是需要把每次的学习定一个里程碑,比如学习JVM,第一个定的里程碑是将整体体系学习一遍,要大概清楚理解这些东西:

  • GC算法和各种GC收集器
  • class 文件格式
  • 类加载机制
  • JIT

只列了一些东西,第一个阶段可以只是知道概念,并有一个可以融汇贯通的理解,再往下可以深入到JVM的细节,比如G1收集器的实现细节,可达性分析算法的细节等等。第一阶段定一个目标,比如总结一篇完整的学习笔记,记录着JVM的方方面面。笔记什么时候整理完,就预示着JVM一阶段的学习可以暂时告一段落。这样的学习的好处是容易把知识组织成树,知识更有结构。然后分阶段的学习,将需要深入部分的学习放在全局学习后面,也是为了上述把知识组织成树。

以上说了不少知识的学习,光理论当然不行,也需要实践。但是工作内容和所研究领域不相符怎么办,可以通过自己写工具和框架(发布到GitHub),能部分解决,当然在真正的环境下所锻炼出来的能力是上述不能实现的,当需要进入真正的工作内容,可能就需要考虑换家公司了。

另外再可以说说工作,很多人可能都是从CRUD开始,但是迫使你一直做CRUD的基本不太会是自己所呆的环境(公司)。真正的原因是自己,你没有主动去挑战技术难度的事情,难道还等有难度的事情找你吗。在有了一定的积累以后,可以大胆的去挑战,去和自己的leader说,你看那xxxx事能不能让我做,保证做好,为什么能做好?因为研究了xxxxx,并有了个方案是xxxx这个样子的,如果leader不同意,倾听leader的意见,再做定夺。但是一般领导层是比较喜欢「主动请缨」的「武将」的。

写在最后

以上是自己最近面试几家公司的感悟,面试有个好处是交流,能知道其他公司的技术是怎么做的,自己在技术领域的竞争力怎么样,发现自己的不足。

面试的过程有还行的,也有不怎么样的,主要的原因还是自己本身不够强,学习的方法,甚至技术栈的选取都有问题。

Author

张阿力

Posted on

2017-03-21

Updated on

2017-11-25

Licensed under