程序员的职业生涯,一个年薪50万程序员的自述

今天在知乎被问到一个问题:程序员该如何制定自己的职业路线?

目前在二线城市-郑州一家30人的软件公司担任研发总监岗位,将近13年的程序员生涯,分享一些经验,更多的可能是教训吧,希望对题主有些帮助。

首先分享一下我的程序员职业生涯发展经历,还是以工作年限和收入为主线来描述吧,比较直观,钱 一定是大家比较关注的点。

下图中纵坐标为我的年薪收入,横坐标为工作年限,2010年毕业,至今13年了。

首先我是一个很普通的人,农村出身,父母没什么文化,更没什么背景。

从一个山里的高中,费了九牛二虎之力考上了一个二本大学。

当年我们那届高中毕业生,整个学校考上二本以上的人只有4个。

当时或许有点沾沾自喜,可现在回头看,尽是心酸,这个世界就是不公平的,教育也是如此……

我也曾在上海待过五年,在一线城市,程序员能达到50万还是相对容易一点。

2018年,因为父亲生病,又添了孩子,我不得不放弃上海的工作机会回到郑州。

那时在上海的薪水已经快到目前这个水平了,不过我不太想聊一线城市的机会,因为那个相对容易一些。

在开始分享之前我先声明一下,我是花了超过10年的时间才达到目前这个水平。

可能在二线城市比部分同龄人好点,但是在整个计算机行业,这个其实很普通。

完全说分享经验有点不太好意思,有一半算是教训吧!

我不会分享几句所谓优秀经验或者成功金句之类的话,让你一看就能学会,立马挣大钱,我觉得这是不可能的,或许也是因为我没那个能力。

如果你想从这篇文章里获取点经验和教训,那么值得你看下去。

保持学习、保持成长,理解复利效应

从上方的收入和工作年限曲线可以看出,我的年薪和工作年限基本符合复利曲线。

在画出这个图之前,我没想着结果竟然跟复利曲线相吻合,可仔细想想,任何事情的投入和产出大致也都是如此。

在外行或者初级程序员看来,高工资的程序员一定都很聪明,智商也都很高,干的高新技术类的工作。

可作为写代码的人,大家都知道,我们都是从初级成员熬过来的,啃书学习,加班通宵,头发大把大把掉。虽说工资相较于其他行业高点,但挣的每一分钱也都是辛苦钱。

如果说一定要找一个程序员能挣高工资的方法,我觉得是“坚持”。

其实程序员跟其他行业一样,只要你坚持学习,不断成长,你的薪水自然就能符合复利效应,后期的工资涨幅会越来越高。

记得当初的大学同学,刚毕业的同事,能坚持到现在的已经屈指可数了。

不是说坚持不下来的都没挣到钱,也有部分同学转行做生意,也赚到钱了!

可只要坚持下来的,大部分都还混的不错,有一份不错的收入。

过了30多岁,如果程序员没有很好的竞争力,要么是转行了,要么就被淘汰了。

很多人都在纠结说30岁或者35岁的程序员没人要了,我想说这不是程序员岗位的特例,每个行业都是如此。年龄大了,自己没有竞争力,被淘汰不是必然的么?跟行业有什么关系?

看门大叔还要求不能超过55岁;保洁阿姨要求不能超过50岁;工地搬砖的工人还要求不能超过40岁;超市的收银员还要求不能超过35岁……

其他行业都是如此,凭啥你程序员就不能有年龄限制?

所以我认为,30多岁的程序员面临裁员和就业压力是很正常的情况,不是行业特列。

我们要关注的是如何在工作5年、10年、15年的时候做好定位和转型,适应行业需求,那么你就永远不会被淘汰。

二八定律永远适应这个世界的任何一类人,程序员也是一样。

所以坚持学习,保持成长是保持竞争力的唯一选择,不管是20岁还是40岁,都一样。

程序员职业生涯

我们来按照工作3年、5年、10年这三个主要节点来分析程序员的职业生涯。

有些人可能压缩这个成长时间,有些人可能比这个时间还要长,这是我根据自己的经验预估的平局节点。

3年是第一个分水岭

3年是一个程序员正式入门一门技术的平均时间,这三年特别重要,很多技术的习惯都是在这三年养成的。

所以第一份工作尤其重要,很多人是不是会猜到我接下来该说要找个好的公司、好的团队,多学习。

