技术人的职业发展智慧

我先分享职业生涯中的两个教训,希望对年轻程序员有启发。第一,不要只做 Code Review 和 Design Document,要知道它背后本质的要求,要开发新的算法,把本质的和革新的东西写下来,让别人能够反复看,这一点我工作两年后才慢慢意识到,希望刚入行的程序员早一点明白。另一个,在学校期间,你可能会看很多 Paper,里面有非常多炫酷的算法,但是在工业界真正能实现产品的算法是一种 trade-off,也就是说工程技术是折中的。

了解自己的职业导向

职业发展过程中,我们要做的第一件事情就是了解自己,如果你工作了足够长的时间,你会发展出一个比较固定的导向,这些职业导向并不存在价值判断,每种导向上都有优秀的人。

  • 第一种人最在乎某件事能否给自己带来最好的回报,带来更大的影响力、更好的资源,这个叫做进取心;
  • 另一种人追求的是一个可以预测、比较稳定的工作模式,比如很多公司时间长了以后,会形成一个稳定的中间层,这类人更在乎工作价值是否被领导、环境认可;
  • 还有一种人,在程序员里面会比较多,他们喜欢某件事情带来的挑战,更在乎牛人的评价,或者是在开原社区里面的影响力;
  • 还有一些平衡型的人,不仅关注工作、业绩,也在乎 work-life balance,要求工作和生活、人际关系、个人成长取得平衡。
  • 最后一种,90 后程序员比较多,追求个性、独立,但是一件大的项目通常需要团队配合,追求独立的人会比较吃亏。

了解技术人的职业发展阶段

技术人的职业发展阶段,大概可以分为三个阶段。

  • 技术新人。这一阶段要赢得领导和同事的信任,获得授权。比如你的职位是软件工程师、UI Design,这是很明确的授权,还有一些不是很明确的授权,比如某些事情你做的非常好,然后默认这件事情就是你的了。
  • 垂直领域专家。工作 2 到 3 年内获得独立贡献者的动手能力,这个阶段要做垂直领域的专家,在领域内获得扎实的技术能力。如果公司把你提升为小组长,你要能够指导下属,帮助他们做决策和判断。
  • 技术领导者。这个阶段需要通过他人获得成绩,你会领导别人,或者影响别人,甚至你没有正式 title,但大家也愿意跟着你做。这个阶段要关注他人,愿意花自己的时间帮助别人,要获取资源、调配资源,以及使组织走对方向。

发现自己的 0,1,无穷大

我提出一种模型,跟每一位一线工程师都有关系,我们最近也经常拿这个模型去考虑产品,怎么定位,怎么取舍需要开发的功能,我把它叫做 0,1,无穷大模型。

先说一下 0 和 1。假设我们现在需要一个开发,高性能计算平台工程师,这个岗位需要什么基本能力?需要会这门语言,懂并行计算,知道怎么并行调度,或者把一个算法部署到多核上面去,这些必须能做到的叫做 1,在 1 这个事情上不允许你有 0,这就是你面试过程中为什么会失败?因为你出现了一个 0,对不起,你进不来。

下面说一下 1 和无穷大。1 的地方你投入再多都是饱和的,要找到无穷大。比如我们有些员工沟通能力、逻辑能力很强,但是动手写代码能力不行,他在项目起步阶段,说服上下游方面很厉害,但一旦项目立项,这方面就是 1 了,就该停止了,所以一个人最重要是发现无穷大的部分。假设我是一个做系统优化的工程师,我要看到计算的核心部分,通常是一个循环,大概四到五层循环,里面可能还会有条件跳转、向量处理,那如果你在这方面能力做到无穷大,能更快确定计算的最核心部分、最耗时的部分,而且很快确定仿存的模式对计算带来什么阻碍,这就是在无穷大的事情。所谓无穷大对一项产品或者技术来说,就是投入的越多得到的越多,你要看自己无穷大的能力跟公司的要求是否匹配,假设你的无穷大对公司来讲是 1,那么你就使错了地方。

抉择时刻 — 工作中的价值观

年轻的时候,第一二份工作对一个人价值观的塑造非常重要,但当你慢慢成长起来,到三四十岁的时候,面临工作中的问题、人际关系中的问题、生活中的问题,你需要有自己的价值观,这就需要你平时多花时间去思考,尤其是在互联网企业,在一个开放的市场里面,每天都能看到对你和你的企业的不同评价,如果没有自己的价值观,你的精神会奔溃。

之前有个同学问过我价值观的问题,我给过一个答案,不完美但值得你去思考,我当时的回答是任何一份工作都不值得赔上你的三观,前提是你的三观是坚定的并且你有能力做出选择。

职业发展中隐含的变量:信任的速度

