不少程序员加我好友咨询问题,几乎每个人问的问题都跟职业规划有关。这提醒了我,其实我自己也一直在思考同样的问题并尝试规划未来。于是想和大家分享一下自己在这方面的感悟。

本文仅从我自己的角度来剖析对程序员职业规划的看法,并不全面。而下文中提到的程序员群体也泛指在一线具体执行编码任务的程序员,不包含一些高精尖技术岗位的专业技术人才或是已经有自己明确职业规划,已经进阶成功的工程师。

什么引发了焦虑?

互联网是一个新兴但高速发展的行业。新兴意味着没有那么多的职场楷模给新人指明方向,也没有一套公认的稳定可复制的职业发展路线。高速发展意味着变革与竞争,大量新人因为行业红利涌入,你无时无刻要跟一群优秀的热血青年同场竞技。

互联网行业工作强度很大,而中国的互联网从业者更忙。程序员更是战场中的排头兵,身体健康的透支导致很难长期抗战。当你意识到自己跟不上节奏的时候,不管是出于对身体状况的担忧,还是对未来潜在威胁的恐惧,又怎会不感到焦虑呢?

而程序员的职业特性加剧了这种焦虑,主要表现在以下几方面:

一、程序员职业复利性较低。

什么叫复利性?

就如同利息的计算方法一样,在本金相同的情况下,复利获得的利息回报要高于单利,而年期越长,复利效应越高。职业一样有复利效应,一个复利高的职业在职业生涯中后期会展现出越来越高的价值。医生、律师都是复利性很高的职业。

而程序员职业复利性较低,主要有两个原因:

  1. 专业性强,通用性差。不同技术种类有着自己的技术栈,共用的只有设计思想、编程范式,基础技术等通用知识。
  2. 在没有明确规划的情况下,大多数程序员日常工作积累的不是通用知识与综合能力,而仅仅是某项技术的熟练度与经验。这是根本原因。

 

后端技术栈

 

 

前端技术栈

 

这造成了一个问题——当职业生涯遇到瓶颈时,程序员很难完成一次完美的进阶。让我们分析下最常见的三类方案:

  1. 技术职位之间的转岗。这是最普遍的一种情况,Android转IOS,后端转前端等都在此列。虽然设计原则、编程范式等技术知识是通用的,但作为一线的执行者,技术的熟练度才是影响你工作效率的最大因素,你必须对技术栈非常熟悉才能体现工作的专业度。 转岗往往是无奈之举。

  2. 技术转产品/运营岗。很多工程师抱怨产品经理设计的产品有问题,逻辑不严密,用起来很别扭。但让工程师做产品,问题一般会更多。为什么呢?最大的原因在于程序员的思维模式或多或少会受到编程的影响,偏向理性与具象化,缺少了感性的察言观色以及换位思考的能力。设计好一个产品,逻辑严密只是条件之一,但并不是最重要的条件。产品经理需要从用户的行为中挖掘出用户真正的需求,提炼归纳并设计成一个可用的产品。这是大多数程序员很难做好的事情。

  3. 技术转管理岗。BAT都有自己的M岗位,高工都可以选择是继续走技术路线还是尝试走管理路线。很多程序员安慰自己,哪天真写不动代码了,那我就做技术经理吧。但我认为管理岗的转变比前面两类都难。管理是一门很深的学问,执行和管理是两回事,需要从根本上改变思维模式。评判一个工程师的好坏可以看工程师的产出,而评判一个管理者的好坏在于整个团队的产出和效率。很多优秀的程序员自己技术能力很强,却很难带领整个团体一起向前进。

二、程序员职业的壁垒没想象中高,鲁棒性低。

鲁棒性也指抗变换性,一个好的职业需要有高的鲁棒性。大部分程序员把自己的职业与某项技能绑定。做过编程的都知道,一个高耦合低抽象的编码鲁棒性一定低。互联网行业变化太快,回头看下诺基亚的发展,Windows桌面应用开发,整个行业如同大浪淘沙。随着云平台的崛起,公有化平台的发展,API服务的开放,可以预见从业者的工作效率会大幅提高,同时很多职业可能会再次洗牌:基础运维工程师,DBA,基础算法工程师,安全工程师,图像算法工程师,数据工程师等等都在此列。

