作为一个一直学纯数学的学生,被迫转为硕士后,不得不思考今后的人生:换个学校继续读博,不想再浪费时间;直接去当高中老师,又觉得还没实现自己的价值。因为一直对计算机比较感兴趣,最终决定换个方向从头开始,希望在接受社会的毒打之后,能证明自己的价值。这篇文章记录职业生涯一路走来的点点滴滴,持续更新中。

2019 年 1 月
自学

半年宅在寝室,搭起知识框架

2019 年 8 月
校招

一次次失败后,拿到网易的意向书

2020 年 1 月
网易 · 广州

试用期、探索期、成长期、迷茫期

2023 年 5 月
蚂蚁 · 杭州

先做离线数据,再转回实时数据

2024 年 5 月
字节 · 北京

数据 BP,然后做从 0 到 1 的数据产品

2026 年 6 月
阿里

至今

自学:2019 年 1 月 ~ 7 月

从得知转硕的结果到毕业,只有一年时间。大一学过的一点 C 语言等计算机基础早已忘光,但从高中起就一直自学的我相信:

只要明确了整个知识框架,具体细节对一个学数学的人来说不是问题。

于是在网上找各种资料,开始了半年宅在寝室的学习之旅:

分类

方向

学习内容

备注

基础

编程语言

Python 教程(廖雪峰)

人生苦短,我用 Python

基础

数据结构与算法

数据结构与算法:Python 语言描述

用 Python 讲解

基础

数据结构与算法

Algorithms Illuminated

斯坦福经典课程

基础

操作系统

鸟哥的 Linux 私房菜

通俗易懂

基础

计算机网络

计算机网络(第 7 版),谢希仁

全面系统

应用

前端

HTML / CSS / JavaScript

内容 / 样式 / 交互

应用

后端

Flask Web 开发实战

从学习到实战

应用

数据库

MySQL 教程(廖雪峰)

SQL Is All Your Need

数据

数据采集

Python3 网络爬虫开发实战

知识的综合运用

数据

数据分析

Python for Data Analysis

用 Python 处理数据

数据

大数据

大数据技术原理与应用

大数据技术简介

AI

机器学习

Hands-On Machine Learning with Scikit-Learn & TensorFlow

一个完整的机器学习项目

AI

深度学习

神经网络与深度学习

理论要扎实

AI

深度学习

Python 深度学习

上手实践

AI

深度学习

深度学习理论与实战:提高篇

跟上 AI 的发展

AI

自然语言处理

统计自然语言处理

「这本书我真的看过吗?」

AI

知识图谱

Things, Not Strings

理解核心概念

工具

环境与工具

oh my zsh、VS Code、git、conda、docker

工欲善其事,必先利其器

面试

备战求职

剑指 Offer

看明白了,不代表会做

面试

备战求职

百面机器学习

看了,但也没完全看

面试

备战求职

美团机器学习实践


半年过去,收获了一个大概的知识框架、一份毫无含金量的简历,以及一个胖成球的自己。

工具环境的配置,后来整理成了 个人开发环境配置。

校招:2019 年 8 月 ~ 10 月

专业不对口,没有实习经历,也不喜欢背八股文和刷算法题,一次次失败之后,一度陷入了自我怀疑:

  • 提前批:不用笔试,凭教育背景还能直接参加面试。

    • iHandy(后端):第一次面试,10 分钟就把我请了出去;

    • 美团(算法):把面试变成了面试官教我怎么面试;

    • 阿里(算法):总算撑过了完整的 1 小时,但技术细节没说清楚。

  • 正式批:前期笔试都过不了,积累了经验后才有了一些面试机会。

    • 百度(算法):算法题完全不会,被质疑文凭了;

    • 字节(后端):两次机会都没抓住;

    • 华为(算法):面试官帮我进了下一轮。

到 10 月底,我还没拿到任何一家公司的 offer。好在老天最后给我开了一扇窗:网易把我调剂到了测试开发岗位,面试意外地顺利,很快就拿到了意向书,悬着的心终于放下了。感谢网易游戏给了我这样一个机会,我来到广州,开始了职业生涯。

网易:2020 年 1 月 ~ 2023 年 5 月

试用期:2020 年 1 月 ~ 5 月

