软件工程师,应该在什么时候转向管理岗位
“ 即使你对管理非常感兴趣,也要等到你的技术能力达到你所预期的那样高。”
1
引子
哪些人应该过渡到做工程管理工作?
这项工作需要什么?
一旦你做出了转变,如何取得成功?
然而,有个朋友向我提出了另一个不同的问题:假如你已经知道自己适合做管理工作,那么,应该什么时候从软件工程师转向做管理呢?
为了帮助回答这样一个问题,你必须先做一个自我评估:你对编程感兴趣的程度。
在这个问题上,它比「你对管理感兴趣的程度」更有用。
2
第一经验法则是:在角色转换之前,你至少达到高级工程师(Senior)的水平。即使你早已经知道管理岗位是你想要的职业道路,我仍然有很多理由建议你在过渡到管理岗位之前,尽可能地在高级工程师岗位待上一段时间。
一旦你放弃了主要的技术开发工作,并且每天停止编码,甚至每周,这就很难让你的技术知识持续保持最新了。假如您在 jQuery 时代停止编写 JavaScript代码,当然,你可能可以跟上使用 React 管理状态的不同方法,但你已经不会在日常工作中亲自尝试不同的技术。注意,我说的是「日常工作」。
有些人可能发现,「远离技术实操工作」这一点很吸引人!并且,无数文章都关注管理者如何在不编写代码的情况下产生有更重要且有意义的技术影响。然而,除非你未来将要从事的所有管理岗位都是纯粹以人为本(每个公司和团队对此有不同的期望),否则你仍然需要保持您的技术知识相对最新。至少,你必须能够聪明地与工程师讨论技术决策,并将这些决策传达给其他管理者。
此外,许多公司仍然对工程技术经理进行技术面试。因此,一旦到了寻找下一个岗位的时候,你很可能至少会有一轮系统设计面试,而且,公司通常会询问你一些关于数据结构和算法方面的问题。如果你多年没有编写过代码了,那么,为这些面试做准备就会变得更加具有挑战性。在你转向管理角色之前,作为一名程序员的时间越长,你的技术基础在你的职业生涯中就越稳固,这有助于减少你刷题所需要的数量与时间。
编码到管理,可能是一条单向通道(尽管很多公司在制度上都允许大家来回切换)。你的编程技能会萎缩的。如果你发现自己的技术实操能力已不足,就很难转回到相应的技术岗位。这就是为什么在进行转换之前,你要确保你已做好准备。
3
在花了几年学习基础知识之后,在独立贡献者与/管理者之间,在“错误”方向花费的每一年,都是你浪费的一年。此外,过渡到管理岗的机会可能很少,而且两个管理岗位机会之间的时间距离也很远,因此,若你因太早而拒绝这样的机会,你很可能在很长一段时间之内都没有机会了。所以,如果你确定自己不对动手编程不再感兴趣,那么你应该抓住第一个给你展示自己管理潜能的机会。毕竟,在某些公司中,工程经理甚至都不是来自技术背景的人选。如果真是这样的话,你曾经做过软件工程师,那么你就比这个「他/她」拥有更多的上下文背景。
4
显然,这种选择是一个非常个人化的事情,并且高度依赖于你面前的机会到底是什么样的。假如必须给出一个建议的话,那么:「即使你对管理非常感兴趣,也要等到你的技术能力达到你所预期的那样高」。一旦你确信自己已经对编程失去了兴趣,那么就抓住第一个合理的机会,转而进入管理角色。
你有什么想法?欢迎留言,参与讨论。