大家都知道互联网技术方向的职业发展一般有三条道路:

第一条是一直做技术成为技术专家;
第二条是转管理方向;
第三条是做到一定程度转行到周边方向,如产品、项目经理等。

在国内,多少对年纪大了的技术人员有一定的偏见,认为年纪大了干不动了,所以大家都愿意往管理方向发展。

其实,在国外做技术是非常自信和自豪的事情,听说在 Google 技术人员的地位非常高,只有技术不行的人才考虑转管理 。国外大龄程序员是非常多的,也是非常受尊敬的, 比如 Java、C# 之父都是一直做技术的。

一、技术路线

推荐算法工程师的技术路线一般可以分为四大类,一类是偏工程实现,一类是偏算法研究,一类是综合类 (工作涉及到算法开发及对应的工程实现),一类是偏业务。

不管是哪一类都需要了解自己需要学习什么技术,需要具备什么样的技能和知识储备。下面我们分别说说这四类算法工程师的职业成长之路。

(1) 偏工程实现类

偏工程实现类的推荐算法工程师,需要有较好的编程能力,热爱编程。一般的工作是实现各类推荐算法框架,开发推荐周边模块 (如 AB 测试等),构建好用的推荐平台,让推荐算法可以更快更好的落地到业务中。

这一块做的好是非常容易成为大牛的,比如大家熟悉的贾扬清,大名鼎鼎的 Caffe 框架的作者,也是 Tensorflow 的核心开发者。他原来是 facebook 的 AI 架构总监,最近被阿里挖了过来,直接给的是 P11级别,title是VP(高级副总裁),当然要达到贾扬清的段位是非常非常难的。

偏工程实现类的需要有扎实的计算机基础,熟悉数据结构和算法,熟悉计算机体系结构,熟练掌握设计模式,有很好的面向对象和抽象思维能力。

除了熟悉推荐系统的底层代码实现,还需要对机器学习算法、最优化理论、数值计算等非常熟悉,能够用高效的代码来实现这些算法。

(2) 偏算法研究类

偏算法研究类的推荐算法工程师主要关注的是怎么结合公司业务、产品特性构、已有的数据建一系列好的算法,希望通过这些算法来大大提升转化 (可能具体算法的高效工程实现交给工程师)。

这类职位一般要求有研究背景,希望是博士,需要具备非常好的理论基础。一般是大公司有专门从事算法研究开发的职位,或者是研究院类似的单位,小公司一般不会招聘专门搞算法研究的。

个人觉得在工业界算法不是最重要的,关键是怎么将算法跟产品形态很好的结合起来,快速上线,整个业务要形成闭环,具备迭代优化的能力。

Google 的辛格博士就是喜欢用简单的算法来搞定问题的典型代表。

偏算法研究类需要有很好的数学基础,需要对高等数学、线性代数、最优化、概率统计、几何、图论等方向非常熟悉。同时需要在机器学习领域有深刻的领悟,能够利用数学工具设计高效易用的机器学习算法,但是不一定需要编程能力特别强。

(3) 综合类

创业公司、小公司、或者刚刚成立推荐算法团队的公司,前期没资源也不愿意在推荐系统上一下投入非常多的人力,很多推荐算法工程师是既需要思考算法,也要做相关的工程,是上面两类的综合体。虽然学习接触的东西会更多,但是精力也会更分散。

(4) 偏业务类

随着大数据、云计算、AI 的发展,越来越多的云计算大厂或者 AI 创业公司将 AI 能力 (包括推荐能力) 封装成 SAAS 服务提供给第三方公司。这种情况一定是未来趋势,未来很多创业公司不会再去招聘推荐算法工程师来自己开发推荐业务了,可能就是直接购买别人的推荐 SAAS 服务。

这个时候就需要一个懂推荐算法业务的专家,结合公司具体业务情况,选择最合适的推荐算法提供商及对应的推荐 SAAS 服务。

这类偏业务的推荐算法工程师不需要开发推荐算法,也不需要工程实现,但是需要对推荐算法相关知识熟悉,了解周边生态,知道什么算法可以用在什么推荐产品形态上,每种算法的优劣,知道在合适的时间节点引入合适的算法。这类职位其实就是一个推荐算法商业策略师。

二、管理路线

如果做了很长时间推荐算法想转管理岗位,需要提前做好准备,包括心理准备和知识储备。

人的时间是有限的, 转管理了就一定没有那么多时间钻研技术了。

但是技术管理人员一定要熟悉了解技术,要有很好的技术视野,能够把握未来的技术发展方向,在合适的时机做合适的决策,引入合适的新技术,这种能力也是要建立在一定的技术积累和学习上的, 所以怎么做好技术学习和团队管理的平衡非常重要。

做技术管理需要多花时间学习业务知识和管理技能,学会有效沟通,需要站在老板的角度思考问题,需要引领团队更好地支撑公司的商业目标。同时也需要有很好的产品意识, 能够深刻洞察用户的需求,做好的产品来为用户和公司创造价值。

管理方向再往上走可以是技术 VP,CTO 等更高的级别,当然这类更高的级别对人在各个方面的要求会更高。如果自己有想法,并且喜欢挑战的话,等你准备充分了,还可以创业。

三、转行换方向

推荐算法工程师如果想转其他方向,可选择的范围很多,比如算法产品经理、项目经理、数据分析等。在什么时间换行、换什么行业需要结合个人的兴趣和现实情况决定。但是,不赞同在一个行业做了很长时间再换行,毕竟人的工作年限有限的。

一般职业选择是很谨慎的,需要事先想清楚,在刚开始做的一二年内也会知道自己喜不喜欢这个行业,在这个方向上是否有一定的优势和天赋,如果不合适就要尽快换行。