比较大的组织经常讲战略、执行,讲资源,好像战略乘以执行,资源再足够就能得到好的结果,但是这里还有一个参数是信任。一个工作为什么给 A 不给 B?为什么跟 C 合作不跟 D 合作?这些归结为一个字就是 Trust,我信任你,我愿意交给你,我想得到这份授权,我就需要获得这份信任。

一个人能否被信任由什么决定呢?我们通常认为信任是一个人的品质问题,但实际上信任涉及四个维度,一个是所谓的品质,比如正直诚实;第二个是动机,如果在有竞争性的部门里面工作,把你的动机说清楚很重要,这是合作的前提;第三个是之前项目的业绩和结果;第四个是能力。

我记得很早以前,有个手下问“在比较弱的时候,是不是可以做一些模糊的打擦边球的事情?”他可能忘了一件事情,信任包括他过往的业绩,所以说江湖大佬会说出来混总要还的,Trust 很难建立,但是破坏起来却很容易,很多企业真正的天花板在哪呢?就在 Trust,行业给它的信任、社会给它的信任已经到顶了。如果你做过坏事,你没有去更改,你还去狡辩,就很难获得信任,就跟日本一样,日本跟中国的关系、跟韩国的关系、跟东南亚被他侵略过的国家的关系,有个上限,因为日本从来没有道过歉。

拥抱变化,成为更好的自己

技术人要知道,你的年龄是会增长的,如果只是年龄变化,其他不变,你就会被替换掉。当年我决定离开摩托罗拉去因特尔的时候,我问自己一个问题:我此时的这个位置,继续用我或者招几个新人培训一下,哪个更合适?当我觉得后者更合适的时候,我就开始想做出点变化了,后面几年经历都是如此。谨记最舒服的时候就是最危险的时候。

我在面试过程中经常会遇到一种人,从简历上看他有非常辉煌的过去,但是在最近一个职位上他做了很长时间,比如三四年没有变化,或者他不曾去想换一种创新的方式去做事,像这样的人,在快速发展的企业里面就没有位置了。

当然,你在有红利的企业可以这样做,那是另一种事情了,比如石油、石化、电力等资源型的企业,再比如因特尔在处理器行业里面,已经做了 50 年了,这个行当已经到了指数增长的最上方,它可以吃技术红利,但是在高速发展、四面开花的高新技术企业里,是没有这种好地方的,只要有一个地方足够舒服,就说明有问题。

蔡京家的葱丝小姐 – 你的机缘与共业

从一个简单的故事讲起,故事的名字叫“蔡京家的葱丝小姐”。南宋有个赋闲在家的员外很有钱,他想去体验一下达官贵人家里是什么样的,正好蔡京宰相家败落了,外员就从宰相家高薪聘请了一位做菜的丫鬟,觉得宰相家的厨子能力一定很强,结果这个丫鬟根本就做不了菜,因为宰相家的佣人分工非常细,这个丫鬟的纤纤玉指是拿来剥葱的。

这能总结出什么?结论很简单,在一个企业里面有两类人,一类是 1×N,一类是 N×1,第一类人,第一年进入公司,作为新人,适应工作,之后以这个方式和能力做了 N 年,另一种人,不断挑战变化,N 年有 N 种做事的能力和方式,以及负责不同的项目。

这类似佛法讲得“因缘”,“因”是指你是颗什么样的种子,你很聪明,读书的时候有很好的科研训练,这是“因”,但是如果你去了一个很稳定的、没有挑战的工作岗位,就像种子放在水泥地上是长不出什么果子的。

人无远虑,必有近忧:时代发展的外部性

人无远虑,必有近忧,我们要看到时代发展的外部性。这里的外部性,一方面是指那些舒服的、资源型的、有路径可以依赖的单位越来越少,好日子或者说免费的午餐已经不在了,如果你现在在一个舒服的位子上,你最好趁这个阶段好好突围学习,不然将来你就没有能力适应变化了;

另一方面,时代的外部性还有整个经济的增速变缓,Job Market 对技术人员的技术复杂性要求在变化。从称呼的变化上也能看出这种变化,二十年前我们管自己叫“软件工程师”,现在大多数技术从业者管自己叫“码农”、“程序员”,这种称呼的变化意味着技术的复杂性使得分工越来越细,细到对一个技术人来说,如果你不去主动向下扎,你很容易被替代,这就是码农,不行换一个就完了。所以你不仅要会编程,你还要去了解底层,这能让你有一定的反脆弱性能力,对长期发展是有利的,这就要求技术人要回归技术本质,去经典教科书里再回炉,了解整个系统是怎么回事,还有就是找到自己的护城河,就是不管你换什么样的组或单位,你在某个方向的投入是积分的,是可以不断积累的。