一名 40 岁“老”程序员的反思
王练 2017年05月16日

一名 40 岁“老”程序员的反思

王练 王练 发布于2017年05月16日 收藏 127 评论 53

【上云狂欢节】6元虚机+9元建站+免费套餐,将普惠进行到底!>>>  

<本文是国外一位 40 岁“老”程序员对职业生涯的思考,他认为从长远来看,应该多投资一些不容易过期、衰竭期较长的知识领域中。译文大意如下。>

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

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

当然,我并不是真的惊讶。在过去20年里,我也掌握了一些比较流行的技术,并享受驾驭它们的乐趣。新的东西总能给编程带来一丝激动的体验,并且能让事情变得更容易、更快和更清楚。但是在这个特别的早晨,在40岁的这个门槛上,我不得不承认我感觉有些落伍。我知道如果想跟上节奏,我得继续付出,抛弃一些已经充分吸收的知识,吸收一些新的知识,为下一次旅程做准备。

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

两个概念

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

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

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

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

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

三个阶段

如果去记录程序员的知识衰退和积累速度,我认为可能会是这样:

在职业生涯的开始,可以称之为热切的学徒阶段,积累知识比较容易。一切都是新的,每个经验都是获得更多知识的工具。而且,由于年轻,我们不会有太多的义务,所以可能不介意花几个晚上和周末拿起新的语言和框架。重要的是,雇主对我们的期望值也比较低,我们可以在工作期间抠出一点时间来填补知识。这是一个有趣的阶段,连自己都没意识到自己有多坚持。

然后,我们不再是新手,成为了自给自足的开发者。我们在学习中的投资已经得到回报,所知道的一切全部有用。在这个充满知识的阶段,我们开始赢得客户、同行和管理者的尊重,获得头衔、薪水和机会。虽然我们当时不一定看得出来,但这也是一个重要的转折点。

两件事情发生了。首先,“高级”的晋升不仅仅是金钱,而是更多的期待。雇主需要他们的“明星程序员”成为领导者 - 帮助初级开发人员,审查代码,执行访谈,参加更多会议,帮助他们维护、构建复杂的旧版软件。这一切都很合理,但它巧妙地牺牲了我们的知识积累速度,我们不再有时间去读一些科技博客、文章。第二,这时候,我们首次体会到(或至少认识到)一点点知识的朽烂,早期学到的一些东西开始过时了。

随后,我们进入第三个,也是最后一个阶段,衰落和流失。是的,我们是知识渊博和富有成就的,但我们也明白,事实上知道的已经比最初阶段更少(有用的)东西。我们可能没有时间积累足够的新知识来填补,这是令人沮丧的。我认为这就是为什么,在这时候,许多人开始转向 - 管理、销售、测试或农业(我的梦想)。我们意识到需要再次努力来保持我们的水平和熟练度 - 不然的话,我们的工作会在5年后比现在更糟。

两个方向

我正处于第三阶段。我还是很喜欢学习,但我明白,不努力的话,我可能会一直保持在“专家”的平衡状态边缘。

首先,我尝试采取长远的观点。不要过度榨取自己,要尽可能的取得获得新经验的机会。我看到不少同事虽然获得了丰厚的薪酬,但职业很少有机会接触新兴事物。再过五年,他们会意识到他们的宝贵知识已经蒸发,薪酬与实际价值相去甚远。在某些情况下,我认为短期内赚更少的钱(有更好的雇主)会在长期的职业生涯中产生更多的钱(和稳定)。

第二,考虑到时间有限,我试图去学习那些耐用的知识。也就是说,把精力投入在那些有更长的衰减期的知识上,比如,算法逻辑、应用安全、性能优化和架构。

最后,很乐意听到大家的想法!

原文地址:http://www.bennorthrop.com/Essays/2016/reflections-of-an-old-programmer.php

>>>【全民狂欢,评论有礼】5月15日-31日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:一名 40 岁“老”程序员的反思
分享
评论(53)
精彩评论
48
马上45了,我怎么觉得一切才刚刚开始?精通了java/scala/clojure,精通了大数据分析,精通了k8s上的微服务,精通了react体系,golang/rust熟练使用,又准备玩玩elixir,搞搞神奇的OTP。计算机的世界充满新奇好玩的东西等待你去发掘。我已出走半生,归来仍是少年,不,老家拆了,没有归来了,我也不是少年,我感觉我还是小孩(=^_^=)
18
39了,深有同感,这个行业相比其他行业技术积累很难。

一个合格的程序员,要有对新鲜事物抱有浓厚兴趣的天赋,要有能静下心来学习各种技术的心境,还要有一个能让你学到老干到老的工作岗位。