学数学给人的第一印象是应该做算法,所以试用期交给我的任务是实现一个动作捕捉数据的自动修复算法:

当时正值疫情居家办公,组里之前也没做过类似的工作。接到任务后,我还是学生思维:独自查资料熟悉背景,看论文比较方案,却很少和需求方交流。对深度学习的方法也没有经验,最终只复现了一个矩阵补全算法,写了个插件把整个流程跑通,勉强通过了试用期。

其实这个插件最后也没用起来,因为动捕软件更新后自带了自动修复数据的功能。后来发现网易 AI Lab 也做了相应的工作,看来还是得让专业的人做专业的事。

探索期:2020 年 5 月 ~ 12 月

接着我被安排去做数据中台项目。部门之前没做过数据相关的工作,对数据中台也没有清晰的概念,只能在一些场景里摸着石头过河:

  • 奖励监控:对比了业界很多异常检测方法后,照着美团外卖订单量预测异常报警模型照猫画虎,调用 Prophet 跑通了一个简单流程。但老板们对进度不太满意,没有继续研究下去。后来才知道,做算法最关键的是做好特征工程,而当时的我忽略了这一点。

  • 支付转化:这算是我做大数据的开端。最开始是从 ELK 上把数据拉到本地,再用 Python 分析;后来接触到公司的大数据组件,成了一名 SQL Boy,做了点数仓建设的工作。这件事最大的成功在于数据挖掘:找到了计费、用户体验等部门之前都没注意到的数据。

  • 性能报表:其实就是个工具人,做了一段时间 API 开发,倒也满足了之前想做后端工程师的想法。数据、算法、后端,都尝试了一遍。

成长期:2021 年 1 月 ~ 2022 年 6 月

之后来了一位总监级别的大佬,新成立了中台部门,招了一批专业的人做专业的事,带来了新的协作和组织方式,我也明确了数据开发的定位。这时的我已经不满足于做 SQL Boy,开始学 Java,用 Flink 做实时开发:

  • 奖励监控:用 Flink 开发了一个动态规则引擎,业务人员可以自由配置告警规则、实时生效。期间不断查阅技术文档、开源代码和优化方案,算是第一次有了自己比较满意的技术实现(见 Flink 规则引擎)。

  • 安全中台:不断引入新技术解决业务问题:引入 Flink SQL 解决数据倾斜,引入 PyFlink 解决算法策略的部署,引入 Flink AI Flow 解决 AI 工程化问题等,围绕 Flink 生态做了一些创新的工作(见 我所了解的 Flink)。

这段时间感觉每天都在学习成长,业务也在不断发展,工作做得很开心,职级也三连跳,算是梦想中的职场生活了吧。

迷茫期:2022 年 7 月 ~ 2023 年 5 月

但好景不长,随着降本增效之风席卷互联网行业,团队的发展方向和我的个人兴趣出现了分歧,我对自己的职业规划产生了迷茫,看不到想做的事情。经过长时间的思考,还是决定再出去看一看,网易生涯就此告一段落:

社招:2023 年 2 月 ~ 5 月

这时的我依然抱着学习的心态,觉得职业生涯还没定型,还可以做任何事。但社招主要看是否匹配,企业已经没有耐心再花时间培养了:

  • 网易雷火:内部机会,不太合适,需要后端经验;

  • 字节:依然是两次机会,第一次离线数仓经验不足,第二次关注的 Flink 技术点不一致;

  • 拼多多:实时场景可能还有些欠缺,算法题也没答上来。

我觉得仅凭几次面试,并不能了解一个人的特点,这也是我开始写文章、记录自己所思所想的原因之一。虽然发现证券、基金这类公司对我这种教育背景不错、又有大厂经历的人比较认可,但我还是想再学点技术。于是完全没给自己留后路,来到了杭州,希望继续在大数据领域深入下去。

蚂蚁:2023 年 5 月 ~ 2024 年 5 月

离线数据:2023 年 5 月 ~ 2024 年 1 月

