​ P4到P9,那位在马云家写代码的前端 ​

简介: 在阿里这些年的成长经历做一个总结和分享,希望你能在他的故事中得到些许启发。

原标题:从P4到P9, 在马云家写代码到双11前端PM

image

阿里妹导读:今年的双11已经是阿里资深前端技术专家舒文来阿里的第11年,从应届生到双11前端PM,他一路升级打怪,实现了岗位上从P4到P9的晋升。这第11届双11顺利结束之际,他把在阿里这些年的成长经历做一个总结和分享,希望你能在他的故事中得到些许启发。

shuwen566702293F.png

作者简介:舒文,来自淘系技术部前端团队。目前负责淘系(淘宝+天猫)的营销活动、互动的业务,也在阿里巴巴前端委员会主导搭建体系的技术方向。

P4:懵懂学生入行记 (2008.10-2009.12)

2008年10月,入职阿里巴巴日文站,以前端岗加入UED团队。日文站 ( http://www.alibaba.co.jp ) 的业务源于阿里巴巴国际站 - 提供在线的平台化服务,专注撮合中日贸易。

在那个前端的鸿蒙年代,页面重构工程师和Javascript程序员还是两个细分职位: 在阿里,前端、交互、视觉共同划属用户体验部门。

而在部份公司,有专门的重构工程师。

在日文站亦如是:现实情况是杭州和东京的团队,具备写JS能力的工程师均不多。不少同事专注在HTML/CSS领域,且专研极深。举个例子:在日文站,所有的HTML/CSS代码必须通过两个Lint工具:HTML文書の文法をチェックし、採点します、[The W3C Markup Validation - 这让代码的规范性更好外,也能获得更好的搜索引擎分析&索引权重。

随着业务发展,需求场景多且复杂起来,对Javascript开发能力要求就越高。同时,也激发了我的技术热情。除了看书,我迫切想参与其他事业部的前端交流会。感谢时任主管的支持,我开始主动跨部门沟通,将他山之玉和学习所得有了更多结合。慢慢地,在团队内部提出一些技术方案并逐渐应用到杭州/东京两个团队 (特别感谢最早时代的D2)。

在那个阶段,我几乎参与了所有较为复杂的项目。结合当年的热门大作《高性能网站建设指南》、Yahoo网站性能优化黄金法则,负责了主站的性能优化,取得了一些不错结果。

2009年10月获得了日文站优秀员工,年底顺利晋升到新的层级(P5)。

image

P5:从热血到成长(2010.01-2011.06)

2010年开始,业务略微调整,参与“日本买家获得”(Buyer Growth)。这个业务本质是通过平台技术优化(SEO、SEM等)获得更高的搜索引擎权重、提高Landing到转化。

在这期间,随着被认可度提升、持续的项目历练,我的自信心也得到了锻炼。除了参与更复杂的项目外,我开始主动对业务和技术体系做出一些提案(Proposal) - 包括参考Google Webmaster Guidelines进行技术优化、参与了各种SEO项目,提出了现在回想起来各种或靠谱或不靠谱的提案。非常感谢历任主管的支持和包容,让一个楞头青能够没有后顾之忧地敢想敢做。

日文站初版克隆自Alibaba.com,加之外包参与、跨东京和杭州多团队开发等原因,全站前端框架混杂,包括不限于YUI/Mootools/PrototypeJS/ExtJS/TBra等前端框架&类库混杂在同一业务甚至页面。新人上手、多人协作、性能优化的成本很高,但历史原因积重难返,大家苦不堪言。

结束一个大项目后,时值“愤青”的我对全站的代码做了个调研和分析,说服了主管们,决定启动一个重构项目——旨在将全站混杂的代码统一到 jQuery。并大体确定了执行方案:随业务迭代上线、项目成员1人,我兼任PM、开发/自测。

在之后,一个如同打了鸡血般的前端程序员,白天黑夜的翻历史PRD、熟悉代码逻辑、阅读各种类库的手册,陆续将各业务线的脚本重写了一遍,边做业务项目边重构,整个项目持续了半年多,直到11年Q1完成。

现在回想起来,有些事情真需要一股冲动,正如买房、结婚。如果主管让我再多考虑半天,我兴许就怂了。当然,人生也可能走入另外一条主线。

2011年日文站业务合入B2B,我也参加并通过新事业部的年中晋升(至P6 ) 。

image
2011年阿里巴巴日文站誓师大会

P6:内部创业 + 前端的无线爆发 (2011.07-2014.06)

两段非常宝贵又特别的经历。

2011年下半年主动选择加入阿里内部的创业项目:打造一款面向个人消费者的云产品。 团队不大,20多人,各路专家云集,各负责人级别都很高。很享受这段工作旅程,我第一次参与桌面Hybrid端项目,第一次开发SPA Web应用,第一次参与跨桌面软件/PC Web/H5的项目,第一次领略敏捷管理的魅力。在来自美国的技术Leader带领下,我接触到很多新领域,极大地开阔了技术视野。

“创业失败是要承担风险的,没有加薪,没有晋升,而且还是996,直到项目成功”。第一次面试这个项目前,业务负责人,阿里工号16的虚竹告诉我。

不算幸运的是,最终这个项目没有取得如预期的成功,业务有了变化和调整。

但幸运的是:这段经历让我亲身体验了一把“创业”,也感受了技术以外的方方面面艰难。这个过程中形成的产品和业务思维,对我日后带来了深刻影响。当然,也在我之后几百次想离职创业时,这段经历让我能够静下心来思考创业的内核 - “为什么要创业?我有什么资源、能做什么事情、创造什么价值?”

忘了说,这段经历之所有特别,还因为办公地点在湖畔花园——马老师家。

image
湖畔花园办公场地

2012年7月,加入到天猫的前端团队。 主管给予了充分的信任,让我负责天猫H5首页的研发,开始接触淘宝前端—— 一个更成熟完整的技术体系。

2012年底,@三七 加入天猫带领前端团队,作为国内前端领域最早的拓荒者之一,他在随后的两年时间给天猫的前端技术带来体系化的变革——从模块化到工程化再到生产环境的NodeJS,并引入了Mobile First理念。在他的支持下,我带领了一支前端小组陆续参与多条业务线的开发工作。我自己也加入集团级技术建设,主导跨端Web的项目,推进了前端体系的移动化建设。

除专业技术外,花了比原来更多的功夫在团队工作上,包括不限于团队氛围、风格和文化的打造,学会在内网分享中学习借鉴前辈大拿的的管理方法论。在阿里的文化中,非常强调传承。一个人牛不算什么,让一群人厉害才算厉害,最好是让下属比自己还强。

时间花在哪儿,结果就会在哪儿。团队内一些业务尖兵逐渐冒出头来,在后来几年成为天猫甚至大淘系的中坚力量。

这个过程既痛苦又快乐。痛苦在于要做越来越多的超过自己能力层级、远离舒适区的工作,快乐的则是能明显感知到自己在这个过程中的快速成长。

很幸运,在14年年中,顺利通过晋升(P7)。

P7:从双十一中打将出来 (2014.08 - 2016.01)

2014年注定是难忘的一年。在这一年,我开始负责营销活动的业务,并担任2014年双十一前端技术PM工作。

营销活动是一个顶有趣、富有故事的业务:

从技术上:它可以极致简洁到切一个页面上线就行,也可以复杂到如双11一般 ——它是阿里技术的年度大考。

从业务上:它既可以简单到直接把现实生活的促销活动进行虚拟世界的进行流程投射,也能如互联网史上的春运般整合零售生态和供应链。

我和多个团队在天猫制定了各个维度的技术规范,如内控标准、外包规范,有惊无险地渡过了14年双十一。

image

在PC时代,营销活动的研发模式,对于前端来说,实在过于“简朴”:“5到6位正式前端常年带着数十个外包,根据运营需求开发成百数千的页面,通过一个叫做TMS的运营系统预留坑位给运营同学填数据,交由后端应用推上线(CDN)。” 这类业务活动频次高、页面量大、协同成本高。某种意义上讲,对前端技术挑战并不高,为了更高效的研发,我们能做的是不断提高组件和模块复用率。

感谢TMS,它帮助前端们快速迭代出一个又一个页面,支持了集团的业务,即使在今天,它的设计思路都能称得上精巧犀利。

发生变化来自2014年双十一前,线上发生了一次令我终生难忘的离奇故障(涉及敏感信息,略过细节):当时因临时未排查出原因,VP现场观摩面,我和CDN运维团队的同学们能做的只是不断重启集群应用缓解问题。

我作为时任前端PM,也因技术方案选择失误受到批评责罚。(时隔多年,大家也偶尔调侃,责罚不冤,幸而那天的问题提前暴露而未发生在11.11号当天,否则后果难料 )。

那年双11最终还是完美谢幕,GMV 571亿,移动端成交42.6% ,很多人敏锐的感觉到:移动化时代到来了。

之后技术复盘,我们针对问题做了多轮讨论和推演,决定启动一个代号“斑马”的产品项目:基于我们对营销的理解,运营的实际需求、过往的技术痛点,设计一个高效的页面系统来支持运营快速发布活动上线,更重要的是它是完全的基于Mobile First设计的系统。

正所谓 “一饮一啄,莫非前定” ,因为过去一年的打磨锤炼、痛过后的反思,我们很快把方案框架敲定,并和多个业务搭档共同推进项目实施。

项目于15年初立项,我代表团队“激进”的将阶段目标定为“支撑2015年3月的春季大促” 。这种既要支撑日常高频的大促业务,又要同时从0到1做平台研发,不啻于“飞行中升级引擎”,困难很大。但我背后的思考是:“这就如同创业,没有一往无前的决心和一鼓作气的气势,等想多了细了,多半就怂了怕了”。

我负责整个系统及PM工作,团队培养出来的中坚力量们承担各个功能模块研发。为实现我们心中所定计划,整个项目组如同创业般激情,为了一个共同的目标奋进。春节假期不少同学还在主动提交代码,节后迅速返回公司继续项目。

很幸运,克服了重重困难,“斑马”项目顺利上线,并成功支持了2015年第一个S级大促。基于新的系统,我们共同把营销活动送上新的轨道:因模块化带来的效率提升让我们完全解除了外包依赖、因具备跨端能力运营们可以单次同时进行PC和无线活动、我们设计并推动了CDN构架,单在15年双11就节省了数千万预算。

随着技术迭代,“斑马”这个技术产品,在后面几年成为阿里的基础运营平台之一。

2015年5月,我参与了P8的晋升提名,结果未通过。Leader和我沟通:“成长很快,能力和规划出色,业务成果需要时间验证”。我很坦然接收了建议,晋升答辩中的技术评委的建议中肯不失公正,让我受益很大。

“但行好事,莫问前程”——在随后的时间,“斑马”的能力更为完备。我再次担任了2015年双11的前端PM工作,业务也顺利上线。那一年,双11当天GMV 912亿,移动端成交68%。

16年1月,新主管告诉我,绿色通道通过,晋升至P8。

image
双十一令牌/虎符

P8:立足业务,敢想敢造 (2016.02 - 2019.07)

一次偶然的机会,看到一张图:如遵循民意苹果手机会变成什么样?给我带来一些对业务和技术的思考:“页面发布系统本质上是一个通用的工具平台:前端/运营/设计师都是它的用户,每个角色都有对它的功能需求。但每个新增功能在解决一类用户需求的同时又增加了平台复杂度,降低的客户的易用性,丢失掉另一类用户的民心。”

0.jpg

“这兴许是一个产品的轮回宿命”,我内心有些敬畏地想。带着这个敬畏,时间到了2017年,随着斑马的功能日趋复杂,我决定将运营操作平台和底层技术能力进行剥离:

  • 将斑马定义为运营系统,专为运营打造极致的页面搭建。
  • 将底层能力抽象成服务平台(代号“天马”),提供开放的研发标准、搭建方案、页面渲染能力。

随着时间推移,“天马”的开放能力不断完善,越来越多的事业部基于它构建面向业务的平台系统,带来的技术回报是:技术复用减少从0到1的研发&硬件成本、标准统一使跨业务协同变为可行。

而在技术的另外一边,业务发生着悄无声息的变化:16年双11GMV 1207亿、17年双11则是1682亿。每年双十一在如此巨大的基数下还能持续业务高增长,个性化算法、推荐技术的大规模应用起到了非常重要的作用。在全局效率上,大数据优于人工干预逐渐得到了共识。在我看来,这些变化意味着时下大家认可的大促会场模式,也将带来新的变化。

2018年2月,我在内部做了个分享,描述了对营销活动未来的预判:

  • 业务化:面向“活动”组织,而非页面。
  • 产品化:构建常态化、心智化的大促产品矩阵,而非单纯是模块级的抽象。
  • 智能化:投放算法化和规则化,而非运营的动态化。

基于以上预判,我和团队的小伙伴,计划联同业务、上下游技术团队共同构建一个面向营销活动的平台产品(项目代号:方舟)。

很感谢历任主管实仙/四虎的信任,愿意帮我顶住重重压力,经过多轮沟通,我们达成了一致共识。

和过去几年稍有不同的是,我逐渐把包括不限于方舟的一些重要产品放手给团队中的骨干/TL,让他们去规划、去驱动、去变革。我更多做了辅导性、资源性、业务判断的全局性工作。

随着时间的推移,越来越多的结果开始凸现:

  1. 斑马逐渐成为集团级的通用平台,数万小二同学用它发布管理业务。
  2. 方舟作为业务平台交付成为大促体系的核心部分,并成功应用到双11期间,在效率、效果和交付质量上取得瞩目的结果。
  3. 天马通过“开放共建、出海上云”,为集团多个BU提供基础的技术搭建服务。
  4. 在业务中,团队中沉淀出一个个技术产品:渲染引擎、API聚合网关等,也把曾经仅服务于内部的产品开放到商家、ISV。

在2018年中,提名参加晋升面试,结果未通过,技术委员会的评委们建议更多参与“集团级的技术建设、更高格局的视野”。

我很快走出了沮丧,毕竟在阿里,常胜不常有失败倒常伴。更重要是,主管 @四虎 的开导让我开始思考更全局的未来。

随后的时间,我继续投入了2018的双11前端整体工作,推进了多个端技术方案落地天猫。感谢阿里前端技术委员会主席圆心的举荐,我加入前端委员会,担任搭建技术方向的Sponsor - 旨在站在集团视角,定制标准、融合并打通搭建技术体系,在更大范围内赋能业务。

在集团内各个前端Leader的支持下,我们很快跨多个事业群达成了共识,制定完善了技术标准,基于一体化方案启动了多个层面的项目。

2019年5月,参加了年度晋升,顺利通过P9晋升。感恩。

image

P9:不止于前端

现在,仍然有太多的事情值得去深入:

  1. 以双11为代表的大促前端体系仍然是业内最具技术挑战的业务场景之一,包括不限于客户端容器技术、服务端渲染(Node)、框架与组件体系、跨终端技术等综合应用。
  2. 阿里有数以亿计的消费者,如何为我们的消费者构建一个好玩有趣的互动购物体验,是我们这个团队一直需要探索和改进的。
  3. 在未来,源自于前端的搭建技术,不仅能支持小二还能服务生态角色,不仅能支持国内还要服务全球。

除以上,我也深度参与阿里前端技术委员会的工作:

在阿里的前端体系,除了搭建方向以外,有相当数量的跨事业群共同建设的技术方向&项目,包括不限于Serverless、IDE、智能化、中后台、数据可视化、工程化、Node技术等。这些技术方向或者始于前端,但又不止于前端,共同为打造行业领先的技术生态服务。

有期待有更多的优秀的同学加入阿里,让我们的智力和努力触碰到数以十亿计的用户。欢迎加入联系我:wenliang.shuwl [at]alibaba-inc.com

image

最后分享一些过往些年的的心得:

关于工作:

1.想做好一件事情前,获得上级的认可非常非常重要,这是把一件事情做成、做好的催化剂。

2.很多时候,源自“事”的困难都可以用态度解决,来自“人”的困难可以用换位思考解决。

3.对于刚参加工作的同学,如果家中无矿,啥也别说,努力就对了!毕业五年内的表现,可以决定人生很多事情。

4.如果你和领导发生分歧:拿出你的数据/理由/态度尽最大的努力去说服他,如果充分沟通还形不成共识,那就先听他的 。这不是媚上,而是“在必须达成一致的前提下,相信更有概率做出正确决定的人。”

5.在工作中,如果某个时间突然发现和往常不一样,陡然压力变大/身心疲惫,别害怕 ,因为,这有可能是你在成长、突破瓶颈前的黑暗期。

6.专业技能是立身之本。从长期来看,它是性价比最高的投资标的之一。

7.结合资源,尽最大的努力、用最好的态度,做好手上的工作,也是一种创业。

8.不要因为背靠大树久了,就误认为自己是颗大树。对客户&用户的尊重和价值创造是我们很大的护城河。

关于生活:

1.技术人读书工作挣钱养家,一步步成长同时也会一岁岁变老。相比不少行业,互联网行业自身有赛道上的优势,但如果单纯以同比其他行业略高的溢价按年/月出售自己的时间和技能,这不应该是我们做的。坚持不断的思考、通过技术优势带来叠加价值,在过程中不断成长 , 这兴许会更好。

2.学会奖励自己。如果经受了辛劳、痛苦和压力走了过来,再不好好的、肉痛地奖励自己一把,哪对得起过去和未来的自己。

3.除了在工作中,人生处处皆可学习:学理财、学打球、学拍照、学游泳、学健身、学拍短视频、学习怎么把生活过得更好。

4.最后,咱们技术人可能很忙,有可能没法“work-life balance”,这是一种取舍。但健康的身体一定是最宝贵的一笔财富,没有之一,不能舍。谢谢大家。

原文发布时间为:2019-11-15
本文作者:舒文
本文来自云栖社区合作伙伴“阿里技术”,了解相关信息可以关注“阿里技术”。

相关文章
|
27天前
|
JavaScript 前端开发 Docker
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
在使用 Deno 构建项目时,生成的可执行文件体积较大,通常接近 100 MB,而 Node.js 构建的项目体积则要小得多。这是由于 Deno 包含了完整的 V8 引擎和运行时,使其能够在目标设备上独立运行,无需额外安装依赖。尽管体积较大,但 Deno 提供了更好的安全性和部署便利性。通过裁剪功能、使用压缩工具等方法,可以优化可执行文件的体积。
108 3
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
|
9天前
|
前端开发 JavaScript
前端界的革命:掌握这些新技术,让你的代码简洁到让人惊叹!
前端技术的快速发展带来了许多令人惊叹的新特性。ES6及其后续版本引入了箭头函数、模板字符串等简洁语法,极大减少了代码冗余。React通过虚拟DOM和组件化思想,提高了代码的可维护性和效率。Webpack等构建工具通过模块化和代码分割,优化了应用性能和加载速度。这些新技术正引领前端开发的革命,使代码更加简洁、高效、可维护。
13 2
|
9天前
|
前端开发 JavaScript 测试技术
前端工程师的必修课:如何写出优雅、可维护的代码?
前端工程作为数字世界的门面,编写优雅、可维护的代码至关重要。本文从命名规范、模块化设计、注释与文档、遵循最佳实践四个方面,提供了提升代码质量的方法。通过清晰的命名、合理的模块划分、详细的注释和持续的学习,前端工程师可以写出高效且易于维护的代码,为项目的成功打下坚实基础。
20 2
|
15天前
|
监控 前端开发 JavaScript
前端开发的终极奥义:如何让你的代码既快又美,还不易出错?
【10月更文挑战第31天】前端开发是一个充满挑战与机遇的领域,本文从性能优化、代码美化和错误处理三个方面,探讨了如何提升代码的效率、可读性和健壮性。通过减少DOM操作、懒加载、使用Web Workers等方法提升性能;遵循命名规范、保持一致的缩进与空行、添加注释与文档,让代码更易读;通过输入验证、try-catch捕获异常、日志与监控,增强代码的健壮性。追求代码的“快、美、稳”,是每个前端开发者的目标。
31 3
|
16天前
|
前端开发 JavaScript 开发者
前端开发的终极技巧:如何让你的代码既简洁又高效,还能减少bug?
【10月更文挑战第30天】前端开发充满挑战与创新,如何编写简洁高效且少bug的代码是开发者关注的重点。本文介绍五大技巧:1. 模块化,提高代码复用性;2. 组件化,降低代码耦合度;3. 使用现代框架,提高开发效率;4. 统一代码规范,降低沟通成本;5. 利用工具,优化代码质量。掌握这些技巧,让前端开发更高效。
35 1
|
23天前
|
前端开发 JavaScript 开发者
揭秘前端高手的秘密武器:深度解析递归组件与动态组件的奥妙,让你代码效率翻倍!
【10月更文挑战第23天】在Web开发中,组件化已成为主流。本文深入探讨了递归组件与动态组件的概念、应用及实现方式。递归组件通过在组件内部调用自身,适用于处理层级结构数据,如菜单和树形控件。动态组件则根据数据变化动态切换组件显示,适用于不同业务逻辑下的组件展示。通过示例,展示了这两种组件的实现方法及其在实际开发中的应用价值。
28 1
|
1月前
|
前端开发 JavaScript 开发者
利用代码分割优化前端性能:高级技巧与实践
【10月更文挑战第2天】在现代Web开发中,代码分割是优化前端性能的关键技术,可显著减少页面加载时间。本文详细探讨了代码分割的基本原理及其实现方法,包括自动与手动分割、预加载与预取、动态导入及按需加载CSS等高级技巧,旨在帮助开发者提升Web应用性能,改善用户体验。
|
1月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
133 2
|
1月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
41 0
|
1月前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。