我之前也是这么告诉别人的,可后来我发现其实现实往往不是这样,并不是谁都有机会一毕业就拿到大厂offer的,反而是大多数人一毕业都是在小公司发展。

很多人可能会较劲,其实没那个必要,看看每年大学生毕业,211、985根普通院校毕业生的比例就一目了然了。

所以毕业尽量去大厂发展,学技术,见世面,刷经验和工作背景,虽然是个最优的选择,如果你能得到这个机会,我当然也推荐,但对大多数人来说这只是个假设。

那么问题来了,在小厂就不能学到知识和经验了么?

当然不是。

虽然大厂具备较好的技术储备,规范的开发流程,充足的人力资源,但未必大厂出来的都是优秀的人。

大厂大部分技术人员的技术范围都比较窄,尤其对于初级程序员来说,一般只负责一个技术领域的一部分内容,做好螺丝钉即可。

我这么说可能很多大厂的技术人员会不服气,那么我就来说说小厂的优势。

跟大厂刚好相反,技术储备少,流程不规范,资源不充足,很多团队连产品跟测试人员都没有。

但对于初级程序员来说,这未必是坏事,你可接触的技术会比较多。

在学好自己技术的同时,可能会接触产品、测试、部署、服务器运维等等各种各样的技术工作。

这样工作状态也是大部分人吐槽小公司的原因,但也有人从这种环境中历练出来,在很短的时间内成为研发组长。

我在工作一年多时候犯了很多程序员都会犯的错误,就是跳槽了,而且跳槽之后发现工作还不如之前,把自己耽搁了一年多,悔不当初呀。

前三年是程序员打好基础的最重要三年,如果不得已不要轻易换工作,忍住各种薪资的诱惑,踏踏实实做好岗位工作,学好技术。等你三年后学成了,分分钟就把少挣的钱补回来了。

所以,不要抱怨自己的工作环境,适者生存才是强者的准则。

只有弱者才会去自怨自哀,所以大家在网上看到的都是不如意的人在传播负能量,是正能量的人太少么?不是,因为他们忙着做自己的事情,没太多时间浪费在网络上。

5年是第二个分水岭

对于不断成长的技术人员,在工作5年的时候会出现跟普通程序员明显的差距。

大家肯定听过某某工作几年后突然跳进大厂,薪水翻几倍的故事,这些都是真实存在的。

5年的研发经验,在二线城市如果综合能力到位,技术扎实,是可以胜任研发组长的岗位的,但都是少数人,大部分人还都在继续码代码。

成为技术组长后,可根据发展和机遇转项目经理、产品经理,或者刚高级的研发总监等高级岗位。

在二线城市,工作五年,如果技术扎实,还有一个方向可走,那就是主程。主程再往后的发展方向就是架构师。

但是有个现状很残酷,在二线城市纯技术路线工资一般都在一万多,最多两万,不会再高了。

如果你想拿更高的工资,只能走项目经理、技术经理、产品经理等管理路线,结合自己的技术,拿到更高的工资。

纯技术路线在一线城市的路会更长一点,因为薪水空间很大,很多人能做到30岁,35岁,甚至40岁。

但是在一线城市,纯技术路线依然会遇到薪资瓶颈,只是这个瓶颈比二线城市来的晚一些。

所以综合一线二线城市的情况,我们作为程序员要根据你所在的城市规划好自己的职业规划,要学会顺势而为,不要死磕技术。不是说纯技术岗位没有,而是过了一定年龄,即便你技术再好,你是首席架构师,可市场对你的诉求越来越小了,你的风险就越来越大。

很多人就纳闷,为啥35岁的程序员技术越来越好,怎么没人要了?

因为高级技术岗位就那么多,其他岗位我为啥要招一个这么贵的程序员,没必要呀……

2018年,我记得我在回郑州之前,我学了大量的机器学习的技术,想着找一个人工智能的工作。

可回到郑州后发现,机器学习的岗位几乎没有。

更重要的是我发现纯技术岗位在郑州工资2万已经封顶了,不可能再高了。

所以在写代码之余,我就看大量的管理书籍,工作中也不再只专注于技术,后来经过两年的时间,从一个程序员转变成一个技术负责人。

在二线城市的小公司,技术负责人要做日常研发、研发管理、部署、交付、运维等等各种工作。我当时给自己的定的目标很简单,就是要带着团队把这个项目做好,顺利交付,如果需要我可以做任何事情,因为把事情做成才是成长的最佳途径。

