2019-2021总结


2022年已经过去了1/3,距离我的上一篇文章 也又过去了近9.5个月,我才终于开始进行年终总结。实际上这篇文章与其说是年终总结,更接近于我在蚂蚁的工作总结──昨天(2022.04.15)是我在蚂蚁集团研发效能部的lastday,只是这两年在工作之外也经历了很多,因此就一起简短地记录一下吧。

工作

我在蚂蚁的工作,是一段“恶始恶终”的工作: 从起错花名开始(我的花名是“黎荍(qiáo)”,荍这个字在此之前我也不认识),在不尽人意的成果中结束。这里也就只对一些微小的工作做一些总结。往事不可谏,来者犹可追,希望我痛定思痛,痛改前非,非常成功,功在千秋,秋天还能回来看看蚂蚁的老伙计们。

LinkA

LinkA是我从实习时开始接手并独立维护的代码分析系统,直到2020年交接给其他团队。在这期间进行了包括但不限于以下功能点在内的设计和实现: 多语言分析模块、远端执行任务能力、增量代码分析的能力、自动CR机器人、代码认知复杂度…

从结果上来看,这些功能里能实际上线的都取得了还不错的成果:

  • 多语言分析模块对系统整体进行了还算合理的重构,也对各种分析工具的执行流程进行了恰当的抽象,后续各种静态代码分析工具的接入基本能保持在3人日内完成,多语言用户对相关能力也颇有赞词。
  • 远端执行能力很好地保证了系统整体的稳定性和资源池的动态扩缩容,搭配上执行模式热切换的能力,在此能力上线后系统便没出现过不可用故障。

比较遗憾的是,我个人认为实现后略有成就感,也是对系统业务长期发展较重要的的几个功能因为组织架构的调整没能最终上线:

  • 自动CR机器人: 通过Git hook进行任务的触发,结合系统提供的增量分析能力在用户提交的变更代码行上标注对应的分析结果,并给出整体的总结报告。这个功能点将质量检测左移到了代码提交阶段,能提供更精确和心智负担更小的修复指导。好在后续接管代码分析功能的团队也提供了类似的能力。
  • 认知复杂度: 不同于圈复杂度实际度量的复杂度可以认为是“测试用例构造的复杂度”,认知复杂度是基于Sonar提出的CognitiveComplexity.pdf论文实现的,用于度量代码理解难度的指标。这个指标实际上是LinkA向整体性、系统化的代码分析平台演进的一个探索。

总的来说,负责LinkA系统的开发实际上是一段蛮开心的体验,我可以完全自主地决定系统发展方向的设计和探索,相关的需求也有一定的难度; 每天都有不少的工单需要支持,不少人厌恶工单对工作节奏的影响,但工单常常能让我体会到我产出的价值,也偶尔让我对系统方向有新的感悟。

从反面来说,也是因为是个人维护的系统,在进行需求分析和系统设计的时候,很多情况都是由我拍脑袋决定的,这也是我期间一直觉得自己所缺失的较要紧的一个能力。

研发数据建模

2020年5月,公司收购了原来的源伞,代码分析相关的能力也都要归属到他们团队下。

当时老板给我提出了几个选择: 一个是跟着LinkA系统到新团队下面,另一个是跟着他做研发洞察项目,而研发洞察项目下面又有三个主要的方向: 研发洞察平台开发、效能领域的数据挖掘和研发数据建模。

对这几个我的考虑大概如下: 在代码分析方面实际上我并没有积累足够的底层知识,源伞团队有深厚的技术积累,也有其自带的工程平台,若跟着LinkA变更团队,我可能会有较长时间需要进行系统的交替和下线工作(况且我老板对我还不错)。而研发洞察的几个方向,就我当时的理解来看,平台开发并不是研发洞察的核心能力,底层的数据及模型才是。因此我给老板的答复是我希望能留在当前团队,进行数据相关的工作。老板表示数据建模是当前团队较缺少的能力,也愿意给我时间进行学习和落地。就这样我开始接受我负责的第二个项目: 研发数据建模,实际工作职责也从Java开发变成了数据开发。

研发洞察是一个相当年轻的学科,尽管相关话题热度不低,但业界并没有成熟的工程实践,已有的一些度量指标建议和方法论指导很多也缺少可靠的事实支持。尽管到我离职为止,我在这个领域也有了两年的探索和沉淀,但我仍不觉得自己能较清晰地把握住它未来的发展发向和潜在价值,我仍需要更多的思考和沉淀,而这方面的经历也值得我另外写一篇文章进行总结,在本文我也是简单陈列主要工作。

经我设计和实现的模型,支撑过业务进行决策的有人员产出分、人员交付质量分、人员技术影响力模型、应用质量分、效能健康度模型等。其中人员产出分相关的业务背景复杂(研发产出随岗位、时间、流程的变化),为了适应业务情况而进行的模型开发工作量也较大(多段的分箱打分机制、线性规划计分、后分层事后分析校验分数合理性…)。

负责研发洞察项目期间我始终处于自我怀疑的状态,一个是怀疑自己是否有持续在学习,一个是怀疑自己的作品是否有生产出价值。我也在不断地与我负责的第一个项目进行对比,我也始终感觉,相比较于数据分析与数据开发,我还是更希望能进行开发工作。

蚂蚁之后

在2021年年初,其实心底就萌生了跳槽的打算了,但由于当时刚提名晋升,同时也想再给自己一点时间在研发洞察这个领域上探索,因此当时并不急着准备。到了8月份左右,心里越来越意识到自己在当前的工作上并不开心,也越来越有对技术沉淀的焦虑感,便下定了要离职的决心,而实际开始准备就到了2022年春节前不久。

开始面试前我问了自己思考了很多次自己想要的是什么,最终我也没能给自己一个准确的答案,我不清楚自己期待的领域,不清楚自己热情的技术栈,也不知道自己最终想成为什么样的人,这让我有点沮丧。但我知道自己不想继续在国内的互联网大厂卷了,最近两年的工作让我对工作内容之外的许多学科都产生了浓厚的兴趣,我希望有时间能进行更多维度的能力提升。

同时我开始思考我的人生观,我开始觉得,既然最终都是要死亡,人生是无绝对意义的。所谓的意义,其实是每个人自己甘愿“被欺骗”的理由,而我自己拿来欺骗自己的人生意义就是:我想体验更多的东西。这也成为我下家选择的一个判断条件,我期望去能带给我更多体验的公司。

最终,我拿到了字节数据安全团队、PingCAP工程效率团队、微软Azure App Service团队的offer。在后两者中纠结了许久,基于上述的判断条件,我决定接受PingCAP的offer。尽管微软的WLB和业务对我来说很有吸引力,可能涉及的技术栈也是我很欠缺的,但我相信PingCAP能带给我更多的技术热情和“更多不同的体验”。

生活

2019年的9月13日,也是当年的中秋节,我和畅畅在一起了。

这两年多里我们一起走过了国内的很多地方:(内蒙(海拉尔、满洲里、阿尔山、额尔古纳…)、黑龙江(哈尔滨)、天津、山西(太原、大同、朔州、繁峙县)、江苏(南京)、浙江(杭州、湖州、舟山、宁波…)、福建(泉州)、广东(深圳)、湖北(武汉)、上海…),吃了很多美食,认识了很多人,也有不少的遗憾:对于一起经历的很多,一直没有很好地进行记录,由于疫情,我们也一直没机会一起出国旅游…

我也认识了很多朋友,我要前往上海最不舍得的也是他们,好在最亲密的朋友基本都是打球认识的,尽管不在蚂蚁,我们也还能保持联系(希望)。