分享

算法工程师的晋升思考

 520jefferson 2021-11-21

这篇内容可能并不是很新的东西,临近年末,该准备明年的计划了,搜易自己也在重新梳理自己的短板和需要提升的地方,今天也给大家讲讲我理解的一些成长和晋升需要的要素和需要做的工作吧。

体现说一下,这里只考虑能力的提升,类似项目管理、领导力等,我可能还得持续学习精炼。

文末我也会把一些我曾经聊过有关方面的内容放出来,大家可以进一步阅读。

算法工程师的能力

要谈成长和晋升,首先需要考虑的是能力,需要具备什么能力才能够晋升,这就和考试一样,要考什么知识点,要明确什么,非常重要。

所谓算法工程师,就两个关键点,算法和工程。

算法,其实就是指我们日常做的一系列算法工作,我们要评估的就是“胜任”能力,也就是能完成日常工作的能力,更进一步就是我们要具备能应对未来更多更难任务的能力,能做的事越多越难,我们的等级理应更高,这里我分为了三个方面:

  • 前沿技术的掌握,从易到难分别是当前技术的学习使用、技术发展的把握等。这里体现的是个人技术的先进性,这意味着自己能力的天花板。
  • 基础技术的掌握,速成baseline。日常使用需要的并不是用牛刀,而是解决问题,深入浅出大道至简,讲求的是用最简单的方式解决最简单的问题,各种方案的理解和使用技巧是需要扎实掌握的,这是个人能力的下限。
  • 具体场景的设计能力。回到上面说的,这里需要的是我们处理日常工作,换言之我们要对现实问题有理解力和解决力,这就需要从我们的知识储备中掏东西。

工程,绝大部分的算法是需要处理落地问题的,哪怕是科研型的,我们也需要一手一脚地把这个算法给实现出来,所以工程能力是真的谁都跑不了的。

  • 基本功能的实现,另外越是做业务的,那工程能力要求会越高,例如推荐方面需要大数据技术,另外还有一些grpc、http服务、数据库之类的。
  • 流程、框架的设计。说白了还是技术和架构的选型,数据怎么流,线上线下怎么做之类的,需要会设计,这个倒不是什么知识点,更像是一种能力吧。

算法工程师的分类

虽说都是算法工程师,有的时候可能还会出现很多类似“数据挖掘工程师”等奇怪的名字,我们先都归为算法吧,来看看算法岗都有那些类型,我主要分为三类,分别是科研型、工程型和业务型,对应重要的技能点其实就是算法、工程,另外还有一个就是业务。

  • 科研型。一般出现在研究院比较多,非常重算法,技术和业务会比较轻,少数技术也需要多一些。
  • 工程型。一般出现在比较偏平台的部门,算法会比较重,工程应该是这三个里最重的,业务会少很多。
  • 业务型。一般出现在业务、产品部门,算法多少都会有但是不会很重,工程会稍多,重要的还是理解业务。

其实可以看到各个岗位会有各自的侧重点,这多少影响自己点技能点的情况,当然日后的要晋升,也可以根据自己的类型重点学习各个技能点。

路线

但凡是做工程的,基本都脱离不了这个路线:入门->进阶->管理者。

入门:完成任务。

当你能完成一个明确的任务的时候,就可以说你入门了,这个任务是需求明确、方法明确的,尤其是方法明确的,说白了你知道要干什么然后能把这事干好,就算入门,很简单,现在告诉你要做一个文本分类任务,而且和你说要把数据清洗一下然后用textcnn做一遍就OK,这个东西能做明白,就算是入门,做不到就不算入门。

这里有几个细节点:

  • 明确方法。这个很重要,相当于你就是一个执行者,照着做能否做出来,这是个最基本的要求。
  • 朴素的执行者。暂时不需要有太多的思考,能做出来这是第一步。

说着很简单,但这里面是需要大量的基础的,继续以文本分类为例吧。算法上,你要懂textcnn的基本原理,至少也得是这是个啥模型,输入输出是啥得懂,基础的深度学习概念要懂,工程上,主流的pytorch或tensorflow至少要懂一个,没这些积累真干不了。

进阶:熟练工起步