在这个过程中除了技术,还经历职场内斗,因为技术思维限制,加上性格刚直,差点被老板裁掉。

被职场规则和职场情商惨痛殴打后的我,终于也学会了职场中技术之外的生存技能,最终又坐上研发部负责人的位置。

后来发现,这个位置是干出来的,不是学出来的。如果我一开始不去争取,等自己慢慢学会再干这个岗位,我可能永远都学不会。因为这个岗位我只要不尝试,那些坑跟惨痛都教训你永远没有机会经历,也就永远不会成长。

除了技术上学了两种新的语言nodejs 以及python以及各种技术框架之外,研发管理、项目管理、产品设计都有涉猎。最重要的是学会了沟通技巧,学会了向上管理,这才具备同时满足老板、忙族市场负责人以及满足客户要求的能力……

10年,不同程序员的能力和收入已经出现极大的差别

5年到10年这个时间段,是很多程序员转岗晋升的关键时间段。每个人都有很多机会,可把握住机会的人少之又少。

前段时间,我面试一个工作8年的程序员,一直在做安卓开发,他在工作5年的时候开始做技术负责人。可在做技术负责人之后,他基本就很少进行技术提升了,安卓技术作为终端技术,本身就具有技术局限性。他当了三年安卓技术负责人出来之后,发现他已经在慢慢失去竞争力。

5年的工作经验做一个安卓的技术组长没问题,可八年工作经验,在二线城市,按理说应该具备当一个研发团队的研发组长的能力。可他在过去三年里没有学过其他技术,甚至安卓技术都动的少了。

他这样的例子很典型,很多人都跟他一样。技术到了五年之后,如果你的下个目标是成为技术负责人,那么你一定得懂后台呀,不懂后台怎么懂架构?不懂架构怎么做技术负责人?先不说综合能力,就光技术能力这一条他就不满足。

他的情况同样适用于前端、客户端、ios等终端开发,如果你的下个目标是研发负责人,工作五年后的你,一定要扩充自己的技术栈,后台技术是绕不过去的坎儿。

所以,作为一个技术人员,要想保持竞争力,最低的要求就是保持技术的更新。我给自己定的技术学习标准是每两年至少学习一门新的开发语言。这还不包括管理、沟通等综合技能。

又或者五年后的你可以朝着项目经理、或者产品经理发展。只要持续不断的学习和沉淀,再经过3年,最多五年,等到工作10年的时候你就会上升一个大的台阶,你的薪水也是一样。

在一线城市也是一样,你的瓶颈期可能会晚几年,但是早晚会到来,不要被安逸的工作环境和所处舒适区麻痹了自己。如果你不想遇到30岁、35岁被淘汰的危机,那么请提前做好打算。

正式因为10年的时间足够长,长到可以放大任何人10年的积累和懒惰,所以会出现两极分化。

做的好的优秀的人,已经到了研发总监、创业合伙人、甚至是当老板的高度。而不够努力的人,偷懒的人,已经慢慢遇到瓶颈,走向被淘汰,被替换的窘境。

而且工作10年的时候,收入的涨幅都比较大,收入的来源已经不是主要靠薪水了,而是靠分红、期权、股票等方式。

我目前的岗位是研发总监,两年前晋升到这个岗位,公司刚开始给每年固定分红,后来又给的期权,这两部分收入已经远远大于工资的收入了。

这也是坚持到最后复利效应开始正式发挥作用的时候,收入很多时候是成倍增长的。

认知理论里还有一个名词叫涌现效应,指的是当大量个体聚集在一起,个体之间产生相互作用,从而使得整体拥有了和个体完全不同的新属性。也就是说高阶行为倾向于从相互作用的低阶行为中涌现,其结果通常不是线性的,也不是简单的相加。比如,冲厕所时会出现一个漩涡,单个水分子没有漩涡这个属性,但是聚集在一起就有了。

在学习的过程中,当知识大规模积累后就会发生“涌现”现象,我们会如同打通了任督二脉,收获突破性进展,即量变产生了质变。这告诉我们知识的学习要持之以恒,日积月累的沉淀,是厚积薄发的释放。

好的,落笔此处,没想到能写这么多。写的越多,牵涉到的信息就越多,就越讲不清楚。

希望对屏幕前的小伙伴有帮助,有问题小伙伴可以关注、私信或者留言。



作者:落笔七年
链接:https://www.jianshu.com/p/1272b96162ed
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(教科书,艺术人生,java)