作为一个一直学纯数学的学生,被迫转为硕士后,不得不思考今后的人生:换个学校继续读博,不想再浪费时间;直接去当高中老师,又觉得还没实现自己的价值。因为一直对计算机比较感兴趣,最终决定换个方向从头开始,希望在接受社会的毒打之后,能证明自己的价值。这篇文章记录职业生涯一路走来的点点滴滴,持续更新中。
半年宅在寝室,搭起知识框架
一次次失败后,拿到网易的意向书
试用期、探索期、成长期、迷茫期
先做离线数据,再转回实时数据
数据 BP,然后做从 0 到 1 的数据产品
至今
自学:2019 年 1 月 ~ 7 月
从得知转硕的结果到毕业,只有一年时间。大一学过的一点 C 语言等计算机基础早已忘光,但从高中起就一直自学的我相信:
只要明确了整个知识框架,具体细节对一个学数学的人来说不是问题。
于是在网上找各种资料,开始了半年宅在寝室的学习之旅:
分类 | 方向 | 学习内容 | 备注 |
|---|---|---|---|
基础 | 编程语言 | 人生苦短,我用 Python | |
基础 | 数据结构与算法 | 数据结构与算法:Python 语言描述 | 用 Python 讲解 |
基础 | 数据结构与算法 | 斯坦福经典课程 | |
基础 | 操作系统 | 通俗易懂 | |
基础 | 计算机网络 | 全面系统 | |
应用 | 前端 | 内容 / 样式 / 交互 | |
应用 | 后端 | 从学习到实战 | |
应用 | 数据库 | SQL Is All Your Need | |
数据 | 数据采集 | 知识的综合运用 | |
数据 | 数据分析 | 用 Python 处理数据 | |
数据 | 大数据 | 大数据技术简介 | |
AI | 机器学习 | 一个完整的机器学习项目 | |
AI | 深度学习 | 理论要扎实 | |
AI | 深度学习 | 上手实践 | |
AI | 深度学习 | 深度学习理论与实战:提高篇 | 跟上 AI 的发展 |
AI | 自然语言处理 | 「这本书我真的看过吗?」 | |
AI | 知识图谱 | Things, Not Strings | 理解核心概念 |
工具 | 环境与工具 | oh my zsh、VS Code、git、conda、docker | 工欲善其事,必先利其器 |
面试 | 备战求职 | 看明白了,不代表会做 | |
面试 | 备战求职 | 看了,但也没完全看 | |
面试 | 备战求职 |
半年过去,收获了一个大概的知识框架、一份毫无含金量的简历,以及一个胖成球的自己。
工具环境的配置,后来整理成了 个人开发环境配置。
校招: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正在加载评论…