我是几个月前刚满30岁的程序员。一个星期六的早上,我正在参加ReactNative技术讲座,演讲者试图说服我们为什么它真的是移动开发中的下一件大事。但是对我来说有点像五年前的jsp,把所有的逻辑都放在demo代码里面。想到演讲者展示了ppt,现场编码,并展示了大约6个我没听说过的配套工具后,我觉得有点沮丧,我想是因为我“老”了,还没有完全了解自己明白了。当然,我并不感到惊讶。在过去的十几年里,我掌握了一些比较流行的技术,并且乐在其中。但在这个特定的早晨,在30岁的门槛上,我不得不承认我有点落后了。我知道如果我想跟上步伐,我必须不断地付出,扔掉一些我已经充分吸收的知识,吸收一些新的知识,为下一段旅程做准备。我在想我的编程生涯与其他专业人士不同。医生、律师、会计师积累的知识相对稳定,随着年龄的增长,会给予相应的尊重和补偿。但在编程领域,十多年的经验似乎并没有赋予同样的优势。编程生涯真的如此不同吗?如果是这样,这对我们的职业轨迹意味着什么?我想从以下两个角度来尝试回答这些问题。首先是知识衰退。我们所知道的一切,不仅仅是编程,都有一个有效期,过了这个有效期之后它就不再有用了。我19岁就学会了开车,到现在还用得很好。这个技能也算是半衰期比较长的了。医生的知识会越来越深,因为他所学的一切都是建立在他以前的知识基础上的。而在编程领域,不管是好是坏,我认为:程序员积累的编程知识有一半在十年后会毫无用处。这可能有点牵强……但至少对我来说,这似乎是正确的。如果我这学期不学别的东西,我敢打赌,到2028年,我只能获得一半的知识。当然,我会继续获取新知识,以取代那些正在消亡的知识,但这是不是足够的?2028年我会比现在知道更多有用的知识吗?二是知识积累的速度。在所有领域中,某个特定的人要在最低知识门槛上获得“认证”(或至少可以就业),职业生涯的早期阶段通常都在努力获取知识。然而,在编程领域,由于知识的快速衰减,我们似乎从来没有真正度过“学生期”,我们必须时刻保持学习。我正处于知识衰退和丧失的阶段。经过近十年的学习和上岗,我们博学多才,但也明白,其实我们知道的有用的东西,不如当初。我们可能没有时间积累足够的新知识来填补,这令人沮丧。我认为这就是为什么在这一点上,很多人开始转向-管理、销售、测试等稳定的方向。两个学习轨迹首先,我尝试着眼长远,并尝试获得尽可能多的机会来获得新的经验。我见过薪水很高但很少接触新事物的同事,五年后他们意识到他们宝贵的知识已经过时,他们的薪水也远不及它的真正价值。其次,考虑到时间有限,我尽量去学习那些经久不衰的知识。也就是说,把精力投入到那些衰减周期较长的知识点上,比如源码分析、微服务、性能优化、架构等知识点,我意识到自己需要再次努力才能保持现在的水平和熟练程度——否则,我的工作情况在5年后会比现在更糟。最后,把我总结的知识体系分享给大家。不要做徒劳的努力。这个世界上最不可或缺的就是勤奋。有计划地学习和努力,比盲目前进要有效十倍。下面是自己收集总结的Java架构技术图谱。希望对有相同情况的程序员有所帮助。如果你也对技术感兴趣,可以来我的Java后端开发群:943918498,可以进群下载相关技术资料,这次是面试期间,欢迎大家进群讨论和交流学习。除了这个路线图,我还收集了一些Java高并发、分布式、JVM、spring源码分析等相关的技术资料,分享到我的Java后端开发群里。作为一名Java程序员,如何努力才能快速成长为高级程序员,或者优秀的架构师应该具备什么样的技术知识体系?这不仅是初入职场的初级程序员,也是工作三五年后开始迷茫的老程序员不得不面对和理解的问题。
