当前位置: 首页 > 科技观察

一个40岁程序员总结的编程生涯的三个阶段

时间:2023-03-20 18:53:20 科技观察

我是一名程序员,几个月前刚过完自己的40岁生日。一个星期六的早上,我正在参加ReactNative技术讲座,演讲者试图说服我们为什么它真的是移动开发中的下一件大事。但对我来说,它有点像十五年前的jsp,把所有的逻辑都放在表现代码里面。但是我“老”了,我想是因为我还没有完全理解它。我对ppt的演示、实时编码和大约六个我从未听说过的配套工具感到有点沮丧。当然,我并不感到惊讶。在过去的20年里,我还掌握了一些比较流行的技术,并且乐于驾驶它们。新事物总是会给编程带来一丝兴奋,并使事情变得更容易、更快和更清晰。但在这个特殊的早晨,在40岁的门槛上,我不得不承认我觉得有点落后。我知道如果我想跟上步伐,我必须不断地付出,扔掉一些我已经充分吸收的知识,吸收一些新的知识,为下一段旅程做准备。我在想,我的编程生涯不像其他专业,一个医生不用担心他40岁时血管系统的知识蒸发,律师、水管工、会计师、英语老师也是如此。他们积累的知识相对稳定,随着年龄的增长,他们会得到相应的尊重和补偿。但在编程方面,20年的经验似乎并没有带来同样的优势。两个概念当然,我们的行业也没有那么糟糕——程序员需要爱上很多东西——有趣的是,没完没了的跟进似乎或多或少是我们这个领域的一个独特特征。编程职业真的如此不同吗?如果是这样,为什么?这对我们的职业轨迹意味着什么?我想尝试从以下两个角度来回答这些问题。首先是知识衰退。我们所知道的一切,不仅仅是编程,都有一个失效日期,过了这个日期它就不再有用了。我16岁就学会了开车,到现在还用得很好。这个技能也算是半衰期比较长的了。医生的知识会越来越深,因为他所学的一切都是建立在他以前的知识基础上的。而在编程领域,不管是好是坏,我认为:程序员积累的编程知识有一半在十年后会毫无用处。这可能有点牵强……但至少对我来说,这似乎是正确的。如果我在这学期没有学到任何其他东西,我敢打赌,到2026年,我所知道的只有大约一半会有用(比如长期存在的SQL),而另一半可能会毫无用处(ReactNative,也许?)。当然,我会不断获得新的知识来代替那些正在死去的人,但这就足够了吗?我在2026年会比现在知道更多(有用的)知识吗?这就引出了第二个概念,知识积累的速度。在所有领域,必须满足某些知识门槛才能获得“认证”(或至少可就业),职业生涯的早期阶段通常都在努力获取知识。然而,在编程领域,由于知识的快速衰减,我们似乎从来没有真正度过“学生期”,我们必须时刻保持学习。三个阶段如果要记录程序员知识的下降和积累速度的话,我觉得可能是这样的:职业生涯的初期,可以称之为急切的拜师阶段,比较容易积累知识。一切都是新的,每一次经历都是获得更多知识的工具。另外,年轻,我们没有太多的义务,所以可能不介意花几个晚上和周末去学习新的语言和框架。重要的是,雇主对我们的期望也较低,我们可以在工作中抽出一点时间来补充知识。这是一个有趣的阶段,我什至没有意识到我坚持了多少。然后,我们不再是新手,而是成为自给自足的开发人员。我们在学习上的投资得到了回报,我们所知道的一切都是有用的。在这个智力阶段,我们开始赢得客户、同行和经理的尊重,赢得头衔、薪水和机会。虽然当时我们可能没有看到,但这也是一个重要的转折点。发生了两件事。首先,“高级”的晋升不仅仅是金钱,更多的是期待。雇主需要他们的“明星程序员”成为领导者——帮助初级开发人员、审查代码、进行面试、参加更多会议、帮助他们维护、构建复杂的遗留软件。这一切都非常合理,但它巧妙地牺牲了我们知识积累的速度,我们再也没有时间去阅读一些技术博客、文章。其次,这是我们第一次经历(或至少认识到)一点智力衰退的时候,一些早期的知识开始变得过时。然后我们进入第三个也是最后一个阶段,下降和流失。是的,我们知识渊博、成就卓著,但我们也明白,我们实际上比最初知道的(有用的)事情要少。我们可能没有时间积累足够的新知识来填补,这令人沮丧。我认为这就是为什么在这一点上,许多人开始转向-管理、销售、测试或农业(我的梦想)。我们意识到我们需要再次努力工作以保持我们的水平和熟练程度——否则我们的工作在5年后会比现在更糟。我在两个方向的第三阶段。我仍然喜欢学习,但我明白如果我不努力学习,我可能会一直处于“专家”天平的边缘。首先,我尝试着眼长远。不要过度压抑自己,尽可能多地把握机会去获得新的体验。我看到很多同事虽然拿到了丰厚的薪水,但是在职场上接触新鲜事物的机会却很少。再过五年,他们就会意识到,他们宝贵的知识已经蒸发,他们的薪水也远不及它的价值。在某些情况下,我认为短期内赚更少的钱(有更好的雇主)会在你的职业生涯的长期内产生更多的钱(和稳定性)。第二,考虑到时间有限,我尽量去学习那些经久不衰的知识。也就是说,把精力放在衰减周期较长的知识上,比如算法逻辑、应用安全、性能优化、架构等。最后,想听听大家的想法!