不具备这些条件的程序员都会很艰难而转行业,明年我也40了,还好我能够继续走下去,不过也觉得真心不容易啊,很多当年的牛逼同事转行了,原因很多就不一一赘述。
10
我给大家支一招,工作同时,学一些美术,平面,视觉设计设相关技术
9
程序员是一个特殊的人种,无论哪个年龄段的,都有优秀、出色的。如果一味的靠工作年限来衡量就过于表面了,但老程序员终究还是危机感更重些,薪酬和期盼都要比年轻人高很多,自然压力就大了。
6
快30了, 业务繁重, 每天21~22:30左右下班, 一月休两天, 这两天要安排家里的大扫除, 看望老人等, 没有时间学习新技术, 心理负担也很大
最新评论
0
编程就是一场投资。
0
第三阶段为啥不是当老板 比如就像我现在公司的老板一样 纯技术员 60岁退休开公司 按照她的话说 她并不追求金钱 只是想在这个世界上留下点痕迹 我信了
1
41岁的老程序员路过。
个人觉得,是否喜欢你从事的工作非常重要,如果觉得学习新东西,coding对你来说是非常大的负担,毫无乐趣,哪程序员的确是青春饭。但如果你就是喜欢写代码,学习新东西,我觉得年纪大肯定不是坏事,谁说开发经验不重要,只用年轻人的公司有什么积累可言,看看baidu的下场吧。
0

引用来自“沙发迪”的评论

需要投资到数字货币和区块链中去,可以私信我
我们微信聊吧:18589080700
0
看完文章,继续写代码。。
0
需要投资到数字货币和区块链中去,可以私信我
1

引用来自“轻风叶语”的评论

心态老,才是真的老。有人20岁已经活的老态龙钟,有人70岁活的青春澎湃。
@轻风叶语 随着年龄的增长,精力慢慢衰退,学习成本比年轻人要高很多
1
@all,作者错了,司机,过二十年后,也许不太需要了,至少不能赚钱了吧!
1
很有道理,比较普世,但是个人感觉或许比较理想吧,无论什么都要去抓其根本
0
数据结构与算法应该算半衰期比较长的吧
0
心态老,才是真的老。有人20岁已经活的老态龙钟,有人70岁活的青春澎湃。
3
只要不断有学习心,没什么老不老的问题,都是借口。
只要不断学习,更新,哪怕稍微update一点点,就能上手。
入行20年了快,就那么点编程只是,其他都是靠经验和平时代码的积累,尤其是自己代码的积累,再加上别人的代码拿过来后自己消化的,总之无论是从别人那里来的还是自己积累的,只要自己明白了,就是自己的,可以吃一辈子。
别听什么小道消息说,什么年龄,狗屁。50多岁的第一线编码的,多的去了。
2
34岁了,个人感觉精通一个行业的业务逻辑才是王道,纯技术不得行。
5
要不断学习是一方面,另一方面我觉得主要还是看方向,就说两点:
1.前端技术变化的比后端快。
2.上层的技术比底层变化快。

第一点应该很好理解。第二点稍微解释一下,所谓“底层”主要指两方面:
2.1.处于软件栈的底层,比如:直接与硬件以及操作系统通信的代码。虽然仍然需要不断加入对新硬件和操作系统的支持,但是相对非常稳定,也不太会“在10年后被淘汰”。

2.2.处于业务逻辑底层,比如:基础的数据结构和算法等等。计算机科技发展了几十年,很多知识其实已经非常稳定了,比如:数据结构与算法、编译原理、操作系统原理、计算机组成原理、网络原理等等,几十年基本没什么大变化。实现这些功能(比如:写个 OS Kernel)的代码显然比那些基于一大堆现成容器(如:Tomcat、IIS……)、框架(如:Struts、Spring……)的业务逻辑要稳定长效多了。

所以一切在于自己的选型,两个极端的例子:做非常底层的后端工作 v.s 基于市面上的现有框架(如:jQuery、React、QT……)画前端 UI。两者间知识的“稳定性”差异必然较大。

当然,并不是说偏底层就不能写上层业务逻辑,关键在于你写的上层业务逻辑是基于自己积累的底层组件还是直接拿来第三方现成的运行时、容器和框架——直接用现成的虽然上手快,但免不了不够了解底层原理,而且自然要被别人牵着鼻子跑。
1
这文章写的很有深度呀。
多了35岁,我很害怕外人从我的桌子或背包里翻出计算机编程的书籍了,我情愿那是本小说。
另外,外出在地铁或其他公众场合,看到有同龄的人在翻计算机编程书籍,我也会顾影自怜,有点可悲呀。
1
33已回乡一年
1

引用来自“游客”的评论

马上45了,我怎么觉得一切才刚刚开始?精通了java/scala/clojure,精通了大数据分析,精通了k8s上的微服务,精通了react体系,golang/rust熟练使用,又准备玩玩elixir,搞搞神奇的OTP。计算机的世界充满新奇好玩的东西等待你去发掘。我已出走半生,归来仍是少年,不,老家拆了,没有归来了,我也不是少年,我感觉我还是小孩(=^_^=)
可惜任老板不这么认为!作为那么知名的公司,那样搞一下,影响太大了,砸了不少人的饭碗!
0

引用来自“工兵铲”的评论

快30了, 业务繁重, 每天21~22:30左右下班, 一月休两天, 这两天要安排家里的大扫除, 看望老人等, 没有时间学习新技术, 心理负担也很大
这样的工作环境太差,能换就换吧
0
如何增强软件智能?
0
27岁,职业生涯刚刚起步2年的时间,大部分时间消耗在了业务逻辑上,后期的倾向于半衰期较长的知识积累。

相关资讯

最新资讯
热门资讯
顶部