做一辈子程序员是否是一个好的职业选择?或者如果在工程师这个职业阶梯上进一步发展是否必须要走向管理?这是不少工程师在知乎 Quora 表示疑惑的。这是个需要来陈述解决的重要问题,尤其对那些心理上不愿意去管人的工程师们。

好消息是,一直做个好的软件工程师,请求免除做管理的安排,仍然是一个较好的职业选择。但不管怎么样,如果你想要突破那层天花板,你不能仅仅是期望持续多年的技术开发经验就能让你走上职业阶梯顶层。一个关于你职业的大致模型是:你的成就和成长是跟你创造的价值成正比的。

技术能力 + 开发经历 /= 影响力

那些在 Google 呆了10年以上拥有深厚经验的工程师们,常常质疑自己为什么仍然是位高级软件工程师的title。那些职业初期快速职位提升的事情看来已经远去,为什么其他同事可以比自己提升的更高更快?

工程师,尤其是那些不想做管理的,会犯的一个大错误是:认为技术能力加上工作经历就会提升自己的影响力。他们甚至常常幻想:如果继续做好工作,他们最终将会获得提升。这个想法是错误,下面是两个原因:

首先,你写代码和构建软件的技术能力随着时间趋于稳定。在你职业初期的那些尝试,你会经常犯一些错误。每个小项目都是打磨你编程技能的好机会。但随着时间流逝,你在软件设计上变得熟练,几乎更少的犯错。你早期在职业阶梯上的一次次提升来源于你早期的技术学习。10年后,你可以仍然保持学习 - 你可以选一门新的编程语言,去学习新的酷炫的框架,但是你的进步和提升肯定不会像你职业生涯第一年那样的快。

其次,经历不会简单而直接的变成影响力。如果十年后二十年后,你仍然解决这目前这样规模和这个领域的问题,实际上你并没有在提升能力来创造影响力。如果你没有创造新的价值,为什么会有老板愿意非给同样没有经验的人付更多的薪水?这个事实在任何其他行业和职业也是存在的。

继续保持做目前做的事情(编程)是简单的,容易的,让人舒服的。如果你想把精力花在其他地方,这个选择也是非常合理的,但是就不要期望你的职业也能随着年限而发展。真正重要的不是你工作了多长时间,而是你创造了多少价值。如果想保持在职业上的继续发展,那么就持续找到新的提升你影响力的方法吧。

管理不是提升你影响力的唯一途径和杠杆

拥有良好的职业生涯,转向到管理是一条途径,但不仅仅只有这条。许多工程师成为管理者是因为管理提供了显而易见又真实有效用于提升影响力的杠杆支点。随着团队的成长需要管理者,多年的技术经历对于发展技术管理技能来说是很有用的资产。作为管理者,你影响和改变着你负责的产品和工作。如果你是好的管理者,你就能提升你们团队所有人产出的新价值。如果这新价值超过你作为独立开发者能提供的,那么你的管理就是有价值的。

管理,只是一种职业发展途径。不是每个厉害的工程师都会成为或适合成为一个好的管理者。只要你能找到那些提升你影响力的杠杆支点,你的职业就能继续发展。在很多技术起重要作用的大型公司里,如Google, Facebook, Amazon, Microsoft等,除了管理路线外,都有一条明确的技术发展路线。攀登职业阶梯成为首席工程师,也是要面临不好挑战和竞争的。那些不同于管理的路线越是不常规越是需要更多的创造力。

那么关于不用做管理也能有职业上的发展的秘籍是什么

重要的是意识到:你的技术水平可能会进入稳定的平台期,但是你的技术贡献不一定要。你用来决定在哪些方面下功夫来提升影响力的能力,写什么样的代码,去构建什么样的软件,解决什么业务难题,是没有限制的。这就是区分优秀和普通工程师的重要能力。

具体怎么做呢?你要找到和解决哪些对业务至关重要的技术难题,或者你要你身边的同事更有效率的解决哪些对业务重要的难题。正是这种把自己的技术努力和业务价值相对应结合让你的职业能有进一步发展。随着你付出时间直接带来有意义和可衡量的结果,或你的努力直接提升来业务增长和收入指标的增长,你的老板就会更多的物质奖励你,给你更多的资源和灵活性从而让你更快取得更大的成就。

根据我认识的一些优秀工程师,这些是你可以做的,在不用做管理外:

  • 你要开发工具和抽象来成倍提升你周围的工程师和团队的产出。例如,Jeff Dean,通过他对 Protocol Buffers, MapReduce, BigTable, Spanner和其他系统的努力,以数量级提升着 Google 里其他工程师的产出,难怪 Google 要为他创造出高级 Google 合伙人(fellow)这个顶级的工程师岗位
  • 你发展出足够的经验,来给其他软件团队的软件和设计方案给出反馈建议,这些有价值的反馈足以节省这些团队数天数周的工作时间,甚至对于他们项目成功失败起着决定性因素。
  • 你在一项高深的技术领域成为专家,这些让你的公司业务富有竞争力。例如,你成为一名机器学习专家,在 Facebook 的消息流,谷歌的广告排序,Airbnb 的搜索结果排序的项目上运用,这些你开发的项目毫无疑问给公司贡献出不可替代的业务增长和收入回报。
  • 你或许通过和销售和业务部门合作,识别到重要的业务机会,你成为解决这个需求的产品的元老级成员。
  • 你在构建完善的招聘流程上起着重要作用,你帮助新人培训和剔除坏的候选人
  • 你在你们公司的工程师品牌上做出重大贡献。例如,多元性是你们工程品牌的重要部分,那么你在公司你多元化招聘风格在业界招聘上形成影响力(if diversity is a strong part of your engineering brand, you may move forward the state of diversity in hiring in the industry.)

这些仅仅是一些你能提高影响力的例子,但是可能的路径和方式是无止境的。但是要意识到,在这些方法中没有一项是把构建软件作为最终目的的。它只是帮助团队和业务成功的途径。

在那些能创造最大价值的事情保持专注。你的职场成功和成长会随之而来。

要注意的是,如果你的工作,你的团队或你的公司不再增长,你很难获得进步成长因为你能创造的价值被限制了。这就是脸书的COO Sheyl Sandberg 说当有机会登上一艘火箭时就赶紧上去不管是坐在哪。