腾讯首席架构师:Java程序员四个阶段成长路线,少走弯路

有这么一位Java大牛

他是前 Oracle 首席工程师,负责过北京Java核心类库、国际化、分发服务等技术团队的组建。大家都知道,Java 就是 Oracle 公司的,他对Java的理解会与众不同。他把Java程序员的成长路线划分为新手、高级新手、胜任者、精通者和专家,让大家少走弯路

一、新手

如果你是新手阶段,全面、扎实地掌握语言的基本要素是当务之急。在这个阶段是有无限可能的,因此并不建议完全用专栏作为Java语言入门的课程,而是更应该找到更基础的、系统的Java书籍或者课程。

腾讯首席架构师:Java程序员四个阶段成长路线,少走弯路

你可以从专栏的基础模块,看到Java领域长期的热点话题(十年前面试就会问,一直问到今天),比如:

  • 1. | Exception和Error有什么区别?
  • 2. | 谈谈final、finally、finalize有什么不同?
  • 3. | 强引用、软引用、弱引用、幻象引用有什么区别?

二、高级新手

工作了几年,整天忙于业务代码,很容易困惑下一步的方向在哪里,相当多的程序员长期停留在高级新手的阶段。一个常见的表现就是发展成为了“面向搜索引擎”编程工程师,擅长快速利用开源项目或者以往成果,完成一些“OK”的工程任务。这本无可厚非,职业路线很多,未必每个人都想成为底层专家。

腾讯首席架构师:Java程序员四个阶段成长路线,少走弯路

  • 第4讲 | 动态代理是基于什么原理?
  • 第5讲 | 对比Hashtable、HashMap、TreeMap有什么不同?
  • 第6讲 | Java提供了哪些IO方式?NIO如何实现多路复用?
  • 第7讲 | 什么情况下Java会产生死锁?如何定位、修复?
  • 第8讲 | Java常见的垃圾收集器有哪些?

我建议你即使未来你不在一线编码,或者未来不再使用Java,同样的思维习惯和积累也是很有帮助的。

三、胜任者

那如何才能算是摆脱了高级新手的阶段呢?或者换句话说,如何成长为团队的核心成员?这取决于你能背多大的锅、填多大的坑,比如你已经可以:

  • 独立负责做GC调优,即使没有历史经验,也能给出有说服力的方案。
  • 在JVM领域有充足的技术经验和知识储备。
  • 全面评估评估后台变慢等问题的复杂度、风险点、解决的可能性。
  • 对于所谓本质的思考和理解,能听懂深入的抽象观点。

腾讯首席架构师:Java程序员四个阶段成长路线,少走弯路

并且,除了Java/JVM,还要掌握更完整的技能树,例如分布式系统设计、数据库隔离级别选型等。另外,我也推荐你看看专栏里这些内容:

  • 第9讲 | 谈谈常用的分布式ID的设计方案?Snowflake是否受冬令时切换影响?
  • 第10讲 | 谈谈MySQL支持的事务隔离级别,悲观锁和乐观锁的原理和应用场景?

四、精通者和专家

如果你已经精通Java语言或者是特定领域的专家了,那这个专栏对你的帮助可能体现在不同角度,可以当作特定领域的、不同视角吧。例如,在这个阶段,精通者或专家能够:

  • 提炼并发工具类的一般性指导方法。
  • 告诉团队如何写出安全的Java代码,防范看似安全下隐藏的风险。
  • 借鉴Java/JVM中的一些技术,从基础能力上提高自身平台的能力。例如,PHP 7中引入的JIT,带来了极大的性能提升,第35讲中对JIT的介绍,就有了新的用武之地。
  • 如何通过Container-Aware技术,提高Kubernetes集群中JVM负载的可靠性。
  • 创造某一类问题的解决方法。例如,似乎Java工程师动不动就是Happen-Before,除了耍酷,能不能从更高的高度看待:JMM是如何实现了编译器工程师、JVM工程师、Java开发者甚至不同厂商之间的一致性规范?如何创造性地避免了早期C++内存模型在不同厂商之间的混乱?

想要学习Dubbo框架、zookeper基本原理、redis分布式缓存、JVM性能优化,Nginx+apache+Tomcat集群部署、大数据hadoop,Hbase实时计算spark、storm、数据分析分词和权重等核心技术;

需要的可以关注之后私信哈,记得要点赞转发噢!!!

相关推荐