算法工程师的三重境界

算法工程师依据研讨范畴来分重要有音频/视频算法处置、图像技巧方面的二维信息算法处置和通讯物理层、雷达信号处置、生物医学信号处置等范畴的一维信息算法处置 。
目前国内从事算法研讨的工程师不少,但是高等算法工程师却很少,是一个非常紧缺的专业工程师 。算法工程师是应用算法处置事物的人 。那么,算法工程师要到达境界?
比拟初级的比如某些工程出生但没有信念投开发的候选人,看着这个稍显生疏的工程岗位认为可以来碰碰运气(相似于以前的一个玩笑:不知道自己该干什么的都投产品经理去了) 。
进阶一点的有啃过一两原形关书籍,上个两门课 , 做过两个玩具项目标学生 , 问一个问题通常都能口若悬河地说上一通 , 但你让他把刚才说的问题和计划用情势化的语言来表述一下,就只能干瞪眼 。你把纸和笔都推到他面前要描写和推演,却发明得到口述内容的语音辨认版 。
我挑人通常对候选人的情势化思维才能有请求,这也是为什么我以为具备根本的数学才能是多么主要的原因 。因为算法工程师跟传统的开发工程师不同,很多时候并没有一个现成的定义好的问题在期待着你 , 你通常须要先把需求方的自然语言翻译成情势化的语言,然后再翻译成机器编码(这部分扯起来就很多了,将来再撰文详述) 。当然也有对这个职位充斥了热忱,但显著还没预备好的同窗 。这样的候选人只要对眼缘,我一般都会加以疏导,无论是重新思考自己的职业发展方向,还是进行合理的才能储备 , 都比这样凭着热血碰钉子强 。这个阶段的同窗,看山是山,看水是水,习习用生涯语言来描写问题,剖析问题,而未理解把握抽象在其后的共性 , 并用情势化的语言把问题和自己的想法表达出来 。
【算法工程师的三重境界】 及格的候选人通常经过一些学术或项目标锤炼,不知觉地跨过了第一阶段,真正地进入到这个门槛里,理解了算法和抽象的乐趣,并乐在其中,“衣带渐宽终不悔,为伊消得人憔悴” 。这批人通常已经具备了成形的情势化逻辑思维习惯,对于面临的实际问题 , 第一反响就是“如何量化” , “如何建模”,“已知变量是什么”,“目的函数是什么”,至不济的,也会用自己做过的项目作为一个模子去套新的问题 。

算法工程师的三重境界
算法工程师的三重境界
他们拥有成熟水平不等的知识系统 , 凡事都能套入到自己的系统中去表达和推演,在抽象层面对问题进行解答 。但这也是一个拿着锤子满世界找钉子的阶段,每个人都以为自己的锤子是万能的,所有问题都要代入到自己熟习的模型中去求解,于是往往能看到一些钻在牛角尖里绕不出来的面试者 。比如一个其实不难的统计问题 , 想得太多,有时就会被面试者套入假设检验 , 有时是分类问题 , 有时又变成贝叶斯推断 。这个阶段,看山不是山,看水不是水,有点痴狂,有点自负 , 有点执着,有点迷失 。
总有一些人能解脱自身知识形成的枷锁,跳出自己模型框框 , 回归到问题本身,到达了看山还是山,看水还是水的层面 。他们在具备很好专业素质的前提下,不被自己的专业所约束,他们首先关注问题的起点和目的,并通过自己的已有甚至未有的知识去描写中间的路径,为问题定义出合理的边界和解决路径 。能到达这个层面的,已不多见 。
即使在实际工作中,也有大批的第二层面的解法,面对问题,通过不断地参加模型,使得架构变得庞杂 。而只有回归到问题本身 , 从动身点进行剖析,千锤百炼后 , 能力走出自身的困境,享受“蓦然回想,那人却在灯火阑珊处”的惊喜 。

算法工程师的三重境界
算法工程师的三重境界
相对于才能划分拥有比拟清楚尺度的传统开发工程师来说,算法工程师是一个相对较新的职位,学校里也没有一些定义明白的造就课程(比如c/java、数据库、数据构造) , 可以据此来对候选人的才能进行权衡,所以对其才能的界定还比拟隐约 。这里我从面试官的角度来描写自己对这个问题的思考——除了根本的工程才能之外,还有哪些素质是必要的 。这是个很大的值得探讨的话题,这里只是开了个头,表达得还很隐约,不足够具体和体系,属于随性的念叨 。将来有机遇我还会联合着自己的实践阅历做进一步论述,也欢迎大家在这里发表自己的看法 。

推荐阅读