好了,下班了,今天躺在床上与你分享: 打工人如何持续提升自己的技术能力?
说实话,今天这个主题还真的不知道从哪开始说起,我就简单说说我的想法吧。
不管做哪一行,企业最不可或缺的都是那些能够解决问题的人。
作为打工人,只有不断的为企业解决各种问题,才能体现你的价值,然而,只有当你能够为企业解决越来越大的问题的时候,才能体现你的核心竞争力。
请注意,我这里说的是大而不是多,如果只是解决了越来越多的低级问题,对你自己是没有任何提升的,企业也不会给你涨薪资,优秀卓越也没你啥事儿。
所以,作为打工人,我们也需要不断进化,才能为企业解决越来越大的问题,这就要求我们要持续提升我们的技术能力。
那么,该如何持续提升自己的技术能力呢?
我们可以从解决的问题从小到大依次来看。
作为初级打工人,你解决的问题可能都是些空指针、数据库唯一键冲突啊之类的低级错误,这类错误你只要具备一些基本的开发素养,比如java基础知识,数据库常识,都能够轻松应对。这个阶段,我们可以称为入门阶段,找本类似《java编程思想》这种入门的教程看看,或者网上的教程看看就够了。
作为中级打工人,你可能会遇到稍微复杂一些的问题,需要通过多线程调试,断点,日志,stackoverflow才能解决,也有可能会遇到一些jvm调优的问题,比如oom,栈溢出等问题,这些问题说句实话只要你能合理的使用搜索引擎,基本上都可以解决,毕竟你遇到的问题,其他人90%都遇到过,而且,技术人都喜欢写博客做笔记,所以,还是比较容易解决的。这个阶段我们可以称之为熟悉阶段,对各种技术都有所熟悉,比如多线程基本知识,jvm基础知识,出了问题大概知道什么方向。
作为高级打工人,你可能会遇到一些非常复杂的问题,这些问题你通过搜索引擎根本找不到答案,这时候就需要你有非常深厚的功底了,有些问题你可能通过github的issue能找到答案,有些问题可能只有issue本身却没有答案,这些问题我们可以称之为源码级的问题,你必须通过阅读开源框架的源码才能解决,比如Elasticsearch如何支持统一对存储加解密,比如我最近遇到的一个同时引入sleuth和seata出现死循环的bug,官方也没有答案,你只能通过阅读源码来解决。当然,这个阶段你可能还会遇到一些解决方案级的问题,比如Excel导入10万数据如何优化,100万呢,下单如何优化,等等。这个阶段我们称之为掌握阶段,掌握各种技术底层原理,并能通过阅读源码解决问题。
作为资深打工人,你需要解决的问题可能就不是简单的项目级的问题了,你需要在部门在组织有一定的影响力了,比如,深入学习k8s等新技术,并带领整个部门上云,再比如,做出整个组织适用的中间件,给开源框架提PR,等等。这个阶段我们称之为精通阶段,精通各种技术的原理,并能在过往经验的基础上快速学习新东西,并带动整个部门或组织向前。
作为专家级打工人,你可能需要解决的都是一些行业级的解决方案了,比如写一个牛逼的分布式事务框架,等等。这个阶段都是大牛了,我还没有达到就不忘加评论了。
好了,总的来看,作为打工人可能会经历这么5个阶段,当然,并不一定就严格按照这5个阶段来走,有的同学可能大学就完成了很多源码的阅读,有的同学可能一毕业就进入中间件团队,这些无疑起点更高,成长空间更大。
如果按照这5个阶段的话,我推荐一些学习心得:
初级,把大学的教材好好学完就差不多了,不是计算机相关专业的,可以去找找相关书籍。
中级,学习jvm、并发相关知识,会用多线程解决问题,把并发这块的内容好好看看,把周志明的那本jvm好好看看。
3.高级,读源码,读各种源码,我建议先读jdk源码,然后读netty源码,再读dubbo源码,最后才去读spring等框架的源码。jdk源码自不必说,是基础,很重要,你jdk源码都没读过你跟我说精通spring我信你个大头鬼,其次,是netty源码,这会让你精通网络和IO的相关知识,非常有用,写中间件必备,做物联网必备,再次,dubbo源码,dubbo真的是非常优秀的框架,整个设计非常好,而且源码很清晰,它里面也有ioc和aop的概念,但是实现方式与spring完全不同,非常推荐,最后,才是spring和其他框架的源码,如果你一开始就读spring的源码,我只能祝你好运了,同学,坚持,不要放弃。
4.资深,参与开源项目,给他们提PR,持续学习行业新技术,深度分享,带动部门与组织。
5.专家,无法推荐。
最后,总结一下,在这5个阶段中,你需要持续不断地解决各种问题,而且,去挑那些大问题来解决,这样,你才能持续不断的提升,与此同时,你还应该做好总结,及时与他人分享,因为分享可以使你掌握的知识更牢固,同时,还能锻炼你的语言组织能力,培养你的领导力。
好了,今天的分享就到这里,各路大神,你们都是如何持续提升的呢?欢迎留言分享你的心得。