写点什么

职场求生攻略答疑篇之 5 —— 我,程序员,非常焦虑

用户头像
臧萌
关注
发布于: 2021 年 03 月 08 日
职场求生攻略答疑篇之 5 —— 我,程序员,非常焦虑

小波 Transformers 同学在我《零基础学 Java》中问到:


老师,在中国程序员真的走 35 岁被退休的说法吗?技术一般的、35 岁以后的程序员,应该往哪个方向努力?甚至说往哪个新的职业转型、转业?


不过这个话题更适合放在我《职场求生攻略》里的 FAQ。


其实之前写过一篇,是看半佛老师这篇《为何有的职业后期不给力》有感而发。但是貌似被风控系统给删了,而且咋都找不到了。向前看吧,删了就重新写一篇,备个份。


首先我推荐看看半佛老师这篇文章。不得不说,半佛老师的观点还是非常合理的。不过有些细节和心态,可能只有程序员才更能理解。我从一个十几年的老程序员的角度,也去解读一下这个话题。


前期职业 V.S. 后期职业?


半佛老师用前期职业和后期职业这俩词,形象的描述了不同职业的时间-价值曲线。


换句话说,后期职业才是“时间的朋友”。前期职业则是“时间的狐朋狗友”,会被时间抛弃。


而很不幸的是,程序员是半佛老师文中的前期职业。“零件”,“利润”,“性价比”……,白屏黑字,把程序员的职业生涯安排的明明白白的。就等着时候到了,磨损到限度了,然后换一个程序员。


这是事实吗?很不幸,对于不少人来说,如果不作出改变,这确实是事实。(怎么写到这里有点营销号的感觉了囧 rz……,我保证这不是营销号,是一篇正经的 FAQ)


后期职业真的是躺赢吗?


我们先看看前期职业的“对手”,后期职业。后期职业真的能躺赢吗?不一定吧。


教师和医生,可以说是毫无争议的后期职业中的翘楚。就说这两个职业,哪个能躺赢?哪个不是需要持续的在自己的专业上投入精力?


教育要因材施教,还要跟着年轻人与时俱进。教材也在不断变化,考试题目的风格也在不断变化。这都需要教师去琢磨和总结。我高中有个数学老师,入校第一年教高一,第二年教高二,第三年教高三,以后每年都教高三。为啥,因为他“会教”,学生记的牢,考的好。他的这种能力,是躺着能获得的吗?


医生更不用说了,进医院竞争就很激烈了,进去的都是高学历,高能力的人。而每个科室都有人能升主任医师有人不能,那猜猜看为啥呢?


当然,教师和医生有一个优势,就是更容易积累,进而形成自己的“护城河”。或者换个方向理解,就是这俩职业,有确定的努力方向,知识体系架构的演进不会非常剧烈。只要你愿意努力学习,精进业务,那你就可以很自然的“做时间的朋友”。从事这个职业的时间越久,积累的知识和经验越丰富,越容易得到大家的认可,也更容易获得更丰厚的回报。


总结一下,就职业而言,没有躺赢一说。想要获得更好的回报,必须要付出更多。


但是后期职业因为知识和技能体系不会剧烈的更新,就算不努力,也能糊弄着干。所以对于想“躺混”的人来说,是更友好的。这一点,程序员这个职业做不到。


程序员的焦虑


和教师与医生相比,程序员,积累了,努力了,可能也并非一直有用。因为程序员的知识体系变化确实非常剧烈。今年振聋发聩的技术,明年可能就无人问津了。就算是技术一直火,一个版本更新,可能就会让人需要摸起来重新学。


从这个角度来看,时间确实不是程序员的朋友。一切都在变,一切都不好说以后还有没有用。而且工作中这些例子屡见不鲜。举几个例子吧。


我 03 年上大学的时候,听到的报价是,只要会 J2EE,JSP 啥的,硕士年薪十万起(那时候济南的房价可能才三五千)。等我毕业的时候,JSP 基本已经烂大街了。是个学 Java 的就会 JSP。


Android 和 iOS 开发火了,移动开发工程师的薪资待遇也暴涨。后来会的人太多了,薪资也慢慢和比的程序员持平了。


大数据来了,只要简历上写个精通 Hadoop,薪资就好谈。再后来,是个人学一个星期,就能花几个小时搭建个大数据平台。再再后来,大数据上云了,越来越少的场景需要程序员精通这一套了。


前端应用,云计算,Docker,CNCF 等等等等,感觉到没,基本上每一波浪潮都会带飞一波技术的价值。然后随着技术的普及,技术的价值又开始软着陆。


而更有很多技术被淘汰了,比如 J2EE,以及 J2EE 的容器(WebLogic,WebSphere,还有听说过的同学吗)。世纪之初会这一套的,绝对是天之骄子,炙手可热,被巨型公司疯抢的人才。现在呢?如果有人还把这些技术写在简历上,绝大多数的互联网公司都可能以为是翻到了 n 年前的简历,并直接拒了。


你说,目睹了这一个个活生生例子的程序员,怎么能不焦虑。手里的技术,说不定 TM 哪天就不香了啊!那还怎么赚钱?还怎么混?


