算法工程师应该具备哪些工程能力

0x00 前言

最近看了 Milter 的《算法工程师究竟需要哪些工程能力》这篇文章,有所感想,因此也写一篇关于算法工程师的技术能力的问题,和大家分享一下居士关于算法工程师的技术能力的观点。

对于一名优秀的算法工程师,他(她)要具备的不仅仅是出色的技术能力,也要有很深的业务理解能力和对外沟通能力,总之,要求可以很高!

但是,从职责能力的划分上来讲,算法工程师首先是一名工程师,因此本文主要从工程能力要求上进行一些探讨。

开始之前先放一份思维导图,这将是这篇文章要分享的核心内容:

0x01 工程能力概览

算法工程师,从名字上我们就能看出,一名算法工程师首先应该具备算法能力工程能力,我们可以认为这是基础的技术能力。由于现在开源技术的普及,Sklearn、Tensorflow 和 Spark ML 基本已经成为大部分算法工程师标配的工具库了,因此,熟练的调包能力也是决定了一名算法工程师能否快速实现需求。

其次,在真实的生产环境中,算法的落地会遇到各种各样的业务场景和数据环境,这也要求算法工程师需要具备Pipeline 构建能力,将整个生产环境中的数据流和模型打通。同时,在生产环境中,会出现各种“疑难杂症”等待你去解释,比如说为什么实验效果特别差?为什么模型效果不稳定?这就要要求算法工程师需要具备一定的数据分析能力

很多时候,你会发现,你用在数据分析和Pipeline构建上的精力可能占据了你8成以上的工作内容。

当你具备了上面的能力时,你已经可以称自己是一名算法工程师了。此时,你可以去对着数据分析小得瑟一下:“你看,我能构建整个模型的Pipeline,你却只能拿到别人提供的数据后调调包吧。“或者,你也可以去找开发得瑟:”你看,我懂了很多算法哦,你就只会写代码吧。“

得瑟完之后,我们还是回归正题,算法工程师只具备这样能力是否已经够了?答案当然是不够的。由于不同公司的团队成熟度不同,工具化和流程的成熟度都不同,这就会对算法工程师有不同的要求,比如说模型发布能力报表开发能力,当然也会有一些其它能力,虽然可能不是特别重要,但是当这些工作没人帮你做的时候,算法工程师可能依然要承担起这些工作内容,比如说灰度测试的能力、负载均衡的能力等等。

将上面的内容整理后,就是这样一份思维导图了(一张图多看几篇更能加深印象,因此我再贴出来一遍)

0x02 工程能力详解

一、基础能力

算法能力

算法能力就不多说了,算法工程师的基本能力要求,不懂算法对于一名算法工程师来讲是不太合理的。这里居士把统计学的内容也放进来了。

编程能力

编程能力主要分为两部分:

  • Python、C++、Java这类编程语言,这三种也是算法工程师需要了解的主流编程语言,一般掌握其一就够,看不同公司。

  • Sql就是很通用的能力了,Sql也是一门编程语言,而是是数据处理最常用的语言!

    很好用。

    大数据场景下,要了解Hive Sql。

调包能力

大家虽然会调侃调包侠,但是说实话,能调包调的很溜的人,也是不多的,比如说现在让你自己用tensorflow构建一个复杂网络,不能google,你能写出来吗?能记清楚用法吗?

  • Sklearn

  • Tensorflow

  • Spark ML

二、核心能力

Pipeline 构建能力

Pipeline构建能力,这里想表达的更多的是整个数据流的构建能力,数据从日志->特征->模型训练->反馈,这一个链条能否完成的能力,这里面会有很多难题需要克服。比如说:

  1. 实时和离线模型一致性问题?

  2. 离线和实时特征一致性问题?

  3. 实时特征构建的问题?

  4. 数据延迟的问题?

很多时候,模型发布之类的工作是可以由其他同学支持完成,但是数据流这种问题更多的是需要算法工程师来解决的。

数据分析能力

这里的数据分析能力不是指商业分析或者业务分析,更多的是指特征分析、算法效果分析和各种异常问题定位分析的能力。

很多时候,两个算法工程师能力水平的强弱从数据分析能力上也能窥得一二。

三、辅助技术能力

辅助的技术能力是指,你会不会的影响不会特别大,但是也都是有用的能力,特别是不同公司的发展情况不同,很可能会出现一个算法工程师既要做数据接入、又要做数据清洗、还要做算法平台
也要搞前端、还要负责模型上线、系统运维。

这里就不再细讲了。

0x03 思考一

聊一下对技术能力、工程能力和数据分析的思考。

居士个人的理解,技术能力更多的是偏向于一个一个的技术点,而工程能力更多就是在一个团队中将项目做好的能力。很多算法出身的工程能力不行,那么他做的单纯的一个模型是无法应用到实际生产中的,而工程就是指把理论落地实际生产的过程。那么工程包含了什么?它包括了系统架构设计和模块设计、数据流搭建和平台搭建、调包或算法开发、分布式、上线以及各种落地的代码开发。报表和监控,其实本质也是做数据流,边缘性的可能要做些后台和前端的开发。

然后数据分析能力是什么?数据分析(不是纯粹的数据分析)除了分析方法论和套路外,是一个很综合性、相对偏软一点的能力,比如说你通过分析发现了我们的系统有哪些可以优化的点,通过分析发现了问题的原因是什么,这些都是分析能力。

0x04 思考二

针对前面的内容,和 Cathy 讨论后,对整个思路做了新的梳理,大家直接看图就好,居士也认为这样描述可能更为合理。

0x05 思考三

这里再补充一个模型复现的能力,比如你看了一篇论文,发现这个模型可能很适合自己的业务场景,那么你是否能力将论文里面的模型快速用公司现有的平台和工具来复现?

