跳转至

07 职业方向:如何选择一个有前景的职业方向?

你好,我是王喆。从这一讲开始,我们就进入了“个人发展篇”的学习。

在财富双塔结构中,“个人发展塔”是不可或缺的两大支柱之一。对于程序员来说,我们自身的职业发展就是最值得挖掘的金矿。所以这一模块中,我会用五讲的内容给你讲一讲这些问题:

  • 如何规划我们的职业生涯?
  • 如何在合适的时机离职跳槽?
  • 如何管理公司给我们的股票和期权?
  • 如何丰富我们的财富渠道,让我们的财富结构更加稳健?
  • ……

这几年来,一谈到个人发展,所有人都在说“选择大于努力”。在我看来,这句话虽然有一定道理,但也有很强的误导性。对于一个人的职场发展来说,有三件事同样重要,缺一不可,那就是“选择”、“坚持”和“努力”。

这一讲,我就先和你聊聊程序员职场发展中最重要的话题:如何选择一个有前景的职业方向,并用正确的方法“坚持”和“努力”,由此取得成功

从长期来看,一个好的职业方向是什么样的?

熟悉我的同学都知道,我是一名算法工程师,并且在知乎、微信公众号和 GitHub上都有很多关注者。这些程序员同行们最喜欢问我的,就是如何选择一个好的职业方向。可见大家有多关心这个话题。

之前我在02讲的思考题里,提到过转换职业方向的问题:最近这五年人工智能大热,算法工程师这一职位的薪资水平也水涨船高。于是,大量的在校生转向机器学习的方向,而已经工作三五年的研发工程师们宁愿从零开始,也要投身算法岗的竞争之中。那么,如此火热的算法工程师职位,算是一个好的职业方向吗?把这个问题延伸开来讲,钱多的方向就是好的职业方向吗

对这个问题,我的回答可以总结为一句话:一个职业方向好不好,可以从两个维度来判断:从长期来说,要看它的“高度”和“容量”;从短期来说,要看它的“供需关系”

和考虑一个职位的短期属性相比,我更建议你优先考虑它的长期属性,用十年以上的周期去规划自己的职业生涯。因此一个职业方向的“高度”和“容量”,就是我们应该关注的两个最关键要素。

这两个要素中,“高度”指的是这个职业方向上最牛的那批程序员能达到的职场高度,也就是我们常说的“职场天花板”。刚才我们说的算法工程师,只从年收入来说,国内可以达到200万人民币,美国可以达到60万美元(再往上属于凤毛麟角,不具备统计意义)。对于普通人来说,显然是足够高的天花板了。

同理,C++或者Java后端,Android或者iOS的移动端,这些职业方向都具备很高的天花板,而且具备长期的稳定性,未来五年应该都不会有衰落的趋势。所以毫无疑问,它们都是高度足够高并且稳定,值得你去长期耕耘的领域。

相对而言,测试工程师、传统的硬件工程师,以及技术栈较老的前端工程师,这些方向的天花板就明显低很多。选择了这些方向,即使你再努力,也很有可能在收入和影响力方面比不上选择前面几个方向的同行。这也就是大家常说的“选择大于努力”。

第二个要素“容量”,指的是这个职业方向能够容纳的从业者的数量。上面提到的算法、后端、移动端等方向,它们的从业者容量都是非常大的,这就代表着整个相关行业是繁荣的,跳槽和选择的机会非常多,我们就容易把握住行业中新的发展机会。

但有些方向就差一些,比如前几年非常火的 Scala 工程师。虽然这个方向的收入天花板很高,但这几年的行业容量是稳中有降的。再比如算法岗中的一些方向,比如计算机视觉、语音识别,虽然个别岗位的高度也很高,但整个行业的容量和相关明星企业的兴衰有着密切的联系,波动非常大。从稳定性来说,这些方向就远比不上搜索、广告和推荐领域的算法岗。

总之,一个好的职业方向,一定是高度很高,容量很大且稳定的方向。如果你是应届生,或者刚工作几年的初级工程师,一定要好好审视一下自己目前的方向。如果当前的领域“高度”有限,“容量”也很低,长期来看你的职业道路就存在较大的风险。这种情况下,在职业生涯的早期换到一个有前景的赛道,就是非常值得去做的一件事。