虽然换了行业和技术,但来到了专门做数据的部门,确实有很多可以学习的地方:分工比较细,每个方向都有较深的沉淀;金融业务对数据要求高,非常注重数据质量和合规;数据体量大,业务场景也足够复杂。但正因为成熟,历史包袱也重,又没有我擅长的实时场景。做了一段时间后发现,自己的工作集中在取数和历史包袱治理上(那恶心的 81 棵指标树),技术上又回到了 SQL Boy,没什么沉淀和价值感,也找不到兴趣点。

好在这边转岗比较方便。我发现每当听到「湖仓一体」,就会本能地感兴趣,于是又回到了实时技术,开始了新一段旅途。

实时数据:2024 年 1 月 ~ 5 月

实时涉及的组件众多,状态计算等特性也和离线有较大差异,但这算是回到了老本行,适应了相应的技术栈后,很快就能上手。同时也有机会用数据湖技术来重塑实时研发范式、实现降本增效,看起来似乎回到了理想的职业发展轨道上?

但对数据研发的职业发展来说,要么更深入底层,做数据平台或引擎开发;要么更贴近上层,用数据驱动业务。而我不是科班出身,又做了多年上层数据应用,更适合把自己定义为一个问题解决者:综合利用数据等技术工具,系统地解决业务问题,不局限于实时或离线。同时,由于一直没有找到价值感(做的东西太碎了),我再次踏上了新的征程,寻找更适合自己发展的机会。

字节:2024 年 5 月 ~ 2026 年 5 月

数据 BP:2024 年 5 月 ~ 11 月

数据技术上没什么变化,但合作模式变了。之前在蚂蚁对接的是 BI,他们一般能给出明确的口径;在字节则是直接对接产品,他们只能从业务视角描述需求。刚开始完全不知道怎么找数、怎么加工、数据对不对,只能全靠老同事带,数据的壁垒不在技术,而在业务。这边离线和实时场景都有,但实时场景很少;而且因为需要实时关联,又有 Flink SQL 回撤的问题(见 Flink SQL 回撤机制与问题),实时一直用 DataStream API 开发,门槛较高,由大团队下另一个数据应用小组负责,我们只能做一些简单的实时数据过滤和同步。

慢慢熟悉业务后,应付需求就比较得心应手了,也有心思去尝试一些新东西:暴力扫描、冗余编码、实时开发效率低,都是我想解决的技术问题。可能也正是因为转正答辩时讲了太多技术上的事,随后我就被调到了数据应用团队,做数据产品和复杂实时开发的支持。

数据产品:2024 年 11 月 ~ 2026 年 5 月

过来之后,我负责了一个从 0 到 1 的数据产品。这个项目打算用低代码平台把后端「干掉」:让数据研发同学写 SQL 模板、编排节点、写代码 UDF,就能实现完整的后端能力(见 SQL2API)。想法很好,但一个人同时干数据和后端,其实两个都干不好:后端的职责是实现业务功能、保证高并发访问,数据的职责是做好数据加工、保证数据质量。在端到端支持数据产品的过程中,我发现自己的工作集中在接口开发上,和前端争论接口定义,和产品争论砍掉哪些功能,数据建设其实很薄。虽然自己可以负责这个方向,但整体还是不太喜欢。

另一方面,实时开发是单独的一块。本来想把老旧的 DataStream API 开发模式替换成 SQL,但在历史逻辑上重构还是太难了,最终只是理解了底层实时计算的机制:实时开发的一致性保证非常关键。这件事并没有真正落地。其实最近已经有了明确的想法,可惜引擎的支持力度还不够,也怪自己故事讲得不太好。

这一次实在不想再做后端业务接口开发了,于是直接 GAP 了一小段时间,买点时间整理整理、学习学习、休息休息(虽然我的时间还是有点小贵)。

阿里:2026 年 6 月 18 日 ~ 至今

其实牛马的生活都差不多,只是我还是有点理想化,导致 OKR 总是对不太齐。这一次,希望已经度过了工作的体验期,加油工作吧。

未完待续

机缘巧合下进入了大数据领域,并逐渐建立起了自己的知识体系,看起来已经习惯了打工人的生活。但其实我一直没变,还是像当初学数学一样,面对一个问题,喜欢不断寻找更好的解法。然而在工作中,更需要立体的思考,形成一整套解决方案。怎样把爱好、特长和工作结合起来,发挥出自己的全部潜能,是一个需要我持续探索的问题。

全文评论

0

正在加载评论…