原址

● 每周一言

为人处世,分寸很重要。

导语

作为码农界的芸芸众生,我们几乎每天都会接触到各式各样的工程项目。一方面,一些工程项目往往具有相似的实现;另一方面,这些工程又存在一个二次开发的问题。为了提高开发效率,避免重复造轮子,工程级别的代码要求通常比较高。而作为一名算法从业者,我想在这里谈一谈一个好的算法工程应该具备哪几点要素。

抛砖引玉

项目经验不同、语言熟练程度不同、算法实现能力不同的人,对于一段相同功能的代码实现也会有所不同。毛爷爷说过,凡事就怕认真二字。因此这里我们不妨抛开这些短时间难以改变的差异,谈一谈只需要通过认真就能做到的几点,而这几点也正是一个好的算法工程所应具备的要素。

其一,功能模块代码层次分明。 
实现一个数据挖掘的算法工程,从底层数据输入到顶层结果输出,至少需要这四步:数据预处理、特征提取、模型训练、模型预测。这四步就是四个功能模块,而每个功能模块之间的代码只有层次分明才能做到在二次开发的时候,不牵一发而动全身。

其二,抽象功能与具体功能分开实现。 
抽象和具体的区别,面向对象里面已经被说透了。在算法工程中,比如数据预处理模块的输入,有可能是日志、数据库、或者集群数据,如果对每一种数据源的预处理都单独来写,后期代码的修改与扩展将会变得混乱且容易出错。因此,需要剥离抽象功能与具体功能,这里的抽象功能是指结构化的数据字段接口,而具体功能指的则是对接各种具体数据源的接口实现类。

其三,逻辑实现有较清晰注释。 
最难懂的代码,并不是别人的代码,而是没有注释的代码,甚至包括自己的代码。在算法工程项目中,由于模型需要升级换代,常常需要阅读前人所写代码,自己的代码也有可能留给后人阅读。由于不同人的思维习惯、语法习惯不尽相同,展现出来的代码有可能大相径庭,因此一定要写注释,尤其是逻辑实现部分,注释越清晰越好。

其四,功能模块输入输出可配置化。 
对于算法工程的复用和交接,可配置化算是一个最直接的诉求了。功能模块的输入输出可配置化,意味着趋近零的学习成本,让项目在新的场景下能很快地实现部署和运行。具体而言,输入输出可配置化的参数包括但不限于数据类型、数据位置、比较条件、处理方式等。

一个好的算法工程应该具备哪几点要素?相关推荐

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

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

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

    算法工程师应该具备哪些工程能力 0x00 前言 最近看了 Milter 的<算法工程师究竟需要哪些工程能力>这篇文章,有所感想,因此也写一篇关于算法工程师的技术能力的问题,和大家分享一下居 ...

  3. 一个合格的程序员所具备的素质和修养

    程序员基本素质: 作一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该 具有的素质. 1:团队精神和协作能力 把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基 ...

  4. 北京/上海内推 | 小红书招聘计算机视觉算法/工程实习生

    合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 小红书 组内都是有丰富业务落地经验和大量顶会论文.国际比赛冠军的师兄师姐, ...

  5. 数据驱动的算法工程落地!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 开源数据平台 格物钛 X Datawhale 导读:随着科技浪潮的演进, ...

  6. 我以前用过的一个洗牌算法

    前两天和几个做在线棋牌游戏的朋友聚会,聊到了洗牌算法,正好以前写过一些扑克牌的游戏,中间做了一个洗牌算法,就写了个例子给他们做试验. 基本思路很简单,就是交换法,54张牌排好,随机选择两张牌交换,一般 ...

  7. 【完结】深度学习CV算法工程师从入门到初级面试有多远,大概是25篇文章的距离...

    文/编辑 | 言有三 转载自言有三 一直有同学希望我在公众号写写面试相关的东西,一直没写.我们不会开相关的板块,因为没有标准,容易引起争议,而且可能会加重大家的浮躁和焦虑. 不过关于面试,有三还是有一 ...

  8. 由查找算法工程的类图分析组合模式

    关键字:算法工程的类图,架构分析,设计模式,组合模式 首先,上一个我刚完成的针对上一篇Knowledge_SPA--精研查找算法文中使用的工程,所画的类图,由此来分析它的架构.如下图所示: 我们这个工 ...

  9. 一个业务型算法工程师的技能清单

    我们知道算法工程师分为两类:研究型算法工程师和应用型算法工程师.虽然都叫算法工程师,别看只有2字之差,但其实他们的 有着很大的区别. 研究型算法工程师:研究型算法工程师主要分布再各类大厂的研究院,基本 ...

最新文章

  1. Python 属性__getattribute__
  2. 【渝粤题库】陕西师范大学201341 刑事诉讼法学作业
  3. 修改so_货代、海运操作、船务操作还分不清?船公司SO文件看不懂?
  4. 超酷炫粒子背景插件—particles.js
  5. java string类型的初始化
  6. 判断参数并赋予默认值
  7. CSS 文档架构——便于读取
  8. vue-router页面传值及接收值
  9. # c++万能头文件
  10. Python shapefile转GeoJson的两种方式
  11. python 常微分方程 画向量场_千里积于跬步——流,向量场,和微分方程[转载]...
  12. Intelligent reflecting surface (IRS) aided ISAC
  13. latex 琐粹记录
  14. 本地电脑安装虚拟机-解决USB驱动报错(代码 39)问题
  15. python与数据库实现报表的分组统计_报表排版与布局:数据分组和统计(RDL/页面报表)...
  16. 年薪30W+,数据库工程师凭什么?
  17. 国内开源软件镜像地址
  18. softmax的导数
  19. Epson修复Epson错误代码0xf1
  20. 数据库中主外键概念详细介绍

热门文章

  1. CSS 自定义属性 -- 使用 JS 和不使用 JS
  2. 通过python切换hosts文件
  3. ios 对日期的处理(包括计算昨天时间、明天时间)
  4. WCF Ria Service“操作失败,指定的命名链接在配置中找不到”错误解决方法
  5. SilverLight学习笔记--Silverlight中操作DOM元素
  6. Zookeeper脑图
  7. RISC-V架构指令集开源
  8. Datamill 一个开源的框架
  9. oracle8 as sysdba,Oracle 8i 密码验证
  10. Javascript第二章break和continue、二重循环及for和while的区别第五课