前段时间,有几个HR朋友问我:
算法工程师的日常工作到底是在干嘛?
平常看起来似乎还挺闲的,工资还那么高。
有时候算法工程师好像又和大数据工程师是一样的工作?
这到底是怎么回事呢?
大约整理出以下几个疑问:
1、 软件工程师、算法工程师、大数据工程师区别
2、 一个算法工程师的日常
3、 算法工程师有哪些类别、涉及的技术、作用领域
4、 算法工程师的段位怎么分
5、 算法工程师常见的面试问题
这次我们先来看看第一个问题。
软件工程师、算法工程师、大数据工程师有什么区别?
从事软件开发相关工作的人员的统称。
其工作内容会比较宽泛,从编程到算法,软件整体架构到编码的实现,都是需要涉及。
而事实上,我们常规所说的软件工程师,其狭义的定义实际上软件研发工程师、程序员等,他们是主要进行软件架构和编码实现,会使用我们常常听到的JAVA、PHP等开发语言。
下附目前市场上常规的软件工程师的类别:
来自知乎
大数据工程师,其实上并不存在这样的岗位。
它实际上是与大数据相关联的一类岗位的总称。
跟大数据有关的职位主要分成2大类:一类是应用类、一类是系统类。
应用类
偏向于数据分析、数据应用,比如我们经常讲到的数据分析、数据挖掘,均属于这个类别。这类职位主要的功能是提取数据、挖掘数据中隐含的业务信息,支撑企业决策。
这个类别中的大数据算法,其实我们基本上可以理解算法工程师。
这是唯一跟算法工程师有交叉的部分
系统类
偏向于系统开发,比如我们经常听到的hadoop、云计算,就是属于这个类型。这里其实主要是hadoop(一个分布式系统,简单理解为另外一种和Windows或者是MacOS一样的东西)偏多,开发语言一般是Java。而另外数据管理员(DBA)和大数据运维工程师,其实,还是原来的DBA,没有变化。
他们的职责会更纯粹,他们需要知道如何把现实问题转化为数学的模型,并且把模型调到极致,从而解决问题。
算法工程师工作内容更单一(其实有时候,他们只是在思考问题,而不是真的闲),但是更专,需要更好的数学功底。
不过,目前市面上大部分招聘算法工程师的岗位,特指机器学习、数据挖掘领域的非确定性算法或解决一些非确定性问题(见名词通俗解释)。
因此,有时候所谓的算法工程师,真的和大数据相关的工程师在工作上存在大量的看起来『重叠』。因为,这个工种是想办法从数据中获得规律,通过规律优化目前业务、从而产生价值。
算法工程师大致分成以下2类,其中建模类的算法工程师,实际上的工作会和大数据相关的岗位相似:
上述简单从职位的定义上做拆解,其实这3个岗位,其工作职责分别处于不同的阶段和层次。
更多时候,一个完整优秀的产品,可能需要上述几个岗位协同进行配合工作。他们的工作流大约是这样的。
这张图大致描述了不同岗位之前是在什么时候介入工作相互配合的。
其实算法工程师,也可能是数据挖掘工程师。
其实生活中有非常多跟算法有关的现象,只是我们没有发现而已。
对于我们不是做技术类工作的人而言,我们只是不知道其细节,但我们应该要定位到其位置,这样我们在进行人才招聘的时候,才更容易做到心中有底。
举例
我们打开高德导航,从广州东站自驾开车前往祈福新村
一般会出现3条路线,1、广州大道路线;2、新光快速路线;3、华南快速路线。
每一条路线,均会有一个预估时间。
这个时间,大约就是多项式时间的意思。
作为驾驶员,当出现3 条导航规划的路径时,我想选择一条时间上最快的路径规划,这时显示华南快速路线比其他2条路线节约10分钟(这是NP问题,是不是真的可以节约10分钟)。
我到达祈福新村,这时我问走新光快速的邻居A,其到达祈福新村的时间。
这时他告诉说,他跟我同时到达祈福新村。
这时,我才验证:华南快速路径规划(答案)不是正确答案。
可能P问题和NP问题,你们会觉得跟我们的生活关联度不大。
在算法工程师眼中,则是完成不一样的。
以导航的例子来说,若出现绝大部分人验证华南快速这条路都和新光快速这条路的通行时间是一样的,那么说明该路路径并不是最节约时间的路径。
高德导航的路径算法工程师,可能需要重新调整其路径规划的算法公式。
这样,才能够更好的为高德用户服务了。
也许他在数据库中抽取的数据还应该添加上
1、车型的不同会导致驾驶速度不同,造成对通行时间的影响
2、不同品牌的汽车,其加速减速对通行时间造成的影响
3、男女驾驶员的驾驶技术不同,对通行时间造成的影响
其实,这个过程就是他们在修改算法公式的参数,所以有时候算法工程师,还有一个外号,叫调参狗。
但即使是这样,其最终的通行预估时间,也不见得一定准确。
算法工程师想要获取相关的数据,也不见是全网数据。毕竟并不是所有人都使用的导航是高德。
算法工程师通过不断的优化算法公式,让这个时间尽可能与真实的通行时间一致,相似度越高,大家对高德地图的信赖度就越高,用户就越多,高德才能够进一步割用户价值的韭菜。
跟HR相关的例子:
2018Q4季度要完成10个人的招聘(问题),12就是这个n,Q4,则时间是m。
1、现在公司只有你一个人负责招聘,你个人的招聘能力是平均每个月完成4个人的招聘。那么完成这10个人员的招聘,则是3个月。m(12)=3个月。
2、如果现在公司除你之外,另外一名同事也负责招聘,他的招聘能力是2个人/月,那么第一个月完成招聘人数为6人,第二个月为6人,整体的m(12)=2个月,提前完成任务。
那么,是不是对招聘人员数量的增加,就会提高整个招聘的进度呢?
答案是不一定。
假如你是这个算法工程师,你觉得最终完成招聘任务的时间,会跟哪些因素有关系?
答案在下期的《谁说HR不能了解算法工程师的日常?》公布。