居士认为,这一个是一个非常重要的能力,但是没有想好具体该怎样划分。

0xFF 总结

本篇文章最初是参考 Milter 在简书发表的 《算法工程师究竟需要哪些工程能力》,随后和 Japson 进行了一些讨论。最后再被 Cathy 挑出众多思路和表述的问题后才完成。

那么,读到最后的你,认为算法工程师应该具备哪些工程能力呢?欢迎留言评论。

更多内容:

数据挖掘面试题之:生成模型 VS 判别模型

特征工程系列:特征筛选的原理与实现(上)

特征工程系列:特征筛选的原理与实现(下)

数据团队思考:数据驱动业务,比技术更重要的是思维的转变

数据分析师做成了提数工程师,该如何破局?

警惕,导致数据仓库失败的六大原因!你占了几条?

算法工程师应该具备哪些工程能力相关推荐

  1. python算法工程师需要学什么_一个优秀的算法工程师必须具备哪些素质?

    导言 怎样成为一名优秀的算法工程师?这是很多从事人工智能学术研究和产品研发的同学都关心的一个问题.面对市场对人才的大量需求与供给的严重不足,以及高薪水的诱惑,越来越多的人开始学习这个方向的技术,或者打 ...

  2. C++算法工程师需要具备开发能力

    算法工程师,顾名思义,如果连算法都不过关,就和低配版后端工程师没什么区别了.虽然工程师是根本,然后才是算法,必备的基础开发技能不能少,但与工程岗位不同,也要有对算法理论的一些比较高的理解.那么今天就来 ...

  3. 金融风控实战——风控领域涉及到的算法和风控算法工程师需要具备的能力

    一些简单的介绍 市面上算法相关的岗位,从大范围上分为两大类 1.研究驱动的算法工程师,这类算法工程师的门槛很高,分布在大型公司的研究院.创新实验室等部门,这类算法工程师主要是以研究新的算法或者是更好的 ...

  4. 合格的算法工程师需要具备什么技能

    本篇来自我在知乎上的一个回答:https://www.zhihu.com/question/448311745/answer/1784541274 想要了解算法工程师需要掌握的技能,我觉得最直接有效的 ...

  5. 算法工程师怎样提升业务理解能力?

    文 | 桔了个仔@知乎 本文已获作者授权,禁止二次转载 我刚转做金融风控时,觉得自己写代码多年了,对金融风控的业务不上心,公司让我做什么我就用自认为及其优雅的编码方式解决,但对为什么要做这个事,做了对 ...

  6. 应用交付工程师应该具备的关键能力(售前篇)

    上次提到应用交付工程师售后时应该具备的关键能力,这次来谈谈应用交付工程师的售前能力. 相对于售后而言,售前工程师除了需要具备丰富的售后经验外,还需要强大的沟通能力.可能有些朋友会问,为什么售前工程师还 ...

  7. 安全运维工程师需要具备哪些综合能力?

    运维工程师需要掌握基础的服务,如SSH服务.NFS网络文件系统.DHCP/DNS.数据同步服务等;常用数据库;常用服务,如JavaWeb服务Tomcat.Jboss.Weblogic等;系统监控与报警 ...

  8. 做软件工程师需要具备怎样的能力和素质

    软件工程师主要进行软件前期的项目需求的分析,然后对项目进行风险评估并试图解决这些风险,然后开始进行软件的开发,后期对软件的进度做相关的评估. 一个比较贴切的比喻:把一款软件比做一座大桥,那么软件工程师 ...

  9. 应用交付工程师应该具备的关键能力(售后篇)

    应用交付工程师,这个概念这几年是越来越红火, 但是如何才能算得上一个合格的应用交付工程师呢? 应用交付售后工程师: 在应用交付产品出现之前,用户内部通常是网络管理员和应用维护人员的对立,例如:     ...

最新文章

  1. KVM虚拟化存储管理
  2. sequel mysql8.0_sequel pro 无法链接mysql8.0以上高版本
  3. 程序员初试和复试_程序员因肌肉发达面试被质疑能力,网友:这做程序员有啥关系呢?...
  4. IIS8托管WCF服务
  5. 学习React的一知半解
  6. JS 基础知识点及常考面试题(二)
  7. 区块链学习笔记:D03 区块链在各行业领域的应用(一)
  8. PHP导出成word文档
  9. eclipse git插件简单使用
  10. 关于LAMP配置Let’s Encrypt SSL证书
  11. JAVA地址连接状态检测工具类
  12. 2022淘宝618超级喵运会怎么玩?2022淘宝618喵运会玩法技巧
  13. 三国杀全武将台词大全(标准+神话再临+一将成名12345+SP+国战+其他+皮肤)
  14. android垂直进度条控件,Android常用控件之ProgressBar,水平进度条
  15. SLT2021: CONVERSATIONAL END-TO-END TTS FOR VOICE AGENTS
  16. Elasticsearch提高查询性能的方法
  17. tensorrt,mmclas中的onnx转tensorrt
  18. 我所经历的Android面试|掘金技术征文
  19. 纯css制作遮罩层特效
  20. Mysql 计算两个时间差函数

热门文章

  1. springboot实现反向代理
  2. 虚拟DOM 之 Snabbdom 一、基本介绍
  3. 机器学习——长短期记忆(LSTM)
  4. 依概率收敛和依分布收敛(附一道例题)
  5. 旋转矩阵和变换矩阵的概念和区别
  6. mac,macbook 连接蓝牙耳机播放音乐断断续续
  7. 字符串根据字节长度进行截取并展示选中效果——js字符串获取字节长度
  8. windows系统下更新nodejs
  9. MySQL基础之多表查询
  10. 【Lua】Lua基础语法