你好,我是臧萌。这两天看了半佛老师的一篇文章,有感而发。文章叫做《为何有的职业后期不给力》。
你没看过的话可以去看看,当然,你要是懒得看半佛的原文的话,也不影响我这节课。简单来说,半佛老师从职业什么时候开始给力这个角度,把职业划分为了前期职业和后期职业。
前期职业刚开始很给力,后面越来越不给力,比如工作多年后,竞争不过新人,薪资待遇无法持续提升等。后期职业则正好相反。半佛老师的观点我还是比较赞同的,但是也让程序员这个职业看上去前途堪忧。所以我有感而发,想来和你一块谈谈程序员这个职业的前途。
如果我在二十出头的时候看到这篇文章,肯定会焦虑得不行。那时候的我,非常像是半佛老师文中那种,可以被公司用完就扔掉的零件。所以我那时候就一个理念:提高自己的性价比。简单来说就是努力工作,好好学习。
“程序员是吃青春饭”的这个观点,其实当时已经有了。所以焦虑感肯定还是有的。而且当时看不清自己如何才能站住脚,稳扎稳打地向前发展。
最近几年,反倒是没有那么焦虑了。
一部分原因是焦虑惯了,这份焦虑感,让自己持续要学东西,跟上技术的发展。一段时间没学习没成长的话,就会感觉心里不安。
就像我经常提的那句话一样:软件行业在快速发展,一个技术如果适应行业的发展,那么势必一直保持升级换代;而保持不动的技术,基本都是不适应行业发展了,慢慢地都会被淘汰。因为程序员见过太多潮起潮落,一直这样焦虑着,渐渐就养成了持续学习新技术、持续扩建自己技术领地的职业习惯。
另一部分原因是,自己在误打误撞中,也算是走出了一条适合自己的成长之路。我觉得我在这条路上的有些感悟,对大部分愿意走技术路线的人还是有帮助的,在这里我想借半佛老师的文章为契机,在这篇文章里和你分享一下。
其实我在专栏里,原本有一节叫《对不起,程序员这个职业可能无法混到退休》。但是考虑到内容连贯性等原因,这一节中的很多观点和内容被拆散到别的章节去了。那这节课,我们再多聊聊程序员这个职业。
半佛老师在文中,用前期职业和后期职业来给职业分类。前期职业的典型可以说就是程序员,后期职业的典型就是教师和医生。
这里其实是有一点幸存者偏差的。其实仔细看看教师和医生,有多大的比例是在职业后期,成为了名师或者名医呢?
教师和医生可以一直做下去,这点对比程序员确实是优势,但是如果没有混出点名气来,待遇也不会提升太多,这么一直混下去有啥意思呢?
所以说,无论是程序员,还是教师和医生,想提升自己的待遇,肯定要提升自己的能力。这个过程必然是艰辛的,绝不是说选对了行业,就可以闭着眼睛随便怎么混都可以混出名堂来了。我们都在说,选择比努力更重要,但无论选择是什么,努力都是让一个人脱颖而出,提升自己职业发展上限的必要因素。
借半佛老师的一个观点,软件行业是新行业,在爆发式发展中,缺人不缺钱。其实真就能力和产出而言,很多人是不值这个钱的,但是缺人,没办法。尤其是对于职业初期的人来说,多出几千块,其实就感觉挺多了。
程序员很多时候也确实要加班,工作强度确实很大。所以对于能力略逊一筹的人,只要肯吃苦耐劳,很多公司也愿意给到行业标准水平的薪资。比如说我自己,我就觉得我刚毕业那会儿不值什么钱,因为什么都不会。
种种因素,造成了程序员的起薪比较高。但是这也可能给程序员一种错觉,感觉自己就是值这么多钱。所以想当然地觉得,随着自己工作经验的增加,收入应该相应增长。但其实人才只会越来越多,程序员的精力会慢慢下降。所谓的工作经验,如果得不到市场的认可,自然无法获得更高的薪资。
更残酷的一点是,正如半佛老师所说(我附议),程序员用到的技术一直在更新换代,老师和医生在立住脚之后,可以不用持续在自己的专业技能上投入太多,也能混得下去,但是程序员却不行。
那如果程序员可以保持自己的技术,并且跟得上发展呢?比如说,一个程序员现在可以用主流技术,熟练的写着CRUD的业务代码,n年后依然跟得上主流技术,依然可以熟练地写CRUD的业务代码。不得不说,即使在这样的情况下,程序员可能依旧很难跟得上行业主流的薪资水平。
为什么呢?很多人会说能力没涨,但是年龄涨了,精力慢慢不行了,自然不值那么多钱。当然这是一个原因,但是我觉得这不是主要原因。更主要的原因在于,软件行业需要程序员有创新的精神、有斗志、不安于现状。
比尔·盖茨是微软公司的创始人,可以说他用Windows+Office软件改变了世界一点不为过。这里我借用比尔·盖茨的一句话:微软离倒闭永远只有18个月。
你仔细思考一下这句话。很多人会觉得这句话是危言耸听,但是你纵观微软的发展历程,看看它经历过的那些低谷,这句话绝对是真实的写照。当然,微软最终没有倒闭,而且还发展得很好。有一点我想你肯定认同,那就是微软里绝对不是一群喜欢岁月静好,安于现状的人。
所以,公司也绝对不想攒一堆发展后劲不足、安于现状的员工。这是在给公司的发展埋雷。从这个角度,你是不是对为啥年龄大的程序员容易被淘汰这件事,有了新的认识呢?
当然,我并没有做过调研,去分析这些人被公司“优化”是什么原因。但是任何一个明智的软件公司管理者,都会淘汰后劲不足的人。简单来说,我相信很多公司都有或明或暗的规定,一线软件研发岗位,如果在某个年纪前无法升职到某个岗位,那么就必须淘汰。这是为了让公司保持活力的措施。
在专栏中,我也尝试谈过我对职业分类的理解。当然这里只是谈论职业本身,并没有论高下的意思。也欢迎你在留言里说说你的想法。
首先是有些后缀为“员”的职业,比如售货员、收银员、操作员等等。这些工作的特点是技能要求少,而且技能本身不怎么需要更新。这些职业的工作成果,可以有非常明确的评判标准,工作内容也可以详细地用规定来约束。员工不需要去想怎么把工作做好,因为都已经规定好了。当然,这不是什么严格的分类,比如宇航员需要的专业知识、技能和素质,绝对比大部分职业要求都高。
然后是后缀为“师”的职业,比如教师、医师、律师、厨师以及我们软件工程师等等。这些职业的一大不同就是,产出成果的过程很复杂,影响工作的因素很多,无法规定标准的工作流程,产出的成果没有统一的衡量标准,所以这类人才是无法批量培养的。从业者需要积累大量实践经验,才能形成一套自己的工作方式。
就拿教师来说,如何培养学生,没有固定的套路;怎样才叫好学生,也没有统一的标准。这种类型的工作,就需要从业者发挥主观能动性,根据自己工作的经验,思考如何才能将工作做得更好。
最后是后缀为“家”的职业,比如科学家、教育家等。这些职业更偏向研究方向。做开创性的工作,工作成果的不确定性更大,对从业者的专业技能要求是无上限的。如果对别的职业来说,创新是加分项,在各种“家”这里,创新是起点。
回到我们的主题,程序员的路应该怎么走呢?我有两个建议:第一,技术要不停地学。第二,脑子要不停地思考。
技术这点我不再赘述了,技术一直在发展,不学的话,老的技术就被淘汰了。脑子思考什么呢?回到我反复强调的一点,那就是思考业务。思考自己所在的行业是在解决什么问题,问题是如何得到解决的。这是一个软件架构师必须锻炼的能力。无论我们有没有软件架构师的头衔,这都是我们不断进步所需要的养分。
回过头来再echo一下半佛老师的一个观点,吃下的资源越多,要替代你的成本就越大。对于程序员来说,什么是资源呢?就是日常工作、做的项目,解决的问题等等。工作中亟待解决的问题是最宝贵的资源。能够理解这些问题,解决这些问题,那么收获的经验就是自己成长的后劲儿。
有人吃了很多资源,确实是成长到了更高的水平,但有人却成长不够快。那么公司肯定更愿意把资源供给这些成长的更快的员工,期待他们可以助力公司发展的更好。
软件行业确实残酷,可能没有哪个行业里公司的危机感如此强烈。如果微软距离倒闭永远只有18个月,那么别的公司呢?如果公司本身都需要保持奋进才能生存,又如何养着一群期待岁月静好的程序员呢?
程序员不是一个能混的行业,混只能坑了自己。无论待遇如何,无论职位如何,问问自己:我今天学了点啥新东西吗?我今天悟到了点啥新道理了吗?
根据我的实际体验,在软件行业中,一线程序员的高级人才还远没到饱和的程度。至少就现在的情况看,对标阿里P8左右的高级软件开发工程师,在市场上还是一人难求。在面对人才这个事情上,绝大部分公司都不差钱。所以我们需要担心的不是自己以后有没有地方呆,而是更应该注意如何才能让自己成长为人才。
其实只要有合适的候选人,很多时候公司更愿意雇用高级人才,一方面是出于人力成本的考虑,对公司来说,能力强的人投入产出比更高。另一方面,这些人才已经用自己的实力证明了自己的能力和成长的动力,公司可以更放心地向他们投放资源。
软件行业,真的不能混到退休。很多职业,即使是对于医生和老师这些职业,保持水准也是标配。一直保持水准做下去,并且提高自己则是高配,可以成为名师或者名医。但是对于程序员来说,提高自己才只是标配,超速地提高自己才是高配。长期来看,程序员的职业生涯,没有保持水准这个选项。
时间不等人,技术在更新。你要学会锻炼自己的工作能力,做好技术与业务问题之间的桥梁,用好公司给你的资源,成就自己的成长。
在程序员的从业之路上,你有焦虑过吗?你是如何应对焦虑的呢?你是如何定义软件工程师这个职业的呢?你对职业分类的理解是什么?
欢迎在评论区和我交流。也欢迎把这篇文章分享给你的朋友或者同事,一起交流一下。
评论