本文作者永霸负责了淘宝PC改版,他坚信历史的发展是螺旋式上升的,那些只要认为是对的事情,未来一定会发生/被证实的。
文章指路:淘宝PC改版!我们跟一位背后付出6年的男人聊了聊……
缘起
本人自 14 年校招加入淘宝 UED(淘系前端前身)后,一直从事淘宝的业务前端开发工作,至今已有 9 年。一直想对自己已经度过的四分之一职业生涯(如果我能干 30 年的话)做个简单总结,无奈『拖延症』严重,直到年前被邀约做年终总结时,才下定决心,于是有了这篇文章。
本文是一个业务前端对如何支撑好业务,以及在这过程中如何获得个人成长的总结。一些心路历程的变化可能不是在某个瞬间,而是在实践过程中潜移默化形成的。
关于我
在职业生涯前五年,我是一线开发,期间也承担过虚拟 TL 的工作;从 19 年开始,成为淘宝基础链路(现在是用户产品技术)的前端负责人。在业务方面,我先后支撑过一淘(海淘&特卖)、淘宝教育、淘宝 PC 首页、淘宝天猫店铺、淘宝天猫基础产品(首页、信息流、商品详情、交易、消息)等。在技术方面,做过跨端(Weex/小程序/Hybrid)、搭建、全栈、开放(二方&三方)、数据(体验度量&监控)等。
我经历的那些心路历程
在找实习碰一鼻子灰之后,我发现自己没想清楚未来要做什么,也没有擅长的领域。调研(碰壁)了一系列方向之后,我感觉还是可以当个程序员。于是钻研了一段时间的 C 与 PHP 后,我顺利加入到做淘宝直通车的创业公司实习。在此非常感谢创业公司老板杨哥给菜鸡的我学习的机会。实习期间几乎天天早九晚十,一个人负责网站的数据库设计、接口封装与 UI 实现。我也首次接触到前端页面开发的工作,我发现前端比后端(PHP)有意思多了,一行代码就能改变世界。在实习结束后,我把学校图书馆里能找到的前端相关的书都看了一遍,也跟拿到其他公司 offer 的师姐取了很多经;在研二暑假时到人人网实习并在校招时加入淘宝 UED。
总结下,本科期间系统学习了管理学与计算机科学的相关的基础知识,大概处于什么都会又什么都不会的阶段;研究生期间培养了自己发现问题、定义问题与解决问题的能力。回首大学与研究生生涯,我认为这个阶段最重要的是找到自己热爱并且能够充分发挥自己比较优势的领域,并为之努力,为自己长久的职业生涯做准备。
在业务支撑方面,我没遇到太多的挑战,可以高质量快速完成分配给我的任务,例如,正式入职第一个月我就独立负责了当时一淘最大的营销活动——88 海淘节,2 周时间开发了十几个页面。这期间有个小插曲,稍微有点追求完美的我,在视觉还原方面一直很自信,当我自信满满的把做好的 demo 发给设计师体验时,设计师非常诧异的问我,线(边框)呢?我更诧异了,什么线,哪有线(事后发现是我显示器的像素太低,#999 的边框在我显示器上不显示)。
在技术方面主要是快速学习,并尝试做些改变。这段时间,我对各种技术方案充满好奇,想知道某某功能、组件、库是如何实现的,背后的原理是什么,造了大量轮子。大概包括三个层面,第一、纯粹造个轮子,没实现过的库/组件都自己重新实现一遍,例如,waterfall 组件/分页组件/jQuery 等;第二、尝试换个理念重新实现轮子,例如,有段时间特别想解决业务代码里回调地狱的问题,学习了有限状态机的编程模式,并把该理念应用到多个业务项目中。详细参考 基于有限状态机的JavaScript编程;第三、尝试前端领域一些新特性或者新框架,15 年年初用 React 重构了一个页面,不过学艺不精没有享受到 React 带来的好处,反而在状态管理方面遇到了不小的挑战。
在融入方面,认真的写好每天的日报、周报,积极参与团队内部分享与 coding 比赛等,也拿了些奖。常言千里马常有而伯乐不常有,但你需要先证明自己是千里马,那么日报、周报、周会就会成为展现你实力的舞台。
总结下,在这个阶段,我对各种新技术充满好奇,愿意花时间去学习与验证,以实现技术的自我满足与自我成长;业务对我而言是个非常称职的前端,但可能也仅此而已。
如何把事情做到极致呢?前提是要熟悉我们的业务,即他的用户是谁,他为用户解决了什么问题;通过竞品调研、内部广泛沟通与自身体验,确认理想与现实的差距,进而确认业务痛点。有了方向之后,我们需要定义一个有挑战且大家广泛认同的目标,注意这里的目标不是你认为的有挑战的目标,而是这个领域里专家(业务&技术)认为有挑战的目标;在制定策略时,最好能够借助团队的力量,顺势而为;在设计技术方案时,重要的是找到最合理的路径,而不是技术挑战最大方案。
在 15 年做淘宝教育时,图片是淘宝主流的素材,视频是非常少的,手机淘宝甚至不能全机型播放视频,更别提横全屏播放了。但对淘宝教育的用户来说,买课看视频是最基本的诉求。为了解决视频播放问题,我尝试了 Native 与纯 Web 方案,几乎把实验室所有机型都测了一遍,但部分机型依然会黑屏。在穷途末路之际,发现 UC 正在推进 UC 浏览器内核接入手淘。我尝试联系了 UC 播放器的同学,大家一拍即合,在解决 Android 播放问题的同时也帮助 UC 播放器在手淘内落地。在 iOS 端为了解决横全屏播放的问题,先是脑洞了下用 CSS3 旋转的 Video 的方案,后续又脑洞了下旋转 WebView,至此彻底解决全屏播放问题。
总结下,要把事情做到极致,最核心的是要找个好的目标,评判的标准也很简单,当你跟大家说你要做 xx 时,看大家的第一反应是什么?如果是你怎么做到的?那么恭喜你找到了一个非常好的目标;如果大家反应是你为什么要做,那么你可以再探索探索。
我对数据有种信仰,相信数据能够帮助我发现问题与解决问题。数据驱动具备以下几个特点。第一,数据思维,即从感性分析到理性分析。感性是主观上认为好与不好,但是否真的好或者不好不确定。理性分析是建立在逻辑与数据分析基础上的。以淘宝教育视频播放为例,直观感受是视频不能播放,时不时黑屏;用数据说话应该视频只有 95% 播放能成功。第二、数据价值,从关注功能价值,即从无到有,从 0 到 1;转变到更关注长期价值,实现从 1 到 99 的突破,即高质量的发展。第三、数据能力,我们需要具备数据的分析、处理与解读能力,例如,写 SQL 跑数据。
16 年我接手了当时还是 DAU 几千万的淘宝 PC 首页。在设定目标时,主管问我『你准备做什么?』,我跟前任,PD,开发都聊了聊,又自己调研了一番,觉得性能优化还有空间(首页作为淘宝的面门,性能一直是很好的)。于是我跟主管说我要做性能优化,他说好『要不暂定 20%』?我当时就慌了,之前都做那么好了,在没有大的技术变革之前,感觉有点难。我又找了当时 TMS 的负责人嗷嗷(首页的前前任主管),他说『如果你要做就把性能提升一倍,要不然就别做了』。于是我又找了释然(首页前任的主管),他说『好啊,那你就做到第一』。这时我就更加郁闷了,天猫首页首屏基本是一个大 slide,而淘宝首页支持千人千面,首屏就有 10+ 个接口。郁闷之后,虽然不知道如何达到,但也知道大家对这件事情的普遍认知;于是我开始定目标、确定数据平台、做 A/B 等,通过数据观测每次优化后的效果以及潜在空间。通过一系列操作之后,终于在 17 年元旦时达成了目标。
当我们在设定技术目标与规划技术体系时,通常会按照体验、稳定性、效率(降本提效)等维度去拆解;但每个人(团队)的精力(资源)都是有限的,我们应该如何选择,如何判断事情的轻重缓急。要回答这个问题,我认为要回归到商业本身。商业的本质是交易,商业公司存在的价值在于创造了利润。对于电商公司而言,利润的大小很大程度上取决于用户规模与交易规模,而利润增长的来源可以是开源也可以是节流。同时,我们应该认识到在商业公司里,技术存在的价值是以实现业务价值为前提的,不存在为了技术而技术;如果有也是为了实现业务未来潜在的长期价值。因此,我们要根据业务短期目标与长期目标来构建我们的技术体系,通过技术目标的达成来牵引业务目标的实现。
我从 19 年开始负责天猫淘宝基础产品前端团队时,当时面临的问题是如何让这个小团队产生更大的价值。我们都知道,技术团队是擅长做研发提效的。但不到 10 个人的小团队,即使设置一个远大的目标——效率提升一倍,人员减半。但这个收益对公司来说杯水车薪,且不可持续;转换下视角,我们是否可以帮助天猫淘宝实现电商 GMV 的提升呢?我们可以做个简单的推导 GMV = 客单价 * 订单数,订单数 = DAU * 浏览转化 * 成交转化;我们团队负责的商品详情、购物车与下单是『成交转化』最核心的三个产品。天猫淘宝每年的 GMV 规模是几万亿,如果我们能将交易转化提升 1%,那就是几百亿。目标看起来不错,听起来也有吸引力,那么如何去做呢?我们可以把交易转化的产品流程转为用户交互与数据通信的漏斗模型;那么做交易转化提升就可以转化为:去除漏斗中的某个流程,或提升某个流程的转化率。根据这个策略,我们团队在 H5 与小程序交易链路上做了稳定性改造、对标手淘的能力补齐、体验升级与产品优化等一系列优化,帮助业务实现年化预计几亿到几十亿的 GMV 增量。一个前端的追求可以是什么?是自己的代码跑在亿万用户的设备上,更是一行代码就可能带来百万、千万甚至上亿的商业价值。
伟人对领导有个通俗的定义『坐在指挥台上,如果什么也看不见,就不能叫领导。坐在指挥台上,只看见地平线上已经出现的大量的普遍的东西,那是平平常常的,也不能算领导。只有当还没有出现大量的明显的东西的时候,当桅杆顶刚刚露出的时候,就能看出这是要发展成为大量的普遍的东西,并能掌握住它,这才叫领导』。技术应当比业务领先半步,为了业务提前做技术布局,挖掘出现在可能不是但不久可能是业务强诉求的事情。从宏观层面看,我们需要了解国家政策、行业格局与技术趋势;在微观层面我们需要知道自己的业务从哪里来,未来走到哪里去;并结合自己团队的技术现状与人员储备提前做调研与分析。
从 19 年开始,国内移动互联网流量逐步见顶,越来越多的淘系业务希望从其他渠道(尤其是支付宝)获取更多流量。在 18 年淘宝与支付宝小程序架构合并之后,小程序是最适合做多 APP 投放的跨端方案。但当时淘系电商只支持 Native 与 H5 两种方案,前者投放到其他 APP 成本非常高;后者在管控、安全与体验方面存在较大的瓶颈。基于上述判断,我们做了详情与交易链路的小程序化改造,将基础链路新奥创 + DX 的技术方案适配到小程序场景中,形成小程序电商套件。该方案较好的满足业务可管控的开放诉求,页面性能方面也有一倍左右的提升。虽然项目立项时希望接入小程序的业务并不多,但在 20 年迎来了爆发式的增长。该方案也为后续适配微信小程序奠定了基础。
尝试做好一个业务的技术负责人-技术PM
虽然从负责淘宝首页时,我就开始担任技术 PM 的工作,后来也在多个项目中担任技术 PM 工作。但这些项目所涉及的技术栈与技术方案是我熟知的,项目的规模也比较小,整体风险可控。从 22 年 7 月,我开始负责信息流二跳——ND 的技术 PM 工作。ND 是一个沉浸式无尽内容与商品的信息流产品,业务量级(几十亿PV)、战略地位(淘系前三)、团队协同规模(小100人)与技术复杂度(端侧 Native/Weex,数据服务 TPP工程与算法、调控)等方面远超过我之前负责的项目。到目前为止,摸爬滚打的半年多,虽然远称不上做的好,但也有些感悟:
职责:前端业务支撑与技术负责人的差别是,前者是面向岗位做需求交付,后者是面向业务做研发结果交付。前者只需要做好自己就好,后者需要协同多个产品与技术团队,排除各种不确定风险,为业务带来确定性的交付;
视角:技术 PM 不但需要具备端到端的技术视角,同时需要具备业务视角;前者不但要懂前端,懂客户端、还要懂服务端与算法;后者从宏观层面要理解公司战略、业务目标、业务策略、策略到产品落地等;微观层面要理解业务的核心指标,看报表、切流、A/B 等。
组织:复杂多团队协同的项目管理,依靠个人无法把握项目全貌,需要借助组织与团队的力量。应该花更多时间调研现状与问题,制定大家广泛认同并行之有效的规则来解决这些问题。
业务:导购链路与交易链路的最大差别是——敏捷。在交易链路里,系统的设计是在确定性的业务流程里产出确定性的结果。在系统运维方面也是以稳定性为前提,正常的发布节奏每周一次。但在导购链路里,系统的设计是在标准的数据处理流程里产出最佳的业务效果,数据结果的内容是多变的,不确定性的。我们曾经做过一次发布统计,在 ND 前端几乎每天发布一次,自我感觉已经很快了;但服务端(工程&算法)每天可以发布几十次。最近几年千人千面的个性化算法大放异彩,原因之一是有一套低成本快速试错的基础设施,线上时刻跑着 N 个实验,优中选优。
我们是大淘宝技术用户产品技术前端团队,主要负责商品详情、正逆向交易(下单、订单、退货退款等)、消息、社交等电商基础产品,在技术方面正在探索面向极致效率与体验的跨端混合容器方案、面向二方端到端开放的新奥创方案以及面向前端安全生产与跨端体验度量方案。
¤ 拓展阅读 ¤
3DXR技术 | 终端技术 | 音视频技术
服务端技术 | 技术质量 | 数据算法