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