程序员的困境就是:努力了,技术积累了,然后技术过时了;还要继续努力,继续积累,继续等着技术和能力被淘汰。这样,就一直无法像教师和医生一样,用自己的知识和技术,打造自己职业的护城河。


而随着时间流逝的,还有程序员的青春和精力。总有学不动、没时间学的时候。


认同标准不一样


所以,很容易可以想象这样一个场景。当我们评估一个后期职业的从业者的资历时,像外科医生,我们可能会关心他的学历,学术成就,做了多少台外科手术等。像是教师,可能会关心教师的职称,从事教师工作的年限,教出来过多少考上好学校的学生。这些都可以随着时间积累。


而当我们去考核一个程序员的时候,当你工作超过 10 年以后,就基本没人关心你具体工作了多少年了。当考核某个具体技术能力时候,之前工作过多少年,也不怎么能为你加分。


试想一下,一个人说自己干了 10 年后台开发,去应聘一个 iOS 软件开发的职位,这 10 年的工作经验能有多少加分?可以说非常非常寥寥。真正能加分的,是真正具体在 iOS 软件开发这个方向上的经验。因为这意味着这个人能不能直接上手实操,产生价值。而如果没有相关的经验,很多公司(注意不是所有,因为很多大公司,更注重的是人本身是否聪明,换句话说,看这个人是不是个好苗子)可能就直接给拒了。


程序员的世界,技术太多了,这就面临这样一个窘境:想都学都精通,是绝对不可能的,即使学得会,不实际使用,也是假把式;想专注学且深入的学一个,也很难,因为这个技术如果过时了,就很亏。而且,一个技术如果长时间不发展,只能说明这个技术已经被别的发展的更好的技术取代。这点我在专栏文章《22 | 学习观:程序员如何定义自己的技术舒适区?》中也聊到过。


时间就像是抽水机,不停的抽干程序员的“护城河”。程序员能做的,就是不断学习不断学习,保持自己的竞争力,保证自己护城河的水位。


程序员应该怎么应对呢?


这么看,程序员可不就没法和时间做朋友吗?别急,自有应对之法。

技术


上文更多的是从技术角度来阐述的。简单总结一下就是,技术发展太快,程序员用技术做护城河,要一直维护,而且还不好积累。但是这也并非是绝对。


就拿前文提到的例子来说,什么 J2EE,JSP,Hadoop,Android,iOS,CNCF,前端等等等等,都是具体的开发应用技术。这些技术,就算是不更新换代,也不可能成为长久的护城河。为什么?因为它们创造出来,就是为了让人容易学会的,就是为了让人容易使用的。否则它们都成不了主流。换言之,主流的技术,门槛不高,都不会太难。想学会,很容易。很容易学会的东西,仅仅是因为市场需求急迫,才能带来高溢价。而高溢价会吸引更多人来学这些应用技术,以至于供求平衡,消灭这个技术的高溢价。


曾经打字员也是一门职业。因为会打字的人很少。现在还有打字员这个职业吗?技术技能,不是门槛。


而很多技术,则是门槛很高。比如操作系统内核,网络,安全等等。如果你在这些领域深耕十几年,成为领域内的专家,那么这个护城河绝非旁人一年半载能搞定的。当然,这也看浪潮和机遇。操作系统内核火了,更多的是被云计算虚拟化等潮流带起来了。而如果没有这波浪潮,这些非常底层的技术,可能不会带来太高的溢价。


没人能预测未来的浪潮,所以,这条路更多的是看自己的兴趣。我有个大学同学,就对操作系统内核非常感兴趣,零几年就自己折腾 FreeBSD 什么的,大学毕业也是做的相关的工作。这就是兴趣的力量。


综合能力


程序员还可以用综合能力来打造自己的护城河。我在专栏的很多篇文章中也反复提到,技术不是事儿。不会大不了就去学嘛。程序员也需要成为 N 边形人才,而对于很多岗位来说,技术只是 N 分之一,可能还不是最重要的那个一。


我专栏中也有提到过很多对程序员来说很重要的能力,比如沟通,爱上与人交流,好的工作习惯等等等等。但是我一直觉得,最重要的一个,可能就是对业务的理解能力。这里说的业务,是泛指所有用技术解决的问题。并非特指具体的业务。


举个例子,我最近几年都在做数据处理相关的工作。那么对我来说,处理数据就是业务。理解这个业务的方方面面,就是最好的积累。技术也许会过时,但是事情永远在那里,而且会可能会变得越来越复杂高要求。对这个业务理解越深,越能够更好的处理未来的需求。


当然,理解业务也需要技术的支持。如果都不知道市面上主流的数据处理框架,谈何解决问题?对技术的掌握,对业务的理解,左膀右臂,缺一不可。


这就有点架构师的意思了。不可否认的是,随着能力的增长,程序员用来写代码的时间会越来越少,更多的时间会用来思考如何搞定眼前的事情,搞定未来的事情,搞定用户的需求。是不是架构师,都要这么干。


别把程序员,当成前期职业来干


35 岁的程序员会不会被淘汰?这取决于公司是干什么的,取决于行业发展势头。这些是我们不能决定的。这还取决于程序员创造的价值。这是我们能决定的。


