曲线救国

掐指一算,笔者从事机器学习应用的工作已经4年有余,如果加上之前的数据分析工作经历,共5年零5个月。若是再加上数据分析工作之前的准备时间,总共是6年2个月。毕业后的工作大致总结如下,

  • 1年3个月测试开发,磨炼开发习惯和工程能力,机器学习兴趣觉醒;
  • 9个月业余时间学习机器学习相关内容,主要参考网上MOOC;主要工作仍然是测试开发;
  • 1年3个月数据分析工作,开始大规模接触工业级数据,抓住一切机会将机器学习技术应用到工作中;
  • 4年1个月数据挖掘工作,主要从事游戏方面的机器学习应用。

笔者也算是演了一场机器学习的曲线救国戏码。

感恩良师,受用终身

在这个过程中,得到了两位良师的重要指导,受用终身。

首先是笔者在鹅厂的第二个导师Erisen,他教授笔者最有意义的技能是工程的规范化和严谨性。记得当时笔者的工作是后台协议测试以及持续集成相关工具的开发。Erisen对代码规范极其严格,经常review笔者的代码并且要求笔者返工。当时笔者刚离开校园,从来没有接收过如此严格的编码要求,一开始很反感。但是,后来发现代码规范最大的好处是,阅读Erisen的代码非常亲切,因为我们是用的一种规范。在阅读Erisen代码的过程中,笔者可以学到很多平时通过语言沟通无法学到的技巧。这个习惯笔者一直保持到现在,虽然笔者周围的同事换了一波又一波,但是我的代码依然是按照某种规范来执行,并且力求我交接出去的代码,可读性要好,这样既方便了别人,也方便了自己。因为交接工作的同学如果可以轻易通过阅读代码理解交接工作,就不会来打扰笔者,这是一个双赢的过程。同时,良好的代码规范可以很大程度减少项目维护成本。工作一段时间的同学应该有过这种经历–三个月写的代码,现在怎么读不懂了,这是我写的吗?如果代码有良好的注释,并且始终按照一种风格来编写,可以大大降低这类场景的发生概率。所以,感恩Erisen对笔者的指导。

Dragon是第二个给笔者提供重要指导的导师。他是笔者在做数据分析工作时的领导。Dragon告诉笔者成长规划需要从三个层次来规划,

  1. 领域知识 这部分工作仅与当前工作有关,当换工作后该内容会被立刻替代。比如当前从事广告推荐工作,如果工作换到游戏数据挖掘,那么广告相关的领域知识基本没有什么作用。这类技能类似使用王者荣耀中不同职业的英雄,坦克和刺客的玩法截然不同。
  2. 专业技能 它是安身立命的根本,你在职场上无法轻易替代的核心价值。对于笔者所在的机器学习工业应用领域,它就是工程能力和算法能力。这类技能就类似打MMORPG,战力可以积累,战力高则职场竞争力强。
  3. 通用能力 这类技能基本可以适用绝大部分工作。比如沟通,协作,执行力,知识沉淀,技能传承等。虽然它很通用,但是能够掌握却不容易。因为与个人性格,成长环境有关,有些人可能一辈子就学不会心平气和的沟通。

如果要做好当前工作,上面三个层次的能力都需要提升。笔者基于上面三个层次,结合笔者这些年来的工作经验,总结出游戏机器学习应用工程师技能树,希望对读者有借鉴意义。

写在最后

工作中偶尔被同事调侃成“非科班出生”,所以本次博客笔者也自嘲一下,:)。起初笔者比较在意,不过随着阅历的丰富,笔者慢慢释然。所谓科班出身,只不过在学校里面多学了一些相关内容。我们这行就像逆水行舟,不进则退。需要活到老学到老。英雄不问出处,在自己的工作岗位上,发挥自己的价值,这才对得起公司和自己。

满招损,谦得益。一定要始终保持一个虚心学习的心,切忌狂妄自大,刚愎自用。机器学习领域如此博大精深,一个人又能掌握其中的多少内容,精通多个子领域更是难上加难。关羽是历史上非常了不起的武将,但是最大的性格缺陷就是刚愎自用,最后败走麦城。虽然别人都戏称笔者是(关)二哥,但是笔者始终将这个例子作为反面教材铭记于心。

笔者始终对机器学习中的各种算法保持一颗感恩和敬畏的心。因为这些算法都是前人经过不懈努力思考得出,并且免费分享到全世界。这样笔者和众多机器学习从业人员才能利用这些算法换取薪水,给我们的家人换来面包和牛奶。所以,笔者很珍惜当前来之不易的工作,希望能够在此领域越走越远,成为独当一面的从业人员。