现在的位置: 首页 > 编程技术 > 算法学习 > 正文

算法工程师能力模型

2017年10月23日 算法学习 ⁄ 共 2344字 ⁄ 字号 算法工程师能力模型已关闭评论 ⁄ 阅读 627 次

一、能力模型

大类别 小项 必需技能 可选技能
工程能力 语言
  • Java
  • Scala
  • Shell
  • Awk
  • SQL
  • C/C++
  • Python
  • Sed
分布式平台相关
  • Hive
  • Spark
  • Hadoop
  • Hbase
代码管理
  • Git
格式
  • ProtoBuf
  • Thrift接口部分
  • Xml
  • Json
  • Base64
KV存储
  • Tair
  • MySql
  • Redis
网络
  • Http
编译打包工具
  • Maven
  • gdb/g++
  • Rpm
RPC框架
  • MTThrift
程序设计
  • 常用容器类
  • 正则表达式
  • 多线程
  • 设计模式
调度
  • Crontab
  • Cantor
准实时计算
  • Storm
  • Spark Streaming
算法能力 模型和算法
  • LR
  • GBDT
  • FM
  • SVM
  • 其它常用模型和算法
  • DNN
优化问题求解相关
  • Lagrange Multiplier

  • KKT条件

  • BGD
  • SGD
  • BFGS
  • ADMM
  • 其它方法
数据能力 特征设计
  • 能够设计与解决业务问题所需的特征
  • 能够统计特征的分布
  • 理解特征的离散化、稀疏化
数据采集
  • 能够抽象出数据采集需求
  • 能够与后台、前端RD交流,描述清楚数据采集的需求,推动落地
  • 能够检验数据采集的质量
特征开发
  • 会使用ETL平台
  • 能设计Hive表
  • 能将特征设计方案落地为ETL、Spark Job、MR Job
  • 能开发UDF/UDAF/UDTF/Transform脚本辅助ETL开发
指标统计
  • 能设计业务评价指标
  • 会使用自助查询平台
  • 能完成指标统计的SQL
  • 能将指标统计做成自动报表发送
业务支撑能力 业务分析
  • 明白基本的业务逻辑
  • 能对业务进行数据分析,反映出业务状态
  • 用数据说话:用业务指标阐释观点或说明问题
  • 能找到业务中可用算法进行改进或创新的地方
问题抽象
  • 能对需用算法解决的问题进行抽象,洞察实质
  • 能发掘相似业务问题的共性
解决方案
  • 能对抽象出的业务问题进行提出解决方案
  • 能将解决方案细化为数据、算法、工程这几个部分
  • 能针对每个部分制定更加细致和明确的子方案
执行力
  • 能做好有效沟通,确保方案正确执行
  • 能承担解决方案对应的开发任务,保证进度正常
  • 能定期review进程,防止开发出现偏差

二、能力培养计划

大项 小项 目前技能 半年后具备技能 一年后具备技能 三年后具备技能
工程能力 语言
  • Java基础用法
  • Scala 能够参考官方spark代码进行编程
  • Awk掌握了基本常用功能,还有很多功能待学习
  • SQL接触,但一般为hive
  • 会写简单的Shell执行脚本
  • 能够深入理解java 底层原理
  • 能够独立编写scala代码
  • awk功能强多,要不断学习,总结
  • 能够独立编写复杂Shell脚本

 

  • java编程能够独立查找并解决bug
  • scala编程能够独立定位并解决bug
  • 熟练掌握awk功能
  • 初步会用sed
  • 会写简单的python脚本,python版算法
  • 编写高优的java代码
  • 编写高邮的scala代码
  • Awk,Sed熟练使用
  • 熟练掌握Python
分布式平台相关
  • Hive能解决基本的数据提取与存储
  • Spark sql基本的语法
  • Spark MLLib算法基本会用
  • Hadoop

 

  • 编写优化的Hive
  • 编写优化的Spark sql
  • 对比Hive,Spark sql之间的优劣不同
  • Spark MLLib算法掌握底层原理
  • 会写 MapReduce job
  • 了解底层Hadoop原理,能调试代码
  • Spark MLLib算法优化
  • Spark MLLib不同算法使用场景

 

  • 最好能够独立实现算法
代码管理
  • Git常用功能基本熟悉
  • 开通自己的Git,并维护代码
格式
  • 熟悉Xml格式
  • 了解Json

 

 

  • 熟练使用Json
  • 了解ProtoBuf
  • 了解Thrift接口
  • 了解Base64

 

  • 熟悉ProtoBuf
  • 熟悉Thrift接口
  • 熟悉Base64

 

了解不同格式的使用场景,并熟练应用
KV存储
  • 学习Tair
  • 能够熟练使用Tair
编译打包工具
  • 能够用Maven管理java、spark代码
  • 熟悉Maven原理
  • 熟练应用Maven管理项目
RPC框架
  • 学习MTThrift原理
  • 能够熟练应用MTThrift
程序设计
  • 熟悉常用容器类,及使用场景
  • 学习java正则表达式
  • 学习多线程原理
  • 了解锁原理
  • 能够进行多线程开发
调度
  • 了解Crontab
  • 熟练使用Cantor ETL调度
  • 能够使用Cantor进行代码调度
准实时计算
  • 学习Storm
  • 学习Spark Streaming
  • 能够根据业务场景应用实时计算框架
算法能力 模型和算法
  • 熟悉LR原理及spark代码
  • 熟悉SVM原理,研究生应用过
  • 学习GBDT原理,及源码

 

  • 算法需不断进行学习中
  • 能够分析不同算法优劣,适用场景
优化问题求解相关
  • BFGS
  • KKT条件,有些遗忘
  • 温习BGD、KKT条件等优化算法
  • 了解Lagrange Multiplier
  • 了解ADMM
数据能力 特征设计
  • 理解特征的离散化、稀疏化
  • 能够设计与解决业务问题所需的特征
  • 能够统计特征的分布
数据采集
  • 能够抽象出数据采集需求
  • 能够与后台、前端RD交流,描述清楚数据采集的需求,推动落地

  •  能够检验数据采集的质量
特征开发
  • 会使用ETL平台
  • 能设计Hive表
  • 基本能将特征设计方案落地为ETL、Spark Job、MR Job
  • 基本能开发UDF/UDAF/UDTF/Transform脚本辅助ETL开发
  • 熟练编写ETL、Spark Job、MR Job等进行特征提取与清洗
  • 熟练编写UDF/UDAF/UDTF/Transform脚本等辅助ETL开发
指标统计
  • 会使用自助查询平台
  • 能完成指标统计的SQL
  • 能将指标统计做成自动报表发送
  • 能设计业务评价指标
业务支撑能力 业务分析
  • 明白基本的业务逻辑
  • 能对业务进行数据分析,反映出业务状态
  • 能找到业务中可用算法进行改进或创新的地方
  • 用数据说话:用业务指标阐释观点或说明问题
问题抽象
  •  能对需用算法解决的问题进行抽象,洞察实质

  •  能发掘相似业务问题的共性
 解决方案
  •  能对抽象出的业务问题进行提出解决方案
  • 能将解决方案细化为数据、算法、工程这几个部分
  •  能针对每个部分制定更加细致和明确的子方案

执行力
  • 能做好有效沟通,确保方案正确执行
  • 能定期review进程,防止开发出现偏差
  • 能承担解决方案对应的开发任务,保证进度正常

抱歉!评论已关闭.