入职字节一年之际

July 22, 2021

前言

2020,时间分分秒秒逝如朝霞,回首四年的大学生涯,如白驹过隙,又仿佛昨日之景涌上心头,但新冠疫情的到来终究是给青葱岁月画上了残缺的句号。

上半年显得不存在似的,我想也是很多人的心声。

从 2020 年 7 月 22 号以校招身份入职字节跳动至今,一年期已满。

时至今日,我用文字记录下我的心路历程,希望带给初为职场人的同学们一点浅薄的经验,同时勉励自己,Always Day 1.

初入字节

领到属于自己的 16 inch MacBook Pro,望着 4K 显示器,吃着免费三餐,这无疑是每一个校招生都心心念念的工作环境,而在 2020.7.22 那天,这一切都实现了。

我加入的部门属于 Lark(飞书)下的一个业务部门,Base 杭州,负责 Lark 桌面端的用户增长(User Growth)。

在前两个星期,mentor 并没有马上分配我工作上的任务,而是让我自主学习,熟悉团队工具链、规范、代码仓库、企业文化等等……

在这期间,我给团队内的同事们宣讲了我的 TypeScript 学习笔记,反响不错,这给了我很大信心,也奠定了我热爱 Typescript 的基础。

更有意思的是,那段时间正值 TypeScript 官网改版,老文档都重写了,还算比较细心的我发现了文档上的一个笔误,于是给 TypeScript 的团队提了一个 PR,一天后就被顺利合入。那一刻,我的心情是无比激动的,自己也能为明星开源项目贡献出自己的薄弱力量。

随后,我参与了职场生涯第一个项目,为一个管理系统新增功能,难度不高,算是体验一下部门的开发流程,有点新手上路的感觉。

总的来说,入职的第一个月四平八稳,对日后也是充满期待。

渐入佳境

在 2020 年的下半场,我开始接手 Lark 的正式需求,头一回体验到了 B 端项目的严肃性,PM 和 UI 对功能完备性和界面还原度非常严格。

在一次大型需求中,我被提了 10 个以上的缺陷,质量堪忧,从此让我心目中亮起了红灯,细节的重要性不言而喻,人们常常由于过分自信而产生不必要的过错。

作为一名前端工程师,我没有百分百还原视觉同学的设计稿,由于疏忽造成了颜色色值和间距大小的误差。这点需要完全杜绝,开发有绝对义务对设计稿负责,对自己开发的产品负责,特别在前端层面,直接和用户打交道,就算 1px 的误差, toB 产品就会差之毫厘,失之千里。

在修复阶段,没有和设计、产品同学进行一对一沟通,只会盲目地去修复样式问题,而不知道优先和问题的提出者进行沟通,共建解决方案,再投入开发。所以养成沟通、协作的习惯是基础功,工作并不是单兵作战,一意孤行。

其实我本身不怎么喜欢写文档,特别是工作上的文档,什么 XX 方案、XX 总结、XX 计划,在我看来,除了教程文档,其他简直是滑稽之谈,难道一个人的能力是靠写文档来表现的嘛?但字节的氛围是十分推崇“飞书文档”,因为此事,我的 mentor 还语重心长得和我说,“你不写文档,怎么让别人知道你在做什么,怎么突显你的产出,难道有人会一行行看你写的代码嘛!”

或许还带着刚出校园的书生意气,当初的我不以为意,但现在慢慢感受到这句话的分量,抛开那些假大空、用技术辞藻堆砌、向上管理的文档之外。面对一个需求或是技术项目,编码前的文档能有助于我梳理上下文关系,“架构”设计优先,提前发现问题所在,避免直接提起袖子就干,像只无头苍蝇。编码后的文档能帮助后人,同时是对知识的沉淀归纳。

11 月末,Lark 因为内存占用过多,进入 Native 改造时代,将原来的 Electron 架构替换为基于 Chromium 的原生应用。我首次作为项目 Owner,制定迁移方案并落地,帮助团队其他成员快速的了解和掌握新架构下的开发方式和规避坑点,期间让我感触最深的不是技术上的难点,而是和 Lark 基础架构的同学进行频繁沟通,反馈他们提供接口的缺陷和敦促他们开发新的 API 以适应我们部门业务场景。相应地,展开针对各模块的回归测试,确保在改造的同时,不会对原有业务代码产生影响。

茫茫职场

在 2021 年的上半场,是我入职以来,最为迷茫的一段光景,因为部门业务量的减少,大家开启了“内卷模式”,且大多需求千篇一律,没有挑战性,都是反反复复对一个功能点做 UI 上的变动。究其根本,Lark 在办公软件领域还在处于发展阶段,用户增长模块处于边缘业务,维稳现状的前提下做小幅度的优化就意味着成功,何况需要投入一个完整部门的精力去参与。

这意味着平日在公司的时间过得十分缓慢,以往繁忙的时候一眨眼就到下班的点了,感觉十分充实,现在却要掐着点看几时下班。

Leader 开始在部门内推行中台系统,这是一个纯技术项目,从后端到移动端再到前端整体的一个架构升级,为了适应需求迭代和提升内容动态性,让其他业务方能快速接入部门的 SDK.

但在我看来,这是脱离了业务场景,因为部门内的一系列原因才诞生的项目,具体原因见仁见智。

还有一件事情,就是部门的组织架构变动太过频繁,从我入职至今,光是部门名称就发生了三次更替,接手的项目也如过眼云烟,始终看不到组内的核心项目在支撑,最后一次架构变动,发生在四月份,直接脱离了 Lark 体系,归并到公司内部正在使用的项目管理平台去做协助,并且办公地点也从原先的大楼搬到了另一个地方。

