Author:周远
From:机器之心
整理自知乎
这是一份写给公司算法组同事们的技术路线图,其目的主要是为大家在技术路线的成长方面提供一些方向指引,配套一些自我考核项,可以带着实践进行学习,加深理解和掌握。内容上有一定的通用性,所以也分享到知乎上。欢迎大家给出建议,如有错误纰漏,还望不吝指正:)工程师能力层级概览对于不同级别的算法工程师技能要求,我们大致可以分成以下几个层级:初级:可以在一些指导和协助下独立完成开发任务。具体到算法方面,需要你对于工具框架,建模技术,业务特性等方面有一定的了解,可以独立实现一些算法项目上的需求。
中级:可以基本独立完成一个项目的开发与交付。在初级工程师的基础上,对于深入了解技术原理的要求会更高,并且能够应对项目中各种复杂多变的挑战,对于已有技术和工具进行改造适配。在整体工程化交付方面,对于代码质量,架构设计,甚至项目管理方面的要求会开始显现。另外从业务出发来评估技术选型和方案也变得尤为重要。
高级:可以独立负责一条产品线的运作。在中级工程师的基础上,需要更广阔的技术视野与开拓创新能力,定义整个产品线的前进方向。解决问题已经不是关键,更重要的是提出和定义问题,能够打造出在业界具有领先性和差异性的产品,为公司创造更大的价值。
事实上对于不同层级的工程师,非技术部分的要求都有一定占比。本文主要聚焦在技术路线图上,对于其他方面的学习进阶路线不会做覆盖。阅读建议以下内容分工程基础,算法基础,算法工程交叉,工程深入方向,算法深入方向几个部分,在各个部分内部会进一步区分一些主题。在各个主题内部,也是有深入程度的区别的,不过限于篇幅没有进行详细的说明。建议学习路线可以先把两个基础部分与工作中较为相关的内容做一个整体基础的夯实,然后可以在后续交叉和深入方向的主题中选择感兴趣的进行深入了解和学习,过程中发现基础部分欠缺的,可以再回到基础部分查漏补缺,迭代前行。工程基础编程语言PythonPython是算法工程师日常工作中最常用的语言,应该作为必须掌握的一门技术。大致的学习路线如下:学习掌握Python的基本语法,可以通过各类入门教程来看,个人推荐《LearnPythontheHardWay》。
自我考核:能够读懂大多数的内部项目及一些开源项目代码的基本模块,例如pandas,sklearn等。
学习Python的编程风格,建议学习观远内部的Python代码规范。
自我考核:编写的代码符合编码规范,能够通过各类lint检查。
Python进阶,这方面有一本非常著名的书《FluentPython》,深入介绍了Python内部的很多工作原理,读完之后对于各类疑难问题的理解排查,以及语言高级特性的应用方面会很有帮助。另外动态语言元编程这块,《Ruby元编程》也是一本非常值得推荐的书。
自我考核:能够读懂一些复杂的Python项目,例如sqlalchemy中就大量使用了元编程技巧。在实际工程项目中,能够找到一些应用高级技巧的点进行实践,例如基于Cython的性能优化等。
领域应用,Python的应用相当广泛,在各个领域深入下去都有很多可以学习的内容,比如Web开发,爬虫,运维工具,数据处理,机器学习等。这块主要就看大家各自的兴趣来做自由选择了,个人推荐熟悉了解一下Pythonweb开发,测试开发相关的内容,开拓视野。
自我考核:以Web开发和测试开发为例,尝试写一个简单的modelserving