从另外一个角度来说,假设你运气很好,选择了一项长期热门的技术比如Web前端开发。但是因为行业红利太高,无数聪明、努力、上进的热血青年涌入其中。随着社区的发展,在线教育的普及,达到同样熟练度的时间越来越短,而热门互联网技术的发展是以月计,你需要花费大量的时间去学习积累新技术。新人与你的差距会越来越小,你会随时面临被超车的局面。这意味着,很多时候即使你认为自己经验更丰富,能力更强,但你却得不到理想的职位及薪资待遇。

三、程序员职业能撬动的价值有限。

这个概念受启发于《格鲁夫给经理人的第一课》一书。格鲁夫试图定量的分析经理人的产出,于是提出了一个公式:经理人的产出 = 他直接管辖部门的产出 + 他间接影响所及部门的产出。为了定量的分析职业的价值,我也引入了一个公式:产出的价值 = 他自身的产出 + 他直接影响部门的产出 + 他间接影响所及部门的产出

职业能影响的人越多,创造的价值越高,职业的上限价值也越高。

互联网行业的供求关系以及价值体系,造成了一个现象:程序员供不应求使其入行薪资高,但是工作五年以上薪资趋向于稳定。对于绝大部分公司的绝大部分职位,当熟练度和经验达到某一个阈值的时候,选择成本是趋同的,自身效率提高所能带动的价值提高已经很有限。正因为如此,从业者在享受了薪资高速增长之后,很难接受薪资增幅趋缓,职业生涯遇到瓶颈引发焦虑。

 

薪资发展

 

我的规划是什么?

分析了这么多,我最想表达的意思是:所谓的稳定,是最大的谎言。在高速发展的行业,根本没有一个稳定的职业。解决焦虑的最终办法是重新定位自己的职业生涯,尽量不以所谓的熟练度和经验作为自己的竞争力,将自己的职业生涯押注在某项低门槛的技术上,而是根据自身的情况,持续不断提高综合竞争力,加强自己的不可替代性。

首先我会分析自己的特点,这是建立与他人的差异性和自己独特标签的关键所在,也是最值得加强的地方。我最大的特点是什么?

  1. 有野心。我不想选择一种得过且过的生活,而会选择一个产出价值更高的事情来做,影响更多的人,创造更高的价值。
  2. 会沟通。我沟通能力不错,既可以对外谈合作,又可以对内做管理。这会是我相对一般技术型程序员一个很大的不同。
  3. 专业强。在专业技能层面我有较深的认识与理解,虽然谈不上顶尖,但我知道怎么运用自己的知识能力找到最适合现状的方法解决几乎所有日常问题。技术积累永远是我最核心的竞争力。

知道自己特点之后,我会以此为基础来增强自己的不可替代性。不可替代性不仅仅只是基于个人的能力,还有这几点是需要日常注意积累的:

  1. 健康的身体。在经历过一次生病后,我更加意识到拥有一个健康的身体才是最重要的。积极健身可是我们青橙员工的必备素质。
  2. 思想与格局的高度。思想的高度并不是一朝一夕就能拔高的,而是在经历了来自工作与生活的各种挑战之后,静下心来反思总结,从而慢慢积累并提升。
  3. 人脉与影响力。乐于记录和分享自己的工作感悟。抓住向其他人学习的机会,比如参加一些会议或交流,不管是同行业还是其他行业的,都是很有必要的。人脉和影响力的积累与格局的高度也是相辅相成的,与某些方面比自己优秀的人交流往往会收获满满。

当我有了明确的方向并且每天都能看到自己进步的时候,就会对未来充满憧憬。我给自己未来的定位是做一名解决者。何谓解决者?面对未知或已知的问题,知道如何分析本质原因,制定并实施解决方案。附加打油诗一首:

文能设计定需求,武可写码做架构。
进做招商引融资,退做大V占风口。
产品体验包上线,还要招人带节奏。