天猫回忆录

看到篇文章「从P4到P9,在马云家写代码到双11前端PM」,是舒文自己写的十年阿里经历,让我想起了在天猫实习的日子,记忆深刻,不自觉地就写成了下面的回忆录。

我有幸在2015年有一段短暂的天猫实习经历,在那时知道了@舒文,对他有两个印象:1是开敞篷跑车的骚年,2是斑马系统负责人。那一年的斑马初出茅庐,第一次在618年中大促中较大规模使用,而我当时所在的天猫超市业务,也是斑马的第一批忠实用户。

业务背景

介绍下当时的背景,天猫超市有十几个品类(休闲零食 、酒水饮料都算不同品类),并且天猫超市在全国有5个站(华东、华南、华北、华中、西南),每个站的促销商品是不一样的。业务每个月都要搞促销活动,每次会涉及几个品类,并且还要和站点挂钩,2个品类5个站点的话算下来就要10个活动页面。

技术背景

在斑马之前,这类活动页面要么找外包开发,但质量堪忧,尤其是移动端的适配做的很差。另一条路是用淘系的TMS系统来搭建,前端同学开发TMS页面Solution和区块,区块中预留好由运营填写的数据坑位,最后前端开发完的代码必须跟着后端项目一起发布,这套流程中前后端还没分离。TMS是古董级的系统,但也帮助运营和前端完成了活动页面的快速开发。

2015年舒文开始推动天猫各垂直业务线用斑马来建设营销活动,并且舒文团队提供基础通用模块的开发。当时天猫UI已经 Mobile First 了,每个斑马模块要求提供 Mobile 和 PC 两个版本,而在斑马的搭建界面上,运营只需要搭建一次就可同时生成 PC 和 H5 两个页面。

我觉得斑马模块设计的最精巧的是:一个模块(也可以叫组件),既能用于搭建,又能用于普通项目中;在普通源码中使用时,既能用于同步渲染(由 node server 直出),又能异步渲染(在 js 中作为函数调用生成DOM)。现在看来可能觉得没什么,但那时模块和大部分项目都用 Kissy 开发的(和 jQuery 差不多),模板解析的库是自研的,服务端渲染引擎也是自研。那时 npm 还没有 package-lock 文件,天猫的同学就自研了 seed 文件记录每个依赖的版本,并开发了本地开发的 CLI 工具。直到现在,斑马文档中还能看到 wormhole、tap server、xtemplate 这些名字。

团队背景

我实习是在天猫垂直行业的前端团队,里面分为很多小组去支持不同业务线,天猫国际、电器城、汽车、母婴等。当时天猫超市的前端,只有2个正式员工,加我1个实习生,我5月入职正好赶上618大促。需求方面,除了营销活动外,还有超市主站的一些功能迭代。

618 推斑马

就是这样的背景下,mentor 带着我们上战场,为了推斑马,他让运营活动的需求不经过产品直接提给他,这样能联合斑马团队有更多发挥空间。618主会场和通用的头尾组件都是由斑马团队开发的,而天猫超市特有的玩法和商品坑位由我们开发。

印象最深的一个例子,斑马团队开发了图片热区模块,允许运营上传个性化的页面图片,在斑马上把图切分成各个区域配上不同的跳转链接。而 mentor 引导我基于此,开发了一个允许直接加购物车的超市版图片热区。运营直接把购物车按钮做在图片里,在斑马上配下对应的商品ID即可,这样很多十分个性化的活动页面都可以用图片来做了。

运营侧的操作是,由运营同学负责定商品定价格玩法,而斑马上的活动页面都由外包来配置,最后再由运营审核。618预热、大促、返场活动,总共有几百个页面。有一阵子 mentor 带着我坐到了运营边上办公,能快速响应他们的问题。事后超市那年的业务KPI超额完成了,业务方发邮件表扬了我们和斑马,舒文还请我们吃了饭。

后来的斑马

由于集团政策和个人原因,短暂实习后我就返校了,没有经历那年双11。看到舒文的文章里写到,斑马于2015年初才立项,经历618的小考后,又参加了双11大考,取得了全面成功,节省了巨额外包预算。再后来,舒文团队从斑马里抽象出了天马,提供搭建的底层能力,又基于天马做了方舟系统,面向营销链路的会场解决方案。

今年看了集团前端大会的直播,舒文仍然负责搭建方向,看到有人评论说舒文这两年白头发又多了。

最后,感谢舒文让我知道了斑马,感谢 mentor 由校的耐心指导,感谢 leader 铁军的心路引导,祝他们越来越好🙏