我是一名程序员,几个月前刚过完四十岁生日。


某个星期六的早晨,我参加了一个 React Native 技术交流会,演讲者正在竭力说服我们为什么它会成为移动开发领域真正的下一个大事件。但对我来说,它有点像十五年前的 jsp ,将所有的逻辑都放在演示代码里面。但我“老”了,我认为这是因为自己还没有完全理解它。


演讲者展示完 ppt 后,现场进行编码,还展示了大约半打我没听说过的配套工具,这些都让我感到有点沮丧。


当然,我并不是真的惊讶。在过去 20 年里,我也掌握了一些比较流行的技术,并享受驾驭它们的乐趣。新的东西总能给编程带来一丝激动的体验,并且能让事情变得更容易、更快和更清楚。


但是在这个特别的早晨,在 40 岁的这个门槛上,我不得不承认我感觉有些落伍。我知道如果想跟上节奏,我得继续付出,抛弃一些已经充分吸收的知识,吸收一些新的知识,为下一次旅程做准备。


我在想,我的编程生涯不像其他的专业人士,医生到了 40 岁不用担心他对血管系统的知识会蒸发,同样的,律师、水管工、会计、英语老师,也是如此。他们积累的知识是相对稳定的,并随着年龄会给予他们相应的尊重和补偿。但是在编程领域,20 年的经验,似乎并没有赋予同样的优势。


两个概念

当然,我们的行业也不是那么糟糕 —— 程序员需要爱上很多东西 —— 有趣的是,无休止的跟进,好像是我们这个领域或多或少独一无二的特点。编程生涯是真的如此不同吗?如果是,为什么?对我们的事业轨迹来说又意味着什么?我想从以下两个观点来尝试回答这些问题。


第一个是知识衰退。我们所知道的一切,不仅仅是编程,都有一个有效期,过了这个期限将不再有用。我 16 岁学会了开车,到现在依然用的很好,这种技能可以认为有一个相对较长的半衰期 。医生的知识会越来越渊博,是因为他学习的每一件事情都是基于他以前的知识。而在编程领域,无论好还是坏,我认为:


程序员所积累的编程知识在十年后将有一半没用。


这可能有些偏激……但起码对我来说,似乎是正确的。如果我在这个期限中不学任何其他的东西,我敢打赌,只有大约一半的知识我可以在 2026 年继续使用(比如长期活着的 SQL ),另一半可能都是没用的(React Native,也许?) 。当然,我会不断获得新的知识来取代要死掉的那些东西,但这足够吗? 2026 年我会比现在知道更多(有用的)知识吗?


这也就是带来了第二个概念,知识积累速度。在所有领域,必须满足一定的知识门槛才能获得“认证”(或至少可聘用),职业生涯的早期通常都是在努力获取知识。然而,在编程领域,由于知识的快速衰减,似乎我们从来没有真正度过“学生时期”,我们必须永远一直学习。


三个阶段