识时务者为俊杰:短期的供需关系同样重要

在看准了一些有长远发展前景的方向之后,这些方向的短期人才供需关系同样是影响我们选择的重要因素。《三国志》中有一句话“识时务者,在乎俊杰”,就是说要看清楚当前这个时代的趋势,才能成为出色的人物。

对于我们程序员来说,在选择职场方向的时候,同样要做到认清趋势,认清自己,避免死磕,这样才能做出最适合自己发展的决定。

我们来看看这张图片,图中是某脉APP总结的2020年IT领域各大岗位的简历投递和录用比例。

图片

我们看到,推荐算法工程师虽然是一个高度极高,容量也很大的方向,但是它的投录比居然达到了惊人的43:1。而且我相信,有意愿去投推荐算法工程师岗位的同学,学历背景、实习经验都不会太差。那么,在这样一个客观背景下,你还要跳到这片红海中,去跟大量的高素质对手搏杀吗?

这时你可能会说:如果我确实对推荐系统方向特别感兴趣呢?就只能忍痛放弃我喜欢的方向吗?其实也不是,你还可以选择其他跟推荐系统相关的岗位,比如同样很核心的数据挖掘工程师,或者后端开发工程师。

这些方向本身就有着足够的高度和容量,竞争程度也没有算法岗那么激烈。而且,在积攒了相关经验之后,未来转到推荐算法方向的gap也不会很大。综合来看,这是一个非常合适的选择。

我相信这门课的听众中,一定有非常厉害的同学,可以收割所有一线公司的offer。那这种情况下当然不用做权衡,选择你最喜欢的、高度最高的方向就好了。但是,对于我们大部分普通人来说,在认清自己的定位之后,选一个长期发展空间够大,短期竞争又不会太激烈的方向才是最优的决定。

选择后的坚持才是影响你收入的第一要素

在程序员的职业发展过程中,选择固然重要,但真正影响你收入的是选择后的“坚持”和“努力”。选择好的方向可以给你很大的发展空间,但达到预期高度就要靠你长期的积累了。

我一直很反对“单纯面向钱编程”的做法:算法岗收入多,就刷大量相关课程,恶补机器学习;Java方向火,赚得多,就报培训班,参加集训营……这样做的人,也许可以靠短期的突击准备获得一个还不错的初级职位,但他们永远都只能在金字塔的底端徘徊,殊不知,金字塔的顶端才有最精彩的风景。

下面的图片展示了Google不同级别软件工程师的收入。L3一般是硕士毕业应届生的级别,收入是19.2万美元,美国大部分一二线互联网公司的收入也基本在这个水平线上下。如果你没有决心和定力,过一两年就换方向、跳槽,那基本上你的收入也只能在这个线附近徘徊。

但是,如果你能在一个岗位深耕5年以上,升职到L5的级别,那你的收入就可以达到35.4万美元。毫无疑问,这时你已经是领域内的专家了,如果跳槽去其他公司,收入只会更高。所以在一个有前景的方向上坚持努力,才是真正的利益最大化的选择。

图片

我在极客时间开设了《深度学习推荐系统实战》这门课之后,有几位在Java后端方向工作了五年以上的老兵,也向我咨询了转方向的问题。有一个同学是这么说的:

“推荐系统这个方向太火了,收入也高,我想通过这门课的学习转到推荐系统算法岗方向。王老师,你有没有什么学习路径能帮助我成功转型?”

对于这个问题,我是这么回答的:

“你已经在Java后端工作了五年以上,肯定积累了大量Java开发的业务经验,以及JVM调优、各种数据结构的优劣等等非常宝贵的领域知识。这时候,彻底放弃这个本身很有价值的方向肯定是一种损失。算法岗确实收入会高一些,但你要知道,在这个领域你是一个新人,和刚毕业的同学处于一个水平之上。而且,当前面试算法岗的应届生基本都是名校出身+名企实习这样的背景,你竞争起来还不一定有优势。
我建议你结合自身的经验优势,补充领域知识,转到推荐、广告系统相关的后端岗位上去。这样不仅复用了自己五年以上的后端经验,而且能够如你所愿,转到推荐系统相关的方向,得到更大的发展空间。”

从财富管理的角度,贸然地抛弃5年的技术财富,显然是非常吃亏的一件事情。即使转方向,我们也要尽量去复用已经积累下来的技术财富,这样才能不断向更高的级别冲击。

