科研像是女生自己拿手机自拍,左一张,右一张,然后千挑万选,找一张自己最满意的,然后花上半天时间各种PS,一顿修图(很多学术不端,就是这么产生的),最后发到朋友圈求点赞:“最近熬夜气色不好,需要好好睡个美容觉啦…”
搞工程就像是你给女朋友拍照,10张照片,哪怕有一张拍的不好都不行:“给老娘拍这么丑,你存心的吧!?重拍!”,所以,你的压力很大,手都是抖的,生怕伺候不好这位姑奶奶。
所以,科研是自己成果自己评价,往往都是把自己最好的一面展现出来,成就感来自于外界的认可与欣赏。
工程是自己成果别人评价。需要把各种可能出现的问题都排除掉,如履薄冰,只求各位上帝(可以是老板,顾客,老婆,女朋友等等)不要太过苛求。
因此,工程比科研要难得多。
我也是博士毕业之后进入了工业界,从一个纯粹做科研的researcher转变为了一名算法工程师,别的行业不好说,就谈一谈互联网把。
我在互联网里看到的三种类型的“算法工程师”:
- 在业务部门的算法工程师:以Development为主,注重工程实践与快速上线,项目周期短,排期满,有业务强力支持,拥有海量标注数据,模型用的往往比较简单,如:LR、GBDT、LamdaMART等。模型上线后,马上就会转入下一个战场,往往不会花太多时间Research。下一轮再优化这个模型,往往排到半年或者一年后了。
- 在技术部门的算法工程师:兼顾Research和Development。往往会接受业务部门并不是特别急切,但是有难度的需求。探索新技术和业务结合的可能性,我们部门这些年比较成功的就是王者荣耀和深度强化学习的结合探索,取得了惊人的效果。相比业务部门,技术部门更愿意把技术做深以作为自己的护城河。并且借助业务进行ab-test得到来自线上最真实的反馈。研究周期更长一些,也也要兼顾上线,一般以季度为单位产出模型,半年一年甚至几年专攻某一方向,会做大量实验来帮助模型迭代,有了好idea和好结果也会发发paper,但不会以paper为主要KPI。
- 在AI lab的算法工程师:以Research为主,注重探索学术前沿,以paper为主要KPI之一。同时,也会承接一些来自业务的探索性需求。我最近感受比较深的就是,我发现了一个方向可能会对线上产生非常好的效果,但学术上还非常新,比较拿不准能不能做出来。而我也无法放手业务需求,去全职做这个research。这个时候我们就主动联系AI lab,给他们提预研的需求,让他们从学术上先探索。
你会发现,
- 从Development到Research,面对的问题的不确定性逐渐增加。
- Development更拼手速和业务产出,干活要又快又好,技能树要求比较宽,从工程能力到传统算法都要求涉猎。
- Research更看重创新和探索,对问题要求钻研深,技能树要求深,要能看到问题里别人看不到的东西,创新,然后解决问题。