成为高级工程师后,职业生涯的下一步是什么

简评:程序员的工作不是写代码,而是解决问题。成为高级工程师后,如果不做管理者,你还能做什么呢?

你做程序员已经有好几年并且已经晋升过一两次,最终升任了高级工程师或一些其他的同等职位,在此之前,你的职业道路简单明了:你学会如何独立工作,然后一步步升任为高级工程师。

现在的你开始思考自己职业生涯的下一步是什么,如果你还没有明确的规划,问自己几个问题:

  1. 你是否成为了一个管理者且不再编程?
  2. 仅仅学习新技术,你是否觉得不够?
  3. 你的目标是什么?

本文我想提出一个职业发展的替代方案,一个能给你更多自主权和讨价还价能力的替代方案。与成为管理者不同的是,它仍然允许你编程。

从写代码到解决问题

作为程序员的工作到最后是解决问题,而不是编写代码,解决问题需要这些步骤:

  1. 发现和确认问题
  2. 提出解决方案
  3. 实施解决方案

这里面的每一个都可以被认为是一种技能树:一组可以单独和并行开发的相关技能。但是在实践中,你通常会从使用第三个技能树开始,在变得更有经验的时候,才逐个添加其他技能。

Randall Koutnik 把这些描述为一种职业头衔,一个职业发展走向:实施者、解决者和发现者

作为实施者,你是一名没有经验的程序员,你的任务由其他人定义:你只需实现小的、明确指定的代码块。

假设一下,你在一家为养宠物的人搭建网站的公司工作。你在上班的时候会接收到一个任务:“在这里添加一个下拉菜单,列出所有的鬣蜥疾病,你可以从 IGUANA_DISEASE 表中获取这些疾病。选择一个菜单项应重定向到适当的页面。”

你不知道用户为什么会需要列出鬣蜥疾病,也不必花费太多时间来弄清楚如何实现它,照吩咐去做就行了。

当你变得更有经验时,你就成了一个解决者:你能够为不太明确的问题想出解决方案。

当你遇到一个问题:“我们需要在网站上添加一个部分,让宠物主人知道自己的宠物是否生病了。”你先获悉自己拥有什么数据,可以使用哪些 API,然后与设计师一起设计 UI,创建一个实现计划,最后编写代码。

最终你会成为一个发现者:你开始自己发现问题并找出其根本原因。

你会去和你的经理谈鬣蜥:几乎没人拥有鬣蜥,为什么它们在页面上和猫狗有一样的空间?更不用说给鬣蜥编写特定的代码,这完全是在浪费时间,难道不是应该编写适用于所有动物的通用代码吗?

经过一番讨论,你发现必须重做网站架构、业务逻辑和设计,这样就不必在每次添加新动物的时候都编写新代码。如果你提出正确的架构,使得添加一个新的动物只需要花一个小时,公司就可以以低成本服务于许多动物利基市场。你将与整个团队一起合作完成解决方案的设计和实施。

成为发现者的好处

许多程序员最终停留在解决者这个角色,不知道下一步该做什么。如果你不做管理,那么成为一个发现者是一个很好的选择,原因有两点:自主性和生产力。

Kutnk 的主要观点是,这三个阶段每走向下一步都会给你更多的自主权。作为实现者,几乎没有自主权,作为解决者,会拥有稍多的自主权,作为发现者,你拥有非常多的自主权:你被赋予一些模糊的目标和约束,由你自己来决定做什么。这会带来很多乐趣。

除此之外,还有一个好处:从 Implementer 到 Solver 再到 Finder,你将变得更有生产力,因为你所做的不必要的工作变得更少。

  • 如果你只是在执行别人指定的解决方案,可能会陷入低效的工作。
  • 如果你只看到问题的表面就提出一个解决方案,那最终解决的可能不是真正的问题。

你越擅长诊断和发现潜在的问题,提出解决方案,并与他人一起工作,你就越少做不必要的工作,你就会更有效率。

利用你的生产力

如果你是一个发现者,你的工作效率就会大大提高,这会让你成为一个更有价值的员工。擅长挖掘高价值问题的人能发现那些无人知晓的障碍,发现客户真正想要的东西,你会成为他们中的一员。

这意味着你有更多的谈判优势:

  • 协商加薪更容易成功。
  • 可以找到更好的工作,即使这个工作涉及到你不了解的技术。
  • 甚至可以申请为期三天的周末。

因此,如果你想在继续编程的同时事业上也取得进步,就从现在开始去寻找问题吧。一旦专门去注意这件事情,你会发现问题无处不在。

英文原文:The next career step for Senior Software Engineers (that isn’t management)

相关推荐