蓝Luckyclover
算法工程师并不是一个吃青春饭的职业。
在大家传统的思想观念中,一直认为IT行业都是吃青春饭的,什么大量裁员、中年危机等,都无一不与IT界相关。实际上,算法工程师并不是一个吃青春饭的职业,反而随着经验的累积变得越老越吃香。
但是不管什么时候,算法工程师始终要保持高度的敏感性,具备一定的创新性,有很强的想象力和推理能力,还需要具备较强的危机意识,从而不断吸取新的知识技能,毕竟生产在进步,科技在创新。
算法工程师的发展前景
总体来说,算法工程师就业前景依旧不错。目前,算法工程师仍是一个高端又紧俏的岗位,薪资高,就业形势好。
虽然随着行业的不断发展,算法工程师的竞争压力会不断增加,但只要自己保持足够的能力,注重自己编程实践能力的提升,不断跟随着时代一起进步,就能不断得到发展,提升自己的就业竞争力。
z未成年
这周面试了一个候选人,面CV/DL/AI的TechLead。简历很牛逼,做过很多CV的工业项目,涵盖detection, OCR, face recognition, fire/smoke detection等好多项目. 给我们讲了45分钟做得项目,讲得很自信。我挑了一个大项目,我说你在这个项目中的贡献是什么?他说整个项目的所有算法部分都是他实现的。OK,我开始进行深度学习的技术面。我先问了两个深度学习的中等难度的问题,他都说不知道。有点冷场,那我赶紧问点简单的吧。我说,深度学习网络,进行分类时有哪些loss?他犹豫了一下,回答: relu.瞬间把见过大场面的我还有同事都震住了。面试另外一个人,我说目前我们检测主要用yolo,他反问了一句,怎么不用tensorflow?......算法工程师的目标既不是精通各种框架,会调各种包,也不是会发paper就是成功,而是有能力解决实实在在被提出的算法问题。这里的问题可能来源于业务,也可能来源于长远的战略部署,甚至可能来源于一次大领导的拍脑袋。不管怎么说,个人觉得能独立分析,拆解,建模和解决算法问题的算法工程师就是胜任的,否则再怎么花里胡哨都是差劲的。从反面回答一下,我碰到什么样的算法工程师会认为他/她是优秀甚至是卓越的大佬,并选择紧紧抱住大腿不松手。本文很多观点也是来源于不同公司的前辈们讨论过这个问题,这里也感谢大家的指点。总得来说,以下几个特点是我特别留意的,如果碰到了我就会认为这位很厉害:基础非常扎实。问他/她一些比较经典的算法,能够很清晰地说出算法的特点、适用的场景、坑点、里面的细节等等。工程能力很强。我是一位“工程狗”,自己的工程能力很菜,但对工程能力强的同学非常崇拜 Orz 如果碰到一位算法工程师的工程能力很强,仅凭这一点,我就认为他/她基本上一定是大佬Orz重视代码的测试。算法岗的工作并不完全就是调参炼丹,往往也是需要去写一些代码的,例如写些spark/sql代码获得特征,写模型等等。既然是写代码,就可以而且应该在其中加上测试。实际上,根据我的经验,如果碰到某个其他地方好用的模型在自己的场景下效果很差(不reasonable得差),那很可能是数据、特征的处理代码有问题,或者模型的代码有问题。这种问题可以用单元测试(断言等)来提前发现,也可以用一些sanity check来发现。对场景业务的认识很深刻。软件工程没有银弹, 机器学习也没有银弹。 用什么样的特征、什么样的预估目标、什么样的评价指标、甚至什么样的模型,这些东西都是要与场景业务结合的。换言之,工业届里,业务先于技术。很多大神在这个方面做得尤其出色。在实际场景中,注重先把整个pipeline搭建起来。个人认为,这一点在实际应用中往往应该是最优先的。搭建起来之后,机器学习系统的上下游也都可以工作,也可以更好地判断系统的瓶颈所在,把好刚用在刀刃上。这其实就与做开发的程序设计一样,较早地抽象出比较好的接口、搭建一个系统原型是很重要的。能够持续学习新的知识,跟踪最新的成果,对各种模型的motivation有自己的理解,有自己的insight与vision。这里举几个我自己学习过程中碰到的例子来说明一下这点。例如,推荐系统中,在Youtube 16年的推荐paper中,为何step1和step2的优化目标是不一样的?人脸检测中,MTCNN为何要分为多阶段?landmark检测中,3000FPS为何要分为两个阶段?(这些是设计相关的motivation)Google的wide&deep为何在Google store的场景下效果好,而在其他的场景下效果不一定好(这是对场景的motivation理解)?文字检测中,PixelLink为何要引入link?OCR中,CRNN为何要引入一个RNN?机器学习系统中,LightGBM是如何针对xgboost存在的哪些缺点进行改进的?(这些是对改进的motivation理解)我认识的一些大佬们会主动结合文章思考这些问题,有的时候会有与paper所claim的不同的理解(毕竟写paper的story很多时候也不一定靠谱,大家都懂),甚至还会做实验验证自己的理解。然后拿这些问题来考我,在我思考不出来后再告诉我他们的理解与实验结果Orz做多数实验之前有自己的假设,根据实验结果会根据实验结果做进一步实验,或修正假设、或进一步探究。自己参与的项目,对其中与自己比较相关的内容的细节比较清楚,自己负责的部分能够了如指掌。能系统性地分析出机器学习整个系统的瓶颈所在,并提出相应的解决方案。当系统效果不好的时候,知道如何去debug,找到问题所在,改进系统的性能
女王Z大人
从体力和经历来说算是,算法工程师属于高体力和脑力的劳动,如果到了一定的年龄,会有跟不上的时候,就算是一段时间的工作经历,不过以后可以有其他的发展方向。
算法工程师是做数据模型进行推荐、分类、识别、预测等工作的建模型算法工程师,通常JD上也写成数据挖掘工程师、深度学习工程师等。这类大体的工作就是结合业务场景,选择合适的算法模型,将数据进行处理后使用模型获得结果,也被戏称为“调参工程师”。
算法工程师可以考虑转行自由职业,很多国家成熟的IT环境让程序员成为IT自由职业者似乎并没有那么难,方式主要可以分为线上和线下两种。
在大数据行业内生存的时间越久,算法工程师其经验也会越得到肯定,这也是大多数资深IT人士定义大数据或将带来50、60岁的“老”专家的原因,很多IT从业者试图向大数据转型。
louisbellen
在大家传统的思想观念中,一直认为IT行业都是吃青春饭的,什么大量裁员、中年危机等,都无一不与IT界相关。实际上,算法工程师并不是一个吃青春饭的职业,反而随着经验的累积变得越老越吃香。但是不管什么时候,算法工程师始终要保持高度的敏感性,具备一定的创新性,有很强的想象力和推理能力,还需要具备较强的危机意识,从而不断吸取新的知识技能,毕竟生产在进步,科技在创新。
算法工程师年轻的时候薪酬都很高,并且十分抢手,实在不行还可以转岗,在IT行业里,可以说所有的职位吃的都是青春饭,这是国人的印象,但事实也确实如此,不过大家可以不必担心,虽然吃的是青春饭,但是到了40+这个年龄,还是可以转岗,或者进入管理层的,大可不必担心。
优质工程师考试问答知识库