如果只是学习点潮的技术,写点业务代码。那么,就是把程序员当作前期职业来干的。如果技术业务两把抓,深入一个行业/领域/业务,了解问题的方方面面,同时不断学习这个行业/领域/业务里的新技术,那么就是在把程序员慢慢打造成一个后期职业/全期职业。


一个好的程序员,干活的时候能以一顶三,做设计和决策的时候,能以一顶 N。因为一个错误的设计和决策,可能会连续不断的,浪费不知道多少人的时间。而越是大的公司,越愿意让有经验的程序员做决定。这里的经验,一部分是编程和技术经验,一部分是行业/领域/业务经验。


好的程序员,肯定有扎实的基本功,比如操作系统,网络,数据结构,这会让程序员学习的更快更轻松。同时也需要理解自己要解决的问题的领域。


我这里提到的,也只是其中一条路。每个人的经历不同,道路选择也不同。这里相通的是“积累”。工作能给你带来有效的积累,那么就更可能是一个长久之计。

我焦虑吗?习惯了


以我自己来说,我刚毕业的时候,都不是焦虑,而是坐立不安。虽然不能说看啥啥不懂,干啥啥不会,但是也总会遇到各种不会的东西,感觉自己干活憋屈,舒不开身。这时候就攻技术,啥不会就啃啥,啃到会为止,啃到在工作中能用的游刃有余为止。


再过个三五年,技术也不是问题了。而正是目睹了一波又一波技术的兴衰,我慢慢习惯了保持学习的状态。是因为焦虑吗?有一部分原因,我觉得更多的是兴趣和热爱。而且很多东西,都是相通的,打好基础,把好脉络,可以学的很快。


再往后,感觉到技术其实不是什么事儿。能用技术把问题解决好,才是真的价值所在。所以我慢慢开始注意积累工作领域中的业务问题,理解业务痛点和难点,思考如何给出解决方案。


我们都习惯用零件来比喻打工人在公司里的位置。这未尝不可,但是却并不准确。零件过了磨合期,就只会被磨损。而人是可以在工作中学习和积累的,这样可以让自己工作的更好,而不是磨损。


换个角度,工作中遇到的各种问题,都是积累自己能力的原材料。问题解决了,自己能力也应该得到相应的提升。


就算我们打工人是公司的零件,也要努力做汽车里的发动机变速箱,而不是传动带或轮胎。

公司也焦虑


比尔·盖茨在零几年的时候说


微软离破产永远只有 18 个月


站在 2021 年,我们可能无法理解世纪之初那几年的时候,微软是一个什么样的存在。那时候的微软可谓是真·拿着望远镜也看不到对手。Windows 2000,XP,Server 2003,惊艳全球,雄霸个人电脑市场。Office 系列更是没遇到一个能打的。


当时,江湖流传微软现在用的技术都是 10 年前研发的。换言之,微软有近 10 年的技术储备。当然这应该是有夸大的,但是也从一个侧面表达了大家对微软实力的认可。彼时的微软亚洲研究院,简直就是毕业生眼中圣殿一般的存在。


那时候听到比尔·盖茨说什么微软距离破产永远只有 18 个月,那感觉,用现在的话说,就是“老凡尔赛”了。但是后面的剧情走向,还是验证了什么叫姜是老的辣。鲍尔默(爆耳膜)接任 CEO 之后,微软一路走下坡路。Google 带来了在线办公套件,云计算和虚拟化的兴起,Mac 的绝地反攻,都对微软是不小的打击。而 Android + iOS + Chrome,一套组合拳,那态势仿佛要给微软直接干趴下。


所以,公司也焦虑,焦虑的不行。软件行业就是发展这么快,让头部公司都感觉到压力山大。远的不说,这几天不是还有新闻说,拼多多的日活用户超过淘宝吗?虽然这个超越只维持了短暂的几天,但是也说明大家已经在一个量级上了。有足够的理由焦虑了。


公司焦虑,如果公司里的员工都是一群不能打的,那你觉得公司能愿意吗?所以公司肯定要用各种方式方法,把自己的焦虑传递给员工。


因为在软件行业这个快车道上,慢下来,就可能被淘汰。


欢迎订阅专栏《职场求生攻略》


发布于: 2021 年 03 月 08 日阅读数: 47
用户头像

臧萌

关注

一线程序员,偶尔写写字 2017.10.20 加入

《零基础学 Java》,《职场求生攻略》 视频课作者 《Java入门1·2·3》作者

评论 (2 条评论)

发布
用户头像
感觉这篇文字不止适用于程序员的职业规划,互联网从业者看了都应该能有所共鸣。哪怕做零件,也要迭代自己、提升能力,看完之后,再次点燃了作为”零件“的”主观能动性“,谢谢分享!

最后,忍不住捉个虫。想通的是“积累”>>应为 相通的是“积累”。
2021 年 03 月 09 日 14:07
回复
bug termiated :-)
2021 年 03 月 16 日 09:25
回复
没有更多了
职场求生攻略答疑篇之 5 —— 我,程序员,非常焦虑