工程师与管理者的职业钟摆

工程师与管理者的职业钟摆

原始链接: https://charity.wtf/2017/05/11/the-engineer-manager-pendulum

最近我在推特之外给一些人做职业咨询。很多人的内心挣扎是这样的:

"我是一名高级工程师,在考虑要不要转管理。我非常喜欢做工程,但总觉得在重复解决同样的问题,而真正的问题似乎都是'人的问题'。而且,我想晋升就必须去做管理。希望转型之后情况不会太糟,虽然我听说做管理很头疼。"

我一直想写一篇文章聊聊这个话题。要说的话很多,但让我们先从这点开始:"只有做管理才能获得职业发展"这种观念简直是扯淡。 "选定一条赛道就得走到黑"的想法也同样扯淡。我完全拒绝这种死板的分类。

"你听到的那些糟糕建议"

世界上最优秀的一线研发经理,通常离开一线写代码的时间都不会超过 2 到 3 年。而最优秀的独立贡献者(IC,即一线开发人员),往往也都有过带团队的管理经验。

世界上最顶尖的技术领导者,通常是两者兼顾的。他们在两个角色之间来回切换,就像钟摆一样。

我自己就经历过几次这样的循环:作为早期(或第一位)基础设施工程师加入,搭建技术栈,组建团队,管理团队,然后......离职,从头再来一次。当我开始觉得一切尽在掌握时(这通常是出问题的信号),我就会感到焦躁不安。

对于喜欢早期初创公司,或者注意力容易分散的人来说,这是一个很棒的循环。但我很少看到有人把它当作一条正经的职业路径来讨论。所以我想在这里提倡:这是一种非常有意识且很酷的生活方式。

(顺便向 @sarahmei 致敬,她在我写这篇文章的同时也在推特上连发了讨论这个话题的推文。是的,互联网女权主义者们确实有着神奇的心灵感应。)

关于做(技术项目的)管理者

从内部提拔管理者,意味着你可以利用他们刚刚构建系统时积累的敏锐技术直觉。这能给他们带来威信,因为他们将在新角色中面对自己"不够胜任"的挣扎。

这是实现"管理者+技术主管"这种短暂辉煌的少数方法之一。但这种组合是不稳定的,因为你做管理的时间越长,你的技术能力和对代码的敏锐度就会逐渐衰退。

同一时间你只能在其中一方面取得真正的进步:要么是工程,要么是管理。如果你是一名管理者,你的工作就是不断提升管理能力。 不要试图紧抓着过去的技术光环不放。

管理工作充满了各种打断;而优秀的工程工作(能让你学到东西的工作)需要屏蔽打断。你无法同时做好这两件截然相反的事。作为管理者,你的职责就是随时为团队挺身而出,随时准备被"打断"。你的职责是主动把那些有挑战性的技术任务交接出去,让你的工程师们能在技术上取得进步。

关于做(带人的)技术主管 (Tech Lead)

反过来说:世界上最好的技术主管通常都做过管理。这并不是因为他们写代码或找 Bug 能力最强,而是因为他们知道如何把事情搞定,这意味着他们懂得如何沟通和管理他人。

技术主管也是管理者......但他们的首要任务是完成眼前的任务,而不是培养和照顾做这些任务的人。

他们依然需要全套的管理工具。他们需要知道如何凝聚团队、激发动力,或者如何拯救一个停滞不前、人人都头疼的项目。他们需要将业务目标和技术目标结合起来,把大目标 拆解成小模块。他们需要评估初级工程师的能力,为他们量身定制既能突破自我又不会压垮他们的任务......并且还要为其他二十位开发人员做同样的事。这其实就是管理工作,只是视角稍微从"关心人"变成了"把这件事情搞定"。

因此,这些技术主管通常花在开会上的时间比实际写代码的时间多。虽然他们会抱怨,但还是会去开会,因为写代码已经不是他们时间的最佳用途。技术是简单的部分,管理人类才是最难的。

同时具备这两种能力的高级工程师,是你能够以此为核心建立组织或公司的技术领导者。他们能成事,而且非常稀缺。

他们中几乎所有人,都有过相当长时间的管理经验。

职业钟摆

我们对这件事讨论得太少了:那些习惯于在两种角色间来回切换的工程师,会积累出无比广阔的视野和强大的能力

作为一名普通开发者(IC),就像在信息极其有限 的情况下,逆向推导公司的运作方式。从底层节点的视角来看,很多事情似乎都很可笑、毫无意义或效率低下。

而做管理能让你了解业务是如何运作的,也能让你了解人是如何运作的。你必将 学会如何进行令人不适的对话。你将学会如何在别人恼火、怨恨甚至对你咬牙切齿的时候,依然引导他们产出高质量的工作。你将学会如何解决冲突,老天,你绝对会变成解决冲突的专家。(事实上,你甚至会开始"渴望"冲突,因为直接的冲突通常比其他所有糟糕的选择都要好。)你每天都会精疲力尽地回家,说不出自己到底做了什么具体的事。但你确实完成了很多事。

同时,你会怀念修复 bug 或解决技术难题时那种多巴胺飙升的快感。你会极其渴望这种感觉。

关于管理,最后再说一点。有一个神话让人们很难停止做管理,哪怕这让他们和身边的人都感到痛苦。那就是:人们认为做管理是一种晋升。

管理不是晋升

说真的,去它的吧。这是一个极其有害的误解,它导致很多人明明讨厌管理、完全不适合管理,却非要去做管理;这也导致高级工程师的人才库里,流失了大量我们极其需要的优秀导师和资深技术专家。

管理不是晋升,管理是转行。 在你刚开始做管理的很长一段时间里,你会做得非常糟糕。如果你觉得自己做得不糟,那你肯定没有真正履行好职责。

仅仅为了满足虚荣心去做管理,只会让你的工程师们不得不向一个满腹怨气、本该去写代码的人汇报工作。

(图解:想象余生只能选择"只做管理"或"只做开发"时的心情)

或者他们应该去找点其他能带来快乐的事。

没有什么比向一个被迫做管理的人汇报更糟糕的了。请不要成为逼迫人们逃离科技行业的理由。

它不是晋升,所以你放弃管理岗也没有失去任何地位。只要它能让你和周围的人快乐,你就可以一直做下去。一旦不开心了,就停下来。回去继续构建你的系统。等到你心里再次开始"发痒"的时候。

然后,再重新把这个循环走一遍。 <3

相关推荐
jonjia2 小时前
多层上下文 (Layers of Context)
程序员
jonjia2 小时前
如何将代码发布到生产环境
程序员
jonjia2 小时前
在初创公司与大厂工作:利与弊对比
程序员
jonjia2 小时前
写给刚入行时的自己的建议
程序员
jonjia2 小时前
进入决策圈
程序员
jonjia2 小时前
2025 年的职业建议
程序员
jonjia2 小时前
专注真正重要的工作
程序员
jonjia3 小时前
工程师的绝望谷
程序员
jonjia3 小时前
高级工程师应该做些“额外投资” (Side Bets)
程序员