现在社会上普遍流行一种说法,那就是程序员是一项靠透支自己青春来满足需求的职业,随着年龄的增长,程序员的学习能力和精力可能会越来越低,逐渐的会被有精力有干劲的年轻人取代,而事实真的是这样吗?
近日在Reddit一则关于程序员职业生涯问题的帖子火了:
翻译:随着年龄的增长,程序员的职业生涯会发生什么变化?对于45-50岁左右的编程经历,你有什么故事或建议分享吗?如何在那之前规划自己的职业生涯?美国和欧洲在这个问题上有什么不同吗?
在这篇帖子的评论中,许多“高龄”程序员分享了自己的故事和经历,或是根据自己的实验提供了一些职业发展建议。
我的经历
80后,年近四十,一线程序员。
对,就是和公司新招进来的95后毕业生一起干活的。
情况其实不算差,干活基本不会比年轻人差,主要还是家里的事情比年轻人多,体力上确实也感到不如从前(可能是由于缺少锻炼的吧)。
现在6点下班回到家吃吃饭带带小孩玩玩手机看看电视,基本就没什么时间了,所以很多想看的书想深入研究的技术也一直没拿起来。而刚毕业的小伙特别卖力,下班以后也没什么事所以就加班。
我们做的东西其实没啥技术含量,多花一倍时间就多产出一倍。所以看到年轻人的产量比我还高,那是相当有压力,但身不由己,明白无法和他们这么拼。
也有思考过未来会不会给年轻一代取代掉,考虑怎样才能进行差异化竞争。如果让我从新来过,我会要不钻研一门技术成为大牛,要不就早点转管理。不过话说回来管理也不是人人可做的,如果只是平庸之质,也很容易成为公司变革的牺牲品,我就见过很多十年没摸代码的经理给降为程序员的。
现在的趋势是做架构师更有前途,或者掌握了一些独门秘籍,比如debugging,scale,perf,算法等。我觉得造成我目前的这种状况主要还是没有真正热爱编程,只是把它作为一种赚钱的手段,当时跳槽以是否薪资高做为主要指标而没有考虑长远的职业发展。
毕业后就一直在外企做,开始在国内后来在美国做,都是做些螺丝钉之类的事,比如实现一个功能,现在不好也不差,做到了senior,其实自己感觉水平不会比新进的小伙好多少,或者比十年前的自己好多少。美国这边,我们部门里观察下来40左右的人可能接近一半(比例主要看公司,公司越年轻年轻人就越多,比如fb主要是30以前的,因为主管都是三十出头的,不愿招比自己大的,不好管)。
美国这不能年龄歧视,但如果裁员一般老的员工更危险,升职方面老员工也更少机会,毕竟更没培养前途了。总的来说,40岁不算好,也不算糟,但如果还要在这个行业待下去,是要考虑做些准备了,不要每天干完活就交代了。对了,我cs专业,同学中做一线开发的应该还有几十个吧(大多数在国外或者外企,感觉本土公司的还在写程序的很少,不知什么原因),脱离一线而做管理的估计也有几十个(国内外公司都有),最好的几个做到高管(管理+,国内独角兽的ceo,cto或者一线公司的vp),还有十几个在国内外院校任教,还有一些是做风投的,转行做咨询也很多,银行系统也有不少。
写给年轻人的建议
如果你还年轻,想为自己后半程提早做些准备,下面是一些我这些年的经验教训和对一些成功同事的观察。
如果想要走技术,一般工作中是学不够的,因为给一般员工的工作都是些体力活(相对来说),所以你需要在下班后或者周末进行自我学习,长期的持续的在某一领域进行投资,这个领域需要和你的工作相关的以便你可以将所学到的技术运用到实际工作中。这样多年以后建立的优势是很难被一般人超越的。
如果要早日成为管理层的候选人,你则需要除了完成领导交给你的任务还要完成其他的额外任务,做到普通员工不会做到的程度,做到超出领导的预期。长此下去领导对你的看法也会从一个普通员工调整为出色员工并委以重任。需要做到这些,同样需要你花比别人更多的努力,牺牲掉个人的其他时间。当然如果你加班了还只能完成领导给你的任务,并且持续一年以上都没有改进,那只能说要不是公司压榨得太厉害,要不是你自己能力不足,我劝你早日换一家更可持续发展的公司。
如果不想花比别人更多的时间,又想获得上面的效果,有一条歪路可以考虑下。也就是牺牲一些收入,选择能做核心工作的公司和工作,这样你在技术上会成长更快,也更容易从普通员工中脱颍而出成为管理层的候选人。通俗的讲就是A类员工选则B类公司。你有更大的机会在B类公司成为管理层或者成为技术上的领*人物。虽然你在B类公司,但由于你最终的级别比在A类公司中更高,收入在后半程肯定会更高。唯一的缺陷就是你的前半程获得的收入会更少,也许就是少的这一部分使得你买的房子是两房而不是三房。你如果在工作中见到一些大牛,每天也就和你花一样多的时间但做得比你多比你好,那他应该是从上一线来的。
写给大龄程序员的建议
如果你已经是大龄程序员或者即将大龄程序员,我觉得做好以下几点可以将职业生涯继续下去。
首先是确保你能保持你已有的能力,你已经过了能力飞速提高的时期,你能做的就是不能退步。如果有新的技术在工作中需要,还需要持续学习,这些是保证你能够在技术上不差于新人。
第二是你能够在除技术以外比新人拥有更多的东西,这主要来源于你多年的经验积累。比如不会再犯新人犯的错误,能够基于多年的经验做更好的设计,在碰到问题时更成熟地解决问题的方法。这些都不是技术但对于完成工作也是至关重要的。
第三点是选择一个信任你的领导,软件开发也是工作,是工作就和人际关系分不开,你现在不适合再频繁换公司或部门。你应该考虑追随一个有能力且欣赏你的领导,只要能得到领导的信任,你的职业生涯就会随着你领导的职业生涯继续向前。有些公司或领导就是对大龄程序员有偏见,即使他们做得并不差。在这种情况还是主动选择比最后被动淘汰更好。
第四点,不要放弃对于自己领导能力的提高,即使还在做一线开发,你也会有很多机会锻炼和展现你leadership的地方,不是只有管理层才需要lead,每个人都可以lead。每个公司其实很需要lead型人才,只是他们无法提供那么多的领导岗位。可以协调其他同事一起完成一个小项目,或者帮助新人完善设计或者协助同事调查一个bug。leadship是是无法通过看一些书或写点code获得的技能,它也是资深程序员和平庸的大龄程序员的重要区别。
最后,我觉得国内还没有形成完整的程序员周期。国内的程序员职业流行起来始于年初。要形成完整的新老更替系统需要30到35年左右,假设程序员能做到55到60岁。现在都是一直进新人,尤其其他专业的学生也转行做程序,所以如何给新人腾位置是个问题,好在现在行业恰好飞速发展,暂时还没有什么大的问题。如果行业饱和了,我觉得大龄程序员压力更大,但我觉得这不会发生。二十一世纪是信息世纪,所有所有都要数字化,太多事情要做。
StackOverflow于曾对全球的66,名专业开发人员进行了调查。通过过50,份调查结果发现一组数据:年龄在55~64岁之间的软件开发人员的数量,从年的87,(8.3%)增至年的,(10.7%)。
这说明了什么?年龄并不会影响程序员的职业发展,反而随着时代的发展,一些具有老资历,且不愿意不断学习新技术的技术人,会越来越受企业乃至行业的欢迎。
那么究竟什么样的程序员会越老越吃香呢?
1、熟练运用营开发工具
我在学校的时候,一直在用Eclipse这个编辑器来写代码,基本的操作我也都会了,但是有一点就是Eclipse有点卡,而且动不动就卡,一言不合就卡。不过用习惯了,就懒得换了。
工作了后,我同事在用IDEA,我也用了,两个一对比也是天壤之别,我就不说开发效率了,无疑是提升了好几倍,最起码不卡顿。我就说说使用心情,那也绝对是比Eclipse爽的。但是IDEA我没有那么的熟练,也在继续使用中。
所以选择一款好的开发工具很重要,不仅提升开发效率,最重要的,是你的心情好了,心情一好,干什么都来劲。
2、学会投资自己
的确,技术书籍都很贵,动不动就50-的,我想说的是什么呢?永远不要吝啬给自己投资,网上很多的免费视频教程,免费的教程有两个特点:一是入门的,二是不系统的。但是要想真的提升自己,这些入门的教程是不够的,系统学习最重要。
而且现在也是知识付费时代了,入门资料一大堆,真正能提升自己Level的东西,哪怕花点钱,给自己投资永远是稳赚的生意。不要在乎那点钱。你和别人的差距,往往真的就是这样给拉开的。因为知识创造的价值要比这几百块钱来得更猛。
3、放下“技术包袱”
许多程序员都有技术“包袱”。请放下包袱,对新技术保持开放的心态。
如果某个程序员长期从事某个特定的编程语言,而没有任何其他方面的工作经验,则一些招聘人员会视之为危险信号。
4、不停给自己充电
我们不能一直啃老本,干软件这一行,技术更新非常快,今年上半年学的技术,估计下半年就有了新的版本,我们要一直不停地给自己充电,不停地学习。哪怕是不停地总结自身不足,也比停滞不前要好,最起码自己没闲着。
还要有一定的忧患意识,公司每年都会输入新的年轻血液,有初学者,也有牛逼人物,我们不要让雇主逼着自己去学习,自己要有主动充电意识,这样才不会被周围的人给超越,才不会给后来者给超越。但是这都不是最根本的原因和出发点,最根本的,还是为了提升自己的能力。