在我的职业生涯中,目前为止,在滴滴的这段经历算是我最长的一段履历了,历时四年有余,终于还是选择了离开,回想起来,一切仿佛似昨天。尽管离开的比较坚决,但往昔的点点滴滴,历历在目,难免有些伤感,却未曾遗憾,能跟一群靠谱的小伙伴共事,也是人生一大幸事。

四年之间,也是不断的拥抱变化——从公共平台,到平台技术,再到网约车,再到最近的车载,只不过前几次是被“拥抱”,办公区也从最早的得实大厦,到数字山谷,再到文思海辉,再到湾流大厦,再到东软,再到新橙海,最后又回到湾流,除了钻石大厦,基本上附近那几个办公区都待过了。

面试

还记得面试最开始是在得实进行的,整个过程还算顺利,两轮下来,已经到下午了,最后一轮约到了山谷,面试官说:“做个小学生的题吧,有个卖油的老头儿装了 8 公斤满满一桶油,有人要买 4 公斤油,但老头儿只有一个 3 公斤和 5 公斤的空桶,没有别的工具,怎么量出 4 公斤?”,顺手递给我草稿纸,我想起来小时候看的一本书——《数学的奥秘》上就有类似的例子,纸上一顿操作,算是顺利通过了,最后一轮是 HR,聊完已经晚上 8 点了,当时给我印象最深刻的算是 HR 的办事效率了,当时就决定要加入滴滴。

The One

入职公共平台的第一天,大左就跟我们说:“我们正在做一个牛逼的项目——The One,只需要简单的配置,就能生成一个类网约车客户端”。后来了解到,在我入职之前,这个项目已经启了 3 个月了,还是一筹莫展,就在我入职的当周,项目目标进行调整,回归本质——解决多业务线的协同发版问题,估计是领导意识到了之前的技术方案太过于理想化了难以落地,于是入职当周周末,大家开始加班赶工了。差不多一个月的时候,经过大家齐心协力,The One 的第一个版本正式交付。

One Net

One Net 算是我最得意的作品之一了,据说滴滴很多客户端的同学都会拜读过我的代码,One Net 产生的背景其实是为了解决端请求 API 时无缝降级,比如,当检测到 API 服务出现故障后,网络请求自动从 HTTP 协议切到 SOCKET,当时自研了一套基于 TCP 的 dchat 协议,但是,SDK 实现得一塌糊涂,联调了一周,最后终于放弃了,很长一段时间,One Net 只有 HTTP 的实现,后来,网络优化专项启动后,才实现了 HTTP 转 SOCKET,不过,那个时候,公司所有端的网络库已经被 One Net 一统天下了,记得当时设计 One Net 的时候,还出现了段小插曲,One Net 是由我设计的,另一个团队也设计了一套网络库,我们相互 PK,最后我的设计方案(与 Retrofit 类似,采用接口描述 + 动态代理实现)被采用,当时 One Net 诞生的时候,Retrofit 还没流行起来呢。

Swarm

经过 The One 重构后,乘客端 APP 焕然一新,但随之而来,也带来了新的问题——基础组件跟端的强耦合导致接入成本太高,比如:A/B Test 组件会从端获取 AppId、用户信息、定位以及监听登入、登出事件等,为了降低端接入这些基础组件成本,于是,撸了一个 OSGi 的最小实现——Swarm,后来,因为公共跟快捷合并,我去做小巴业务,Swarm 也就被搁置了。

小巴

在滴滴工作的这几年,除了留下一身膘,再就是做小巴时,加班加到住院动手术而留下的疤痕了(只是个小手术而已),记得那段时间大家都很拼,大左几度失声而住院,小巴这边几个小伙伴也都是加班加到濒临崩溃,幸运的是我们都一路坚持了下来,最后小巴终于上线了,迭代了几个版本后,我便回到了原来的公共平台,然而,这时候,公共已不复存在了——已经跟快捷合并成平台技术了。

架构组

组织结构调整后,我便成了架构组的一员,刚爷说:“我们一起搞插件化吧”,当年 Swarm 未能如愿,那就开干吧,于是我、刚爷、涛哥三人一个月撸出了 VirtualAPK,当时作为公司级的第一个开源项目,也是给刚爷赚足了人气和光环,当年绩效就拿了 S(8-10个月啊)。后来不知是什么原因,海哥走了,架构组也就散了,大师兄去了 R Lab,狗神去了 Mobile AI(不是人工智能的 AI,是 Android & iOS 的 AI,哈哈哈,开玩笑) 了,我去了司机端。

国际化中台

去司机端是带着任务过去的——将司机端的体验做到比肩乘客端,前几年司机端一直没怎么被重视,大家的关注点都在乘客端,当司机的小桔子也不多,直到运力问题突显,司机这个群体才成为大家的焦点,所以也就有了 司机端 v5.0 ——对标 乘客端 v5.0 ,然后出行业务出海,首战巴西,然后是拉美、亚太、澳新等等,挑战也随之而来,国际化业务在全球遍地开花,如何能快速孵化出一个 APP 呢?于是,国际化司机端中台应运而生,支援着所有国际化业务线司机端,我也算是交了一份满意的答卷。

开源

司机端中台落地后,Booster 表现优异,加上公司鼓励大家开源,又有文嵩亲自站台,于是,我提交了 Booster 的开源申请,开源之前,我们又用 Kotlin 将原来 Java 8 的代码重写了一遍,从那一刻起,就爱上了 Kotlin 这门语言,简直爽到飞起,正好 Google 官方大力推 Kotlin ,正是蹭着 Kotlin 的热度,Booster 几度上 GitHub Trending 榜,给项目带来了不少 star,后来,我在总结 Booster 是如何在短短的几个月 star 数就破 1k 的时候,发现 Kotlin 真是帮了不少忙,所以,开源项目在语言的选择上也很重要,什么语言最流行,就用什么语言来实现,比如最近 Flutter 很火,但凡写些儿关于 Flutter 的东西,都能带来不少流量。

车载

跟车载的渊源要从去年给车载打黑工说起,当时车载在顺风车事件之后脱颖而出,但车载本身还是偏底层和硬件,缺乏线上监控和数据分析的经验,于是,跟 2 个小伙伴一起被拉过去给车载打黑工——做系统监控,正值年底碰上组织结构调整,我所在的部门合并为网约车,车载抛出了橄榄枝——让我考虑一下活水,于是,来年便加入了车载,当时正值人力青黄不接的时候,数据可视化没人弄,正好之前做过服务端,于是 Kotlin + Spring Boot 一顿操作猛如虎,可视化大屏 成了大家的焦点,再到后来的泛前端,顺便把 TypeScript 也给玩儿溜了,又折腾了一把 Node.js + Eureka,原来发现微服务架构也不过如此嘛。

结语

经历了这四年的磨炼,自己感觉成长了不少,曾经在这里与一群小伙伴努力过、拼搏过,未曾留下遗憾,岁月匆匆,现在再看我当年入职时拍的工卡照,当年的追风少年俨然已成了油腻大叔。。。