总结工作后的第一个十年
初次参加工作是在 14 年的 9 月份左右,作为一名 18 岁的 java 工程师,看到浏览器中加载的站点、手机中的应用、点击按钮后的每一个 loading,背后都有一群人在支撑,很期待自己也会成为其中一员,同样也在担心自己掌握的技术是否能够应对工作?会不会出现身边人在各方面都碾压自己,完全追不上其他人?
带着这样期待又不安的心情,加入了人生中的第一家公司。
迷茫的前两年(2014 ~ 2016)
第一份工作是一家比较特殊的公司,我本来预期会是做手机应用或 Web 站点,但实际上公司全部都投入在一款产品上,实现了一批“组件”,搭配一个自研的平台来对组件进行拖拽生成 Web 站点,有些像前几年火的低代码。
以 java 工程师的身份加入的公司,但发现实际工作中很少会接触到 java,更多的是在做前端工作(当时还不知道这个称呼,单纯和 java 开发预期产生了差异),来维护一个个的组件,刚开始是非常抵触的,因为我并没有学过这些,而且一直做前端工作担心会让自己在 java 方面的技术退步,也无法有经验上的成长。
但随着对前端了解越来越多,发现前端也还是蛮不错的,通过 chrome 浏览器能够方便的进行调试、还有各种花哨的编辑器(sublime、atom),对比 java eclipse 那种改个代码重启都要分钟级的体验要好太多,所以逐渐也就接受并喜欢上了这些事情。
这家公司是非常小的创业公司,除了 ceo、技术经理单独一间房子,剩下的就是其他人在一间大的房子里分为研发、QA 两个团队,因为提供的产品是以客户端为产物的,发版也是非常有规律,作为员工也每天过着 8:30 ~ 17:30 的规律生活,在公司一年中唯一的一次加班是让大家干到了 20:00,很少会感受到工作压力。
但小黄人总是会觉得舒适是原罪,这样朝九晚五的工作方式会让人废掉,于是动了跳槽的念头,发现我在工作中所做的内容有一个官方的工种:前端工程师,跳槽就奔着前端工程师的目标去了。
于是托人做了第一次内推,印象深刻,那家公司名叫做:正益无线,结果第一次面试就失败了,以为当时工作中用到的技术就涵盖了前端领域,自信满满地去面试,结果一道题没答上来,还记得面试官最后深吸一口气,在草稿纸上花了一个圆圈表示图片,右侧有几行文字,问我应该怎么用 CSS 来实现,当时一脸懵逼,因为在之前工作中接触的更多是组件,样式也都是看组件暴露了那些 API 就用哪些,在实际场景下去利用 CSS 解决问题是我从未接触过的,结果也可想而知,回去等通知了。
经过这次失败后我没有再找人推简历,因为发现自己对于前端领域来说所掌握的知识是非常少的,所以开始在工作之余自学:去翻一些前端的书籍、找一些 H5 模版站扒下来看是怎么实现的、还有就是去博客园翻看大佬们的博客。
在看博客时发现一位博主写了很多前端领域相关的文章,收获非常大,而恰好看到博主签名挂了一个 QQ 群,于是就加入了这个群,为了满足入群的门槛还特意注册了 GitHub、写了几篇博客,最终成功打入群内部,这个群成为后续学习的关键来源。
在第一次面试失败后的几个月,我自认为已经有了一定的基础,所以开始在智联投递简历,最终收到了一家公司的邀约,这次非常顺利的通过了面试,以一名前端工程师的身份加入了该公司,但命运依旧在和我开玩笑,新的公司招聘前端的原因是之前的前端跑路了,留下的是一大摊子的事情 + 一个美工出身的同僚。
还记得入职第一天,用 :first-of-type
帮助同事解决了一个排行榜 margin-top 溢出的问题,在内心安慰自己:“可以了,至少你现在在做正常的前端工作了”。
但随着后续几个月的时间里,我发现这家公司对于前端工程师的定位并不是如我预期的,甚至多次帮助客户端的 RD 做了几次从 PS 中切图的工作,但好在工作时间依旧稳定, 9:00 ~ 18:00,有着充足的时间可以研究自己想做的东西,成功的把 less 应用到了老旧工程里,让开发变轻松了不少,期间自己做着玩的一个拼图游戏还被当成一个日活小游戏放到了公司的公众号上,好像日子也还行,直到和作为 java 的老板在技术方案上出现了冲突,最终老板:“我就想要这样的”,这种毫无道理的决策让我感到无力,于是又动了跳槽的念头。
而在之前提到的 QQ 群,群主刚好在群里发消息招人,有不少群友都推荐我去试试,最终犹犹豫豫的把简历投了过去,当我从一家传统企业的格子间工区去到互联网公司面试时,目光所及之处皆是青春与活力,墙壁上贴着公司相关的绘画、涂鸦,休息区、茶水间等设施都是之前从未见过的,大家三三两两的坐在沙发上讨论问题,甚至还有台球桌、 XBox 体感游戏机等娱乐设施,这种氛围让我觉得像在做梦一样,而且面试过程也是比较顺利的,还记得最后 CTO 来面试问了我一个问题:“你想用技术做什么事情?”,我当时的回答是希望能够做一个远端随时同步的记事本,方便记录一些事情(虽说最终也没有实际去做 🌝)。最终成功加入了该公司:Blued,至此结束了我接近两年的传统软件行业工作,成功搭上互联网快车。
可以说在工作的头两年,在职场新人的迷茫期中确定了自己的职业发展方向。
在互联网环境下野蛮生长(2016 ~ 2020)
在加入互联网的第一个门槛就是:我没有用过 macOS 😂,好在之前有个同事经常带自己 MacBook 来上班,就找他借了两天,不希望出现到了公司之后还要请教别人如何使用电脑这种尴尬的事情。
因为是通过群主内推的,所以在入职之前已经在沟通很多事情了,也布置了很多作业,比如对 react、koa、express、redis、mysql 等技术的了解,所以在入职之后也非常的顺利,开启了自己的互联网之旅。
在 Blued 的几年留下了太多有趣的回忆,也收获了非常多的友谊,会陪伴自己走完下半生的队友也是在这里找到的 🥰。
入职第一天发生了一件趣事:在前台等着人来捞时,前台突然问了一句:“你好,是来做检测的吗?”,我:“啊???”,后来才知道这是公司比较重要的公益项目。
入职互联网公司后的氛围感让我一个从传统软件行业过来的人觉得非常棒,身边不会再有 X总、X老师的称呼,CTO 也和你在用一样的工位,随时可以去找人问问题、沟通事情,每个月都有 CEO 主持举办生日会,在这个场合还会让期间新入职的员工一一介绍自己,身边的一切都在向我表达:什么叫做扁平化。
虽说互联网公司的工作氛围是非常轻松愉快的,但工作内容实打实的带给我了压力,因为 16 年刚好是直播爆发增长的时间节点,Blued 也在不久前上线了自己的直播功能,App 功能的迭代是非常迅速的,入职第一周只是帮老板写了一个邮箱召回页面,而第二周就去参加版本需求评审会了,要完成几个页面的开发,数据接口由老板提供给我,而到了一个月左右的时间,新需求的页面 + 接口全部都被交给了我自己去实现,这种快速的节奏是我从未感受过的。
因为 Blued 在探索直播时使用了 Node.js 作为 server,所以后边理所应当的放到了我们团队来维护,同时 H5 也都是采用的 SSR,因此工作中不可避免的接触到了 Node.js。
同时也借着这些工程,第一次接触到了工程化,当时工程内处于 grunt、gulp 并存的状态,在不久的将来,工程构建又被升级为了 webpack,也是经由这些工程能够有场景实际使用 React 来进行开发,同时第一次接触到了工程上线,虽说只是使用 shipit 实现了 scp + pm2 restart,但这依然让我从一个之前只通过 svn 交付 html 文件的人感到新奇。
在 Blued 是我第一份不需要单打独斗的工作,第一次加入一个前端团队,团队的好处在于可以相互学习,帮助,总是能够从其他人身上发现亮点,也会有人帮助你 review 避免在错误的道路上越走越远。
在加入一年左右的时间,团队迎来了变化,两位大佬相继离开去了阿里,随之而来的就是他们所维护的 node 服务被交接到了我这边,被迫接手一些 node 0.x 的工程,从这个节点开始工作重心就变成了 node.js,很有趣,工作四年兜兜转转又写回了服务端,初接手时整个人是懵的,但也正是这些交接过来的服务给后续的发展提速了。
因为负责的服务是直播业务,算是公司最重要的业务场景吧,体会到了什么叫做 7 * 24 小时待命,曾有一次凌晨被手机震醒,因为接口逻辑的不完善导致跨天后报错了,第一次出故障的心情是非常糟糕的,人坐在床上浑身出汗,空调开到最低温度也无法让自己冷静下来,当修复故障后发现群里老板、CTO 等一众人都在等着反馈,这种压力是我从未感受过的。我日常手机都是开静音的,从那之后每天都会在睡前将手机开启声音,避免漏接重要电话。
在 Blued 也许是技术成长最快的几年,这一切都离不开老板的信任与支持,给了我太多的机会去尝试,去犯错,去成长。我们一起从 React 到 Electron 到 ReactNative,从 JS 到 TS,node 从 0.x -> 4.x -> 8.x,老板持续的鼓励也极大的提升了自身的成就感,曾有一次对接口耗时的优化方案总结,老板推荐给了 CTO,后又被 CTO 转发技术部评价【他山之石 可以攻玉】,得到认可的感觉非常好。
公司带给我的也不全是技术上的成长,还记得唯一一次找 CTO 的 one one,我向他表达了对于一直写 node 没有再投入到前端的担忧与困惑,他告诉我:”你首先是一个工程师,其次是一个前端工程师,技术是用来解决问题的工具,不要将自己局限在某一身份下”,这段话一直陪我走到了现在,从初入公司的一个菜鸡前端到离开前已经是一个合格的全栈工程师,非常感谢这份工作带给我的成长。
但天下没有不散的筵席,一方面是因为在技术上没有办法找到更多可以做的事情,另一方面也是因为打算要和队友结婚,而公司有规定不接受夫妻在同一家公司(甚至恋情也没有和同事们说过的),恰逢疫情开始,大多数公司的面试都改为了线上进行,所以在期间面试了一些大厂,在互联网呆了几年之后,希望能够从成熟企业里学到更多体系化的知识,来看看发展到成熟期之后的企业工作方式是什么样的。
所以在通过朋友的内推,加入了滴滴,来到了传说中的西二旗,码农的后厂村。
初入互联网的这几年可以说每年的成长都在加速,从一个普通的前端研发到全栈开发再到公司核心服务的服务端研发,这一路走来成长非常的大,但最明显的代价就是晚上不吃褪黑素再也睡不着觉了。
进厂感受成熟企业的工作方式(2020 ~ 2024)
当我带着一身的全栈本领来到滴滴后,发现新公司对于我的要求并不像我预期的那样,仅仅是完成一些 vue 页面的开发工作,而且服务端也是由其他团队来提供能力的,这让我觉得发挥非常的受限,而且来到滴滴后会发现大家对于“职级”会看的很重,滴滴是公开职级的,当在群里问一个高职级问题时,会发现他回复的非常慢,甚至可能会不回复,而当他找你时又多以命令的口吻,此时我就有了很强烈的落差感,再加上工作内容并不是我感兴趣的,所以没多久就又进行跳槽准备了,这次就非常的保守,对于目标岗位会多进行调研,确保工作内容是符合预期的。
在这期间陆续面了奇舞团、百度、字节,除了字节没接好水以外,其他面试都还算比较顺利,机缘巧合间,之前 blued 的前同事在快手,找他帮忙看看机会,恰好发现有一个专门的 Node.js 岗位,心想这挺好,总不至于再让我写 vue 了吧(实际上入职之后还是写了几行 😭)。最终选择了接快手 offer,因为是唯一一个三面面试官看了我博客并问相关问题的,给足了尊重。
在滴滴的时间很短,因为滴滴对疫情的政策非常敏感,别人正常他 AB,别人 AB 他居家,别人居家他这周都居家,导致我呆了一个多月的时间可能也就去办公室五六天的样子吧,对于大厂实际上是没什么感受的。
而来到了快手之后,真切的对于高福利大厂有了新的体会,20年刚去公司时候正是互联网的高光,接近十一点的西二旗地铁站都还算是早高峰,公司因为发展迅速,导致很多老铁都没有固定工位,我入职也是坐了老板的位子临时办公了一段时间,大厂的福利也给了我很大的冲击,三餐免费、下午茶、健身房,甚至园区内部有自己的星巴克、罗森,虽说工作地来到了五环外,但给人的感觉像是进了城,团队规模也是达到了新高度,前端大群有接近千人,甚至超过了我之前所在公司的总人数。
在加入大公司一段时间之后,我觉得相对于小厂来说,大厂对于员工的广度要求并没有那么高,因为内部存在很多的成熟解决方案,很多时候只是做一些工具的整合就可以实现需求,好处就是你的知识体系会相对聚焦,但坏处也很明显,你的很多知识体系是建立在特定公司基础上的,如果换一个公司、平台,经验有可能就会失效,所以就会需要自己有更多的主动性,多去了解那些工作中不必关心到的细节,这样对于自己来说才会有更多的成长。
在行业高速发展的过程中,公司状态基本上是处于基建在追着业务跑,业务场景总是一次次的突破基建的极限,恰好我加入的是基建团队,有幸参与了一段时间公司内基建的发展,对于公司内整体基建建设也有着更深入的了解,这在一家成熟公司是很难得的机会,毕竟大部分研发岗位都是在堆业务、使用工具,很难有人在堆业务的同时还有精力去学习基建的设计方案、发展背景等等。
而随着时间的推移,一系列大事件的发生:公司上市、疫情结束、教培行业整顿等等,最终降本增效成为了公司的主基调,此时公司内不会再大搞基建,更多的目标是活下来、证明价值。高速发展的过程其实会掩盖很多的问题&风险,而现在这些问题都变得更加明显,所以一系列的福利政策调整、人员优化也都落地了,向外看整个行业确实都是如此,只是不同的“船”抗风浪能力不同,沉没速率不同罢了,所以在公司发展降速之后并没有选择离开,而是“拥抱变化”,工作重心也从向外探索新事物转到了向内打磨已有能力。
就在这个降本增效的过程中,虽说架构、人员调整,很多业务团队没有额外精力再去维护基建,我作为基建团队的成员扛下了公司 npm 系统的维护工作,花了一年多的时间来将一个饱受质疑的系统打磨成公司内评价较高的系统,稳定性和安全性也做到了比较好的程度,事后来看这是一个非常好的证明自己的机会,而自己确实也抓住了这次机会,通过 npm 系统证明了自己的能力。
在快手这几年我个人觉得还是比较顺利的,各种条件组合下,总是有机会出现在自己的眼前,每次也都能比较好的抓住,再加上老板的重视,所以整体绩效都还是蛮不错的,参与了两次晋升也都顺利通过了。