本文作者:Itamar Turner-Trauring
原文链接:https://codewithoutrules.com/2018/10/10/beyond-senior-software-engineer/?utm_source=wanqu.co&utm_campaign=Wanqu+Daily&utm_medium=website
年来你一直是个程序员,升过一两次职,现在你开始思考,下一步应该做什么。在这以前 ,你的职业道路平坦又明朗:你学习如何独立工作,并且晋升到了高级软件工程师或是与之平级的职位头衔。
然而现在,眼前的道路变得不再清晰。
成为一个管理人员?
你最近有学习新的科技知识吗?这些知识够用吗?
你的目标应该是什么呢?
在这篇文章里,我想展现给你另一种职业发展的可能,这种发展能带给你更多自主性,以及更多的议价资本。此外,和成为管理人员不同的是,这种发展路径让你可以继续你的编程生涯。
从编程到解决问题
从根源上来说,作为程序员,你的工作是为了解决问题,而不是为了编程。解决问题就需要你:
1. 找到并确认问题所在。
2. 想到解决方案。
3. 实施解决方案。
我们可以把以上提到的每一步想象成一棵技能树:每一组相关的技能都可以分别独立且平行发展。然而实际上,你总是会从第三棵技能树反向开始这个流程。随着你的经验逐渐丰富,你会逐步在整个过程中加入其他步骤。
Randall Koutnik将这三个步骤 比作三种职业头衔,对应了职业发展的三个阶段:方案执行者,问题解决者和问题发现者。
如果你是一个方案执行者,那你还只是一个缺乏经验的程序员,你的工作由他人定义:你只需要实施小的、明确的程序块。
我们想象一下,你在一家帮养宠物的雇主搭建网站的公司工作。你去公司工作,就会有人给你指派任务:“在这里添加一个下拉菜单,列出所有的鬣蜥疾病,你可以从已有的“鬣蜥疾病表”中获取信息。选择其中的一个菜单项需要重新定向到一个适当的页面。”
你不知道为什么用户需要一个鬣蜥疾病的下拉菜单,你也不需要用过多时间思考如何执行这个方案。你只需要按照别人的指令完成任务即可。
当你变得越来越有经验,你就成为了一个问题解决者:你能够为不太明确的问题找到解决方案。
有人来告诉你一个问题:“我们需要在网站上增加一个板块,宠物主们可以从中了解他们的宠物是否得病了。”你整合自己已知的数据,可以使用的API,然后和设计师设计UI,创造出执行计划。然后,你就可以开始编写代码。
最后,你会变成一个问题发现者:你开始能够独立找出问题,并且找到这些问题背后的根源所在。
你会和经理去讨论这些鬣蜥:几乎没有人会养鬣蜥,为什么在页面上分配给它们的板块和宠物猫还有宠物狗一样的大小?更不要说专门为鬣蜥写码简直就是浪费时间,我们为什么不写一些适用于所有动物的通用编码呢?
讨论之后你发现自己必须重做整个网站的架构、商业逻辑以及设计,这样一来每次需要添加新的宠物类别你就无需再次编写新的代码。如果你能提出正确的网站架构,此后增加新的动物类别只需要一个小时的工作量,这样一来公司就可以用低成本开拓宠物利基市场。设计并实施解决方案就会将是你和整个工作团队接下来的工作。
成为问题发现者的好处
许多程序员成为问题解决以后就停滞不前,他们不知道下一步应该做什么。如果你不进入管理层,那么成为一个问题发现者就是一种进步,原因有二:自主性和高产量。
Koutnik的主要观点是,在三个步骤中,每走向下一步都能给你更多的自主性。作为方案执行者,你可能几乎没有自主权;作为问题解决者,你的自主权可能会多一些,而作为问题发现者,你就可能拥有更多自主权:你会有一些模糊的目标和框限,但最终决定要做什么取决于你自己。这会更加有趣。
不过此外,还有第二个好处:从执行者到解决者到发现者,你会变得更高产,因为你不再需要完成冗余的工作。
• 如果你仅仅执行别人给你制定的某个解决方案,你可能会局限在一个无效的解决方案之中。
• 如果你仅仅从表面判断一个问题的解决方案,那么你可能最后解决的是一个错误的问题,而根源的诱因可能会在将来引发更多麻烦。
如果你在诊断和确定根源问题、构思解决方案以及与他人合作等领域的能力越强,那么你所需要做的无效工作就越少,你就会变得越高产。
利用你的高产优势
如果你是一个问题发现者,已经变的更高产,这就使你成为了一个更具有价值的员工。你成为了一个能够挖掘有价值的问题,能够找出无人知晓的障碍,并且能够发现客户真正想要的是什么的人。
这样一来,你就有了更多的谈判资本:
• 你可以轻松要求加薪。
• 你可以找到更好的工作,即便你还不了解那个工作涉及的技术。
• 你甚至可以谈判到每周三天的休息日。
所以,如果你还想继续写码编程,又想在职业生涯中保持进步,那就开始寻找问题吧。加以留意,你会发现生活中的问题无处不在。
继续阅读
阅读原文