你一定要清楚的是,当前互联网行业已经进入了存量竞争的时代。只要面试稍微高端一点的职位,就要面对非常激烈的竞争。现在,再也不是那个推导一下逻辑回归就能面上算法岗,背一下面试“八股文”就能面上研发岗的时代了。

所以“选择”后的“坚持”和“努力”就非常重要了。只要你当前所处领域的高度和容量是足够的,就要尽量沿着已有的方向往高处攀爬,这样你才能够持续积累专业领域的财富。

什么时候选择转方向,如何转?

我们刚才分析了为什么不要随意转换职业方向,这时你可能会问了:难道转换职业方向就真的那么难吗?在什么情况下,我们应该毅然决然地换方向呢?

我觉得在两种情况下,你可以坚定地选择新的职业方向。

第一种是你对自己的毅力和决心非常有信心,清楚自己一定会在新方向坚持下来。

对于这样的同学,我举双手支持你选择新的道路,因为你是一定会在新的方向上成功的。我之前带过的一位新人就是一个非常典型的例子。他是国内某211硕士毕业,做广告系统的非算法研发工作,但非常希望转做机器学习工程师。为此,他工作之余坚持学习英语,准备各类申请材料,最终申请到了CMU的相关硕士项目,现在在Facebook做机器学习工程师。

我相信如果你有这样的恒心和执行力,年龄、背景都不是关键问题,你一定会在新方向上成功。

第二种,自己所在的方向已经进入了长期的下行通道。

如果你发现,自己所处的职业方向已经处在了长期的下行通道上,就应该立刻为离开这个方向做准备。

一个典型的例子是从2013年开始的去IOE大潮。IOE指的是IBM的小型机、Oracle数据库和EMC存储设备。这三项基础设施曾经长期占据着中国互联网、金融、通信公司的核心位置,有大量高薪从业者。但是随着去IOE成为国家战略,我们就应该清楚,无论是从容量还是高度上说,这个方向都不会再现往日的辉煌了。这个时候,转方向就是IOE从业者们最应该做的事情。

类似的例子还有很多,比如曾经红极一时的Flash应用相关的工程师,塞班等非Android、iOS的移动端工程师,传统的J2EE工程师等等。在新的技术潮流的冲击下,和“坚持”原来的方向相比,果断转换到更广阔的赛道显然是一个更为明智的选择。

如果这时你已经有了转换方向的想法,可能还想问我:在转方向的过程中,我到底要具体做些什么呢?我觉得可以分为三大步骤。

第一,下决心。按照我们刚才说的原则,从“短期”和“长期”两个维度,确定你未来希望从事的方向。

这里我要强调的是,你的决定一定要建立在充分的分析决策之上;而且,一旦做出这个决定,就不要轻易改变。你要清楚,开弓没有回头箭,在接下来至少一年的准备时间里,不要做任何的摇摆,所有的工作、学习行为都要围绕着转方向这个目标。

第二,定目标。在确定自己的目标方向后,至少提前一年去看目标职位的JD(Job Description),列清我们的具体目标。你需要进行细致的规划,包括需要掌握的工具,需要了解的领域知识,需要准备的面试题等等。然后根据这些具体目标,有的放矢地去扫清转方向过程中的障碍。

第三,攒经验。你当前的工作、学习行为,都应该围绕着新的目标进行调整。比如你现在从事后端岗位,想转到推荐算法岗,那么可以看看现在公司内部有没有推荐系统相关的后端岗位,先跳到相关方向上来。再比如你是一名应届生,想从数学方向转到软件工程师方向,那么就应该马上着手去积攒项目经验,寻找相关的实习岗位。总之,要千方百计地向你的目标岗位靠近。

在这里我必须承认,转换自己的职业方向不是一件容易的事情。但是,与其在一个没有前景的方向上浪费时间,陷入“温水煮青蛙”的尴尬境地,不如搏一把,尽早跳到发展潜力更大的领域。如果你已经想清楚、做好规划,并愿意为自己的未来持续努力,我给你的只有鼓励和祝福。加油!

小结

我在05讲中重点强调过,投资是讲逻辑的。其实放到选择职业方向、规划职业道路上,道理也是一样的。进行职业方向选择时,同样需要我们保持清晰的思路,用严谨的逻辑去分析当前的形势。