当你可以独立的完成一个合理需求的时候,我理解就是进阶了。这里的需求是一个模糊主观的需求,例如“帮我做一个中文情感分析工具”,这里没有方法,只有一个需求点,希望的效果,这里没人告诉你该怎么做,你得自己想,你能很快很好的把这个做出来,就算到达这个新的台阶了。

首先,熟练是必然要求,这点满足不了和入门阶段没有区别,这里的熟练,我想总结为3个点:

  • 方法的熟练度。能快速把方法实现,而且稳妥可靠,这个应该比较好理解。
  • 问题的定位和发现。不再聚焦于方法本身,而是能够从中能发现和定位问题,也就是能回答类似“为什么我这的效果不好”之类的问题。
  • 效果优化。不仅能发现问题,还能解决问题,也就是还能回答类似“这个效果问题我该怎么处理”之类的问题。

这里有的细节点,方案设计,其实能搞定上面说的2、3点,就和懂方案设计很接近了。这篇文章里其实强调了不少,要进阶必须要达到能自己设计的能力,光会完成任务撑死只能是熟练工,要想进阶,到一个新的层次,必须从中跳出来,多做一件事,那就是能想明白自己要怎么做,而不仅仅是做什么,这个思维能力层次才会给你带来新的提升。这也是我为什么说进阶是“熟练工起步”而非“熟练工”本身的原因。

方案设计,继续展开,其根本是设计,是权衡,是选择,这里有几层要求:

  • 充足的知识储备。你的脑子里,武器库里有足够的方法和手段能支持你从更多角度完成一个任务。
  • 扎实的知识理解。脑子里的方法,不仅要知道,还要懂,这是能权衡和决策的依据。
  • 优劣的比对和权衡。能理解自己的方法,知道优劣,才能针对当前问题总结出更加合适的方案。

高阶:管理者

这里的管,我分为管事和管人,管人的机会其实不是很多,但是管事,我们始终要管,我的段位不够,只讲管事,可能也讲的不那么好吧。

进阶阶段是要求完整完成一个需求的,某种程度上已经算管事了,但是到了高阶可能要看的东西要更多,我分为两个视角

  • 短期战术。
  • 长期战略。

战术讲究短期时间的解决,我们的确是希望能短平快地把当前的事情解决,这与上面的方案设计是非常契合的,不再重复。

而战略则是要对长期发展有把握的,我们在用战术解决问题的同时,对先有框架要考虑到未来的可拓展性、可迭代性,对外则是要考虑未来需求和技术发展的态势,我们终究希望自己做的东西能走的远一些,那这些问题肯定是要考虑的,这里非常关键。

应该怎么做

给入门者的建议

入门之后,自己其实一度陷入很严重的瓶颈,因为一昧地学习方法好像并不能让自己有新的提升,论文没少读,博客也没少看但总感觉自己好像都在做一些同质化的事情,寻求突破必须有一些思路的突破,而不只是更多的模型和方法。

  • 基础还是要扎实,但在扎实的同时,要提升深度和广度,所谓的深度其实是对方法的理解,尤其是它的优缺点,前面说了这是我们坐方案选择的依据。
  • 多总结多问为什么。从“是什么”的学习提升到“为什么”来,这是带领你进入深度领域的一把钥匙。
  • 模仿。要想晋升,那就要看在你前面的人做的都是什么事,需要什么能力才能把这些事情拿下,这个能力我们其实一直都有但是要开始有意识地使用它。

记住,一直聚拢在方法本身,学很多模型,这点并不能让自己突破,毕竟问题下只能用几个方法,学得多不代表就能用了,同时需要注意的是,这里不是让大家不学,而是不能只学。

进阶者培养的思维方式

这里讲几个需要具备的思维方式吧,看看自己能不能回答出来。(可以当面试题吗哈哈哈)

  • 目前你所在的领域有什么关键和常见的技术,具体都有什么优缺点。
  • 特定问题,或者特定场景,有什么特点和难点,这些问题点都可以怎么解决,这些解决思路又有什么优缺点。
  • 你现在的技术现状如何,有没有什么问题,又有没有什么解决方法。(这个其实研究生阶段有培养,记得拿出来用)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多