种种因素,我一度萌生了想要离职的冲动,但我必须冷静,寻找出路。就在此时,戏剧性的一幕发生了,一次偶然的机会,遇到了大学的学长也在字节工作,并热情介绍了他的部门,表示求贤若渴……

选择转岗

考虑再三后,我最终向 Leader 表明了我的转岗意向,虽然 Leader 语重心长得说道:“确定不再考虑考虑,之前部门业务确实比较空泛,能做的事比较少,但新业务有许多立项正等着去开发,挑战性也是有的……”。

诚然,我不知道这是客套话,还是发自肺腑,我只知道开弓没有回头箭;我不知道转岗后发展如何,我只知道当下如坐针毡;不管如何如何,我在脑海自言自语道:“自己做的选择,无怨无悔”!

新部门依旧 Base 杭州,归属于 TikTok 大部门下,在经历了 2020 年的海外短视频风波后,海外直播处于新兴阶段。

主要业务依托于 TikTok 直播,每双月策划几场大型定制化活动(需专门投入人力开发排期),其价值是利用活动的一些机制玩法刺激用户/主播去充值送礼,创造营收。除此之外,还有许多普通级别的活动,这类活动一般玩法较固定,因此页面结构和逻辑也相对固定,由运营和 PM 通过我们的搭建平台自主生成页面。

在核心业务的带领下,能预感到有许多 Challenges:

  • 定制化活动的技术沉淀,性能调优,监控上报,保障线上质量和用户体验
  • 搭建平台的迭代优化,从 Schema2Form 到可视化编辑再到自由画布,利用工具解放开发者
  • 不同于传统的 Web 应用,前端页面是借助于端内的 WebView 进行展示,通过 JSBridge 调用客户端方法,能涉及许多跨端知识

这些都是我不曾了解到的。

不巧的是,我刚来新部门一个星期,部门名字就换了,据新 Leader 的说法是正常的组织架构调整,但人员分工,部门业务是不变的。

让我不禁感叹道:世界上惟一的不变就是永远在变,想到曾经校招时,芸芸众生还调侃阿里的企业文化 - “拥抱变化”,特指面了好多轮终成备胎,现在想想,一语成谶。

Git Commit History in 2021

这是公司 GitLab 上的提交记录,中间有一部分颜色特别深,是我用脚本跑的……

做一个“攀登者”

眨眼来到了 7 月份,转岗已近三个月,在这段时间内,我主要投入了两场针对多国家的大型活动,PV 累计高达亿级,打下了面向 C 端大型活动的基础,从书写技术方案到组织排期、从开发到提测、从 local 走查到凌晨 2 点准时上线,都让我充满新鲜感,挑战性,流量如此之大的业务项目也成为了我可以诉说的资本之一。

期间,也发生了许多让我记忆深刻的事,比如活动上线后监控十万级别的报警,紧急排查原因;Webview 在 iOS 和 Android 上表现不一致,踩了许多坑;对性能的高标准,FMP 要求低于 800ms……

此外,我还参与了跨端的需求开发和 monorepo 基础工程的优化,Node BFF 和 Koa 中间件也有所涉猎,受益匪浅。

曾几何时,多少校招刚出来的同学梦寐以求加入各个公司的基建部门专门从事技术领域的开发,我也不例外,但毕竟事与愿违,多数同学还是投身于业务开发,逐渐,我意识我身处在一个妥妥的业务部门,且与营收直接挂钩。

多数人觉得业务部门疲于应对业务,得不到实质性的成长,这个观点不可否认,但凡事要从辩证的角度观看。

我一直坚信技术诞生于业务,再反哺业务,相辅相成,缺一不可。即使在技术组,如果造的轮子没有业务方使用,那也属于闭门造车,无法带来成就感。

技术对于研发的重要性不言而喻,刚入职场前三年,更是精进技术的黄金时期,无论是在技术或业务部门,我期望每个人都能寻找属于自己的高光时刻,追求的方向。

对于互联网行业,年轻的永恒优势就是试错,如果学习不到东西或者感到上班充斥着失落感,人生苦短,换个方向换份工作,何尝不是一种最优解。

最近在看一本书《逆商》,里面以登山为例,将人群分为三类:放弃者、扎营者、攀登者。

放弃者过的是妥协让步的生活,他们放弃了自己的梦想,并选择了他们眼中更为平坦和轻松的道路。当然,说来讽刺,随着生命慢慢流逝,放弃者遭受的痛苦会比当初视图通过停止攀登来回避的痛苦要深刻得多。无疑,他们回首惨淡一生的命运的时候会极其痛苦。这就是放弃者的命运。

与放弃者一样,扎营者也过着妥协让步的生活。两者的区别在于程度。他们厌倦登山了,于是就说:“这样已经够好了。”浑然不知自己会为此付出的代价。扎营者以为可以维持现状,而且为此就不去做可能做到的事。

攀登者没有虚度人生,他们对于自己所做的事怀有强烈的使命感和热情。他们知道如何体验喜悦,把喜悦看作登山过程中收获的礼物和奖赏。攀登者知道峰顶可能难以到达,因此从未忘记旅途带来的力量比终点更重要。

写在结尾,愿自己能做一个攀登者,借助变革带来的挑战成长起来,并欢迎一切可以使之向上走、向上冲的机会。


Written by B2D1(包邦东)