Skip to main content

程序员的中年危机,像呼吸和交税一样无法避免

俗话说,码农四十不如狗。他们迫切希望窜出这个陷阱——毕竟中兴欧先生的悲剧还历历在目,让人胆寒。这样的中年危机是宿命么?要理解此事,我们先从分析的“老西医”危机入手。
那位说了,我只听过“老中医”。中医到了须发皆白,仙风道骨的岁数,往那儿一坐就有点儿胡说胡有理的派头。西医则不然,年轻力壮的可以日剖数患,耳聋眼花的拿起柳叶刀手直哆嗦,新技术也学得慢了,识趣的也就退隐做吉祥物去了。所以,世人只羡慕老中医,却并无“老西医”的提法。
我们无意介入中西医之辩,只想借此说明:你的职业是否会遭遇中年危机,与其本身特性有很大关系。老中医和老西医的区别,可以折射出决定职业生涯走势的两个关键“速度”:
一、核心能力的习得速度。
有的职业学起来很简单,比如查水表,经过三分半钟培训,就可以拿着手电筒上岗了;有的职业学起来很困难,比如算卦,要熟练掌握十三道簧,能在实践中察言观色,还得会圆粘置杵,没有十几年的道行是不行的。也就是说,查水表的能力习得速度快,算卦的能力习得速度慢。
中西跟西医相比,技能更加玄妙,如何望闻问切,怎样君臣佐使,都不是在手册上一望而知的。要经过多年实践,才能在言谈举止间让病患笃信。西医虽然也不易掌握,不过好歹流程准则较明确,倘或天赋异禀、勤学苦练,一般三十来岁也就在技能上达到一线骨干水准了。
显然,能力习得速度快的行业,后辈更容易挑战前辈,形成中年危机。
二、职业技能的演进速度。
有的职业,技能随时代进化很快。比如说广告作弊行业:在这个高度博弈的市场中,老的漏洞可能半年就被堵上了,于是就有新技术产生。因此,“广告作弊技术权威老专家”这一职称并不存在。可是也有的职业,技能几乎一成不变。比如说中医,今天的学生和明朝中叶的学徒,念的书都差不多是那些本,一旦学成,这辈子并不需要担心知识体系过时。
西医则不同,无论是手术器械、临床用药、还是治疗方案,都在快速演进。刚把老仪器鼓捣明白了,新仪器又上市了,他那点技术专长也就成了回字的四种写法,徒增笑柄耳。
又显然,技能严禁速度快的行业,手里的秘籍容易成为废纸,形成中年危机。
上面的规律,对其它行业也适用。我们列举了一些行业的定性分析,放在下图之中,供大家参考。如果码畜维舟也照方抓药分析一番,恐怕哭出来的心都有了。
先说能力习得速度。这一点,有些码农没有客观认识,总觉得身处高科技行业,技术含量跟造氢弹差不多。别扯骚了!在当今世界所有技术工种之中,编程可能是最容易上手的。还甭说、培训过三天两早晨,就算是灵性的高中生自学一阵,也能胜任 IT 公司绝大多数码农岗位。(注意,我说的是绝大多数,当然任何行业都有高精尖的一小撮人,这个后面再说。)这个习得速度,比起大夫、钳工和说相声的,都不知道快到哪里去了。
你是个有十年经验的高级工程师,面对一群刚毕业的实习工程师,在编程技法的稳准狠上都不占优势,倚老卖老又有何用呢?
再说技术演进速度,这更加令人绝望:很少有像这行这样,经典书籍一出来,技术就快要过时了。我们上学的时候,数据结构课钦定用 Pascal,可是这语言毕业以后我就再也没见过;前些年,Map-reduce 还没在被窝里焐热乎呢,Spark 就甚嚣尘上了;我们做 speech 时风靡的工具包 HTK,在 DNN 普及以后也已成了考古学研究的范畴。古人说,饮食与音乐不过百年。我要说,码农的技术不过十年。
于是,先进者不但没有优势,可能还有巨大的劣势:你是一位中年 JS 表演艺术家,老一套已经信手拈来,可新来的小弟直接上 React 秒杀你;你花了十年时间把 C++ 玩得滚瓜乱熟,可面对现代大型分布式项目,年轻人用 scala 比你搞得又快又好,还没有那么多令人抓狂的崩溃和侧漏。
你会的技术,别人一学也会;你掌握的利器,过两天就成了钝铁。这让码农行业呈现出一边倒的年轻化特征,在大多数非创新岗位上不存在老专家这么一说。所以,我们得到了一个令你惊喜的结论:码农的中年危机是由其职业属性决定的,与呼吸和交税一样无法避免。
有人不同意,因为按某些鸡汤所说,努力干上一万小时,争取成为 Jeff Dean 那样“高精尖的一小撮人”,不就完美躲开中年危机了么?其实,这完全是正确的屁话:以大神为参照的话,你缺的不是努力,而是智力。这么说你就明白了:你本是一位朴素的老农民,一心探索宇宙爆炸的奥秘,可是在你连无理数还没学明白的时候,回头一看,地里的麦苗早让驴给啃了。
应该怎么做呢?还是要在上面的图中按图索骥,找到让两个速度慢下来的出路。无论怎么腾挪,都要从狭义的码农职业转换到其他相关职业,这里我们可以给出几条可行路线,概括为 3P(PPT、Politics、Paper)。
PPT 路线:这条路线,是从写代码的岗位转入写 PPT 的岗位,比如产品、运营、领导秘书,或者仍在技术团队中的项目管理、架构等角色。
分析此路线的好处,首先在于 PPT 技能随变化很慢。我翻了翻十几年前看过的一些讲稿,放到今天也基本能糊弄过去。因此,PPT 岗位不太容易因为技术的骤然升级而被淘汰。另外,虽然 PPT 能力非常容易习得,可是相配合的演讲能力却需要一番磨炼,总体来说比码农的上手速度也要慢。
Politics 路线:这条路线,是从生产力岗位转入生产关系岗位,一般来说就是各种管理岗。这条路性价比高,竞争也激烈,要有意识地构建好自己的能力,才有机会进入。
这条路线的两个速度都很慢:搞生产关系这事儿,需要长时间与人斗的历练,核心能力的习得过程相当漫长,除了天赋异禀的白头山天降伟人,一般都是老而弥坚。另一方面,与人斗的技能树,中国在奴隶社会以降,就没有太大变化,以至有“半部论语治天下”的说法。所以,向这个方向努力,对码农来说,是逃离职场中年危机的通途。
Paper 路线:这条路线适应者相对较少,不过却非常有效。简单来说,能够跟学术界搭上点儿关系,在此序列里标名挂号,比只会 coding,长期职业生涯会顺利得多。
学术能力的习得是很慢的,因为这个圈子有打怪升级的体系和标准:谁发过什么期刊,得国什么第一名,是哪儿的会士,这些 credit,跟码农们只看几点交代码的环境可不一样。在此体系下积累起来的“认证过的能力”,是只增不减的。所以,虽然学术面临的问题也随着时间也快速演进,中年危机来得并不猛烈。
要走上面三条路,重要的是“求实不求名”:做还做你的工程师,不过平素里多练练写报告,多琢磨琢磨人,有机会跟合作的教授蹭点合作论文,职业生涯的转型和解脱有很大的机会。告诉你们一个秘密吧,传说中的的那些技术大神,比如说那谁和那谁,以及大多数身边摆脱了中年危机困扰的高级码农,其实大多数都已经在这几条路上,与码农本行早没了关系。

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...