在这一讲的最后,我就把今天的要点重新梳理一遍,帮助你建立严谨的职业方向选择逻辑。

  1. 有前景的职业方向有两个特点,一是高度高,二是容量大。
  2. 在具体找工作时,不仅要考虑长期发展,还要考虑短期供需关系的影响。
  3. 选择后的坚持才是影响你收入的第一要素,因此不建议在没有规划的情况下频繁跳槽。
  4. 只要满足这两个典型条件之一,就建议你转换职业方向:第一个是个人转方向的决心非常坚定,对自己非常有信心;第二个是当前职业方向进入了长期下行通道。
  5. 转换职业方向,具体可以分为三个步骤:第一步,下决心,开弓没有回头箭;第二步,定目标,提前一年查目标岗位的JD,确立详细的目标;第三步,攒经验,千方百计地向你的目标岗位靠近。

思考题

这是一个真实的咨询案例:小A立志成为一名一线大厂的算法工程师,他现在手头有两份offer,一份是某大厂的数据研发工程师,一份是中小厂的算法工程师。

如果是你是小A,你觉得哪个选择更有利于自己长远的职业发展呢?

期待在留言区看到你的思考和答案,如果这一讲的内容对你有帮助,也欢迎分享给你身边的朋友。我们下一讲见。

精选留言(15)
  • 张弛 Conor 👍(36) 💬(1)

    如果我是小A,我会选择大厂的数据研发工程师。首先,对于一个应届生而言,第一份工作去大厂是简历中的重要背书。对于后续的跳槽和职业发展会有较大的帮助。其次,大厂内部一般具有丰富的学习资源,这其中就包括大厂一些前沿算法的探究和实践,即便不是算法岗位,如果能够充分发挥主观能动性,也有机会在知识的储备和前沿性上胜过中小厂的算法岗。第三,大厂内的项目和机会较多,可以去做接近算法岗的工作,或者多多争取与算法岗对接的工作,甚至直接尝试内部活水直指目标。第四,我能直接接触到理想岗位的真实的榜样,可以主动接近这些人。这对于你审视自己的目标是否合理,以及了解如何靠近目标都非常有帮助。第五,以推荐系统为例,数据和模型共同构成推荐系统,可以通过数据研发工程师的经历加深自己对推荐系统数据模块的理解。从长期来看,也可能成为一种职场优势。

    2021-07-26

  • Link 👍(26) 💬(1)

    个人认为“从小厂跳槽到相同职位的大厂”,比“在大厂中转岗到不同的职位”更容易,所以选择中小厂的算法工程师更有利。

    2021-07-26

  • 王世艺 👍(25) 💬(4)

    分享下我的转方向的经验。 首先推荐看下混沌大学的第二曲线,里面提到两个切换到第二个增长赛道关键点。 一,十倍速变化。 二,击穿阈值。 当要出现新赛道的时候,一般都有一个10倍变化的变量,你一定能发现。我刚12年毕业是oracle dba,但当时注意到mysql的技术文章分享是其他数据库的10倍,评估mysql下一个关键点,主动去学mysql(选择)。 但是要从oracle切换到mysql还是很难的,因为当时mysql dba国内并不多,我自己也没实践,没人带,市面上没系统的课。所以我通读官方文档加阅读源码这条最苦的路子,击穿新赛道的阈值(坚持努力)。 十倍速的变化,大家一定要注意,这是行业变化的一个前置关键点。 击穿阈值,要说的就是只有达到阈值,你的努力才能量变质。 还有其他的一些原理,比如组织心态的束缚,讲的是为啥只有小公司能切换赛道。也许当时我刚毕业是个切换到mysql赛道的好前提,而那些当时的oracle专家基本都没切到mysql赛道。 还有个低端颠覆原理,讲的拼多多,美团如何崛起,也很有意思。我的体会是在运维开发时候,老系统只会越做越倾向高层和领导,比如花大量时间适配老板的pad这个需求,而对普通用户越来越不友好,流程bug甚至忽略,易用性越来越差,oncall只回答领导的提问等等诟病。这是你可提开发一些工具解决这些诟病,慢慢变为系统,最后替代老系统。

    2021-07-26

  • 夜空中最亮的星 👍(13) 💬(2)

    选择大厂。 老师我是一个普通学历,6年经验的运维工程师,这几年的工作心得,运维是一个辅助职位,提升空间有限,不知自己往那方面转下会比较合适,老师有没有相关的经验,分享下啊,我想学习参考下,想在提高下自己

    2021-07-26

  • 森森森 👍(10) 💬(5)

    我是一名工作9年的老兵,从最开始做java开发,后面陆续做了大数据、推荐系统、自然语言处理的东西,也参加过各种推荐系统培训班、自然语言处理训练营可以说每个领域都会,但感觉做的比较浅,当然我的java后端能力以及大数据的处理能力都一直在,这种情况是不是工程和算法兼具比较好呢。

    2021-07-26

  • 夜空中最亮的星 👍(4) 💬(1)

    谢谢老师,就凭老师的这个回复,专栏订阅已经超值啦。自己一定好好努力💪

    2021-07-26

  • 进化菌 👍(4) 💬(1)

    选择比努力重要,怕的是只知道努力而不做思考的选择。 选一个有前景的职业方向,而不是光有钱景的。这一点,我们往往会被“钱”限制,因为不是谁都看得清、有勇气拒绝短期的收益。 “开弓没有回头箭”,下了决心,就干吧!努力爬到职业的顶端,不要再心猿意马了。只有自己足够的强大了,选择才会更多~

    2021-07-26

  • ubuntuMax 👍(3) 💬(2)

    PHP转Java了,确实行业下滑,换个赛道,继续努力

    2021-09-30

  • dbtiger 👍(3) 💬(1)

    思考题: 小A既然都立志了,那毫不犹豫要往“算法工程师”相关工作上靠,即,先选择中小厂的算法工程师。 选择逻辑是,先占小坑,再挪到大坑。 当然,如果小A看到数据行业10年以上稳妥耕耘的大趋势(比如国产软件替代),那么把握趋势选择数据研发也不失是个好的上车机遇。

    2021-07-26

  • 王志simon 👍(2) 💬(1)

    我如果是小A,我会选择大厂的数据研发工程师,第一,作为一名应届生,职业生涯第一份工作在大厂的话,能够得到更广的视野,大厂内部的学习资源和培训流程对刚工作的人建立搞笑工作习惯是非常重要和有效的,这些软性实力会在职业生涯后面起到越来越重要的作用。第二, 数据研发算是算法的前置,在大厂工作中也有机会接触到算法,如果真的有信心和毅力,不妨在大厂中发挥自己的聪明才智和努力,也许有机会通过内部转岗到算法岗。

    2021-10-22

  • 青鸟飞鱼 👍(2) 💬(1)

    老师,你好,上个月我也是刚刚从c++转向了GO,从传统行业转向了互联网行业。从去年开始,准备了一年半,确实不好转。云原生这块,确实是我感兴趣想做的。

    2021-09-05

  • 学要有所用 👍(2) 💬(2)

    从长期利益来看:数据研发工程师跟算法工程师都有不错的发展前景,选择最喜欢的岗位即可 从地域性来看:相比数据研发岗位,算法岗含金量更高,“钱”景也更好,而一线城市提供的算法岗位多一些,提供的成长资源也丰富一些,一线以下的城市,无论是成长资源还是岗位都相对较少,如果是身处大城市或打算留在大城市,则建议优先选择算法岗

    2021-08-09

  • miao 👍(2) 💬(1)

    老师,您好。你提到算法,java后端的天花板够高且暂时没有衰落的迹象,我是一个大数据开发,我想请教下大数据的天花板和职业周期怎么样呢?

    2021-07-26

  • 浣熊当家 👍(2) 💬(1)

    感谢王喆老师,句句都是干货, 给出的建议明确, 有广度,有高度。 受益匪浅

    2021-07-26

  • Elvis 👍(1) 💬(1)

    王老师,你好,我是一个有三年爬虫开发,非重点院校本科毕业。自学一年多AI,打算转NLP。与应届nlp毕业朋友沟通,反馈学的不错,可以出去试试。个人觉得自己自控力不错,但由于自己本科学历,担心后期发展也局限。目前规划先转NLP,工作稳定补个在职研究生。这规划是否好?老师能否给个建议?谢谢

    2021-08-02