他入职腾讯一年,放弃和收获的那些事儿

共 6972字,需浏览 14分钟

 ·

2021-07-01 20:53

大家好,我是TianTian

知乎上看到一篇不错的文章,这里分享一下腾讯大佬的故事。

他是谁

大家好,我是海怪,一名前端程序员。2020 年 3 月我毕业了,在 7 月我入职了腾讯。一路走来,到今天 2021 年 6 月,大概工作了一年左右的时间。

文章写了不少,但 99% 的时候都是做技术分享的,很少聊过自己的一些想法。正好掘金这次有一个活动,那就借这次机会给大家聊聊我工作一年的一些想法吧。

学生时代

2018 年到 2020 年是我读研的时间。虽然说是读研,但是心中还是很喜欢做前端的,所以期间一直有在 Github 做很多小玩意。其中,我比较自豪的是跟着一个教程自己改出来的这个 。

守望先锋的 UIyanhaixiang.com


(一直没有做 leancloud 的实名认证了,所以现在网站的留言功能用不了了)

当时放到 v2ex 之后,拿到了 300 多个 Stars,说实话,那会是真的很开心,同时也有点飘了。

面了阿里、字节、腾讯,只有腾讯给了我 Offer。一部分原因是没怎么准备,另一部分原因是当时腾讯给 Offer 太快了,整个人直接起飞了,觉得可以秒天秒地秒宇宙了,结果别的大厂说:好好好,你牛你牛,把你挂了,看把你牛的。


我入职啦

刚入职的时候,一开始觉得好像和平时没什么两样。因为在读书的时候,只要有空就会想一些项目自己写着玩。工作之后感觉只是换了个地方写代码。

而且那个时候我拉手的项目非常的新,几乎什么基建都没有,就是用 React 写的一个管理后台,本地开发一行命令 npm run dev,线上部署 npm run release 就 OK 了,部署的过程就和 Travis CI 差不多。可以说随便找个大学生接手都没问题,写个页面三下五除二就搞定了,真的没有多大难度。

我知道当然 “面试造火箭,工作拧螺丝”,但我心里还是希望公司的项目能给我带来不一样的东西,至少不要弄得好像我在开发自己项目一样。


由于区分不开公司项目和个人项目两种开发模式,而且项目就我和另一个同事两个前端,所以我真的把公司项目当自己项目来玩了:

  • 先升级一波技术栈
  • 把一些恶心的代码能重构就重构
  • 把 AnyScript 统统上类型,直奔 TypeScript
  • 因为之前在大疆实习过,所以想把 Jira 那一套开发模式也搬到这个项目来

当然我也不是完全理想主义者,这都是在业余时间搞的。我那个时候的状态,两个字形容就是:亢奋!。每天晚上都兴奋的睡不觉,一睁眼就是想怎么优化项目代码、结构。可以算是刚入职的兴奋期吧,啥都新鲜、啥都好玩、啥都想搞、也没多大压力。

我把页面搞挂了

npm run release

“怎么白屏了?你发布了什么?”。这是去年9月左右我导师给我发的一条企业微信。

当时是晚上12点左右,我还在打着游戏,我一看手机:woc。退游戏,关电脑,扫上美团单车一气呵成,直接冲回公司看 Bug(一般不把电脑带回家)。一看,原来是后端传的数据结构不对!草!

导师并没有过多责怪我,只是说:1点多了快回去吧,明天早上早点过来做个兜底就好了。虽然我做的是 toB 的业务,用户也没多少个,但是,我还是无法原谅自己,怎么还是像做数学题那样不仔细。

那件事之后,我写代码变得更严谨了:就前期对好接口了,也不再信任后端的任何返回 所有页面,所有操作都要做兜底操作

比如:

console.log(user.info.name)

我可能都要(说实话,有点多余了,但是这件事之后心态都变得更紧绷了)

if (user) {
    console.log(user.info.name)
}

上面是好的一面,但是这件事把我的心态从无忧无虑变成草木皆兵了:

  • 上线的时候如履薄冰,能不上线就不上线了
  • 不想重构了,害怕一重构,直接崩了,崩了又要找我修
  • 加新功能的时候,只要老功能没报错就不改了,只想在原有的基础上拉新
  • 出了问题,只要我不做这功能的,就推给别人吧,怕改了别人的又崩,崩了又找我修

最后,项目也从一个可爱婴儿慢慢变成了克苏鲁的庞然大物。

我放弃了代码的坚守

学生时代的我有着很强烈的代码洁癖,夸张点说,写出来的代码在 IDE 的格式化前和格式化后就没怎么变过。我对空行、空格之间都有着严格的标准,可以说是人肉 eslint(夸张了 )。在和别人的组队时,经常和人争辩“代码怎么写更好看”。现在看来,多少是有点幼稚了。

那到了公司怎么样呢?其实并不怎么样,祖上留下来的代码依然会有 山。所以刚工作三个月的时候,我一直冲在一线和这些恶心的代码做斗争。

重构,重构,还是重构。

然而我慢慢地发现,随着不断有别人的参与你的项目,每个人的代码风格都是不一样,比如我自己喜欢 Functional Component,而有的人就喜欢 Class Component。

而且,很多人对写代码这件事的看法也不是一样的:我自己是想将项目当成艺术品那样去雕刻的,优美的代码是第一要义;而有的人只是因为钱才写代码的,能 work 就完事了;老板则是觉得写出来的代码能给用户提效才是好代码。(这里不能说谁对和谁错,毕竟每个人的自身情况是不一样的,所站的角度也是不一样,强行统一是不现实的。)

当我辛辛苦苦地重构了之后,新加的功能又会把重构好的代码给破坏了;新来的人由于对项目不熟悉也可能打破原有的设计把;新后端也会有新的协议,前端又要写很多冗余的代码来兼容。

一次这样还顶得住,多次变来变去,再加上负责的模块越来越多,我终究是双拳难敌N手。最终,我放弃了自己的坚守。


我不再是那个因为一行代码没有对齐,逻辑没有封装好而感到不安的人。我又一次完成程序员的“黑化”:能不改就不改吧,项目不是能用么?改来干嘛?


在美国读研的时候,唯一印象很深的是一位教授说的:"Business always goes first"。也就是我们常说的:项目永远是要赚钱的。

这位教授之前在美国创立了一个搜索引擎的公司,对标的是 Google。由于他当时太过关注技术了,导致很多技术之外的重要事项,比如财务、法律、招聘等都没有处理好,最后公司凉了。在那门课的最后一节课上,他给我们分享了这句话。

当时的我只是知道了表层含义,但是并没有真正体验过。而在公司里,无时无刻都在实践着这句话。

当我们兴高采烈地提出一个新想法的时候,我导师都会经常会问我们的一句话:“这个东西(优化、新技术、方案)解决了什么问题么?”。对于没什么职场经验的大头兵可能马上拍脑袋说上个两三点,但是作为一个成熟的职场人就知道能完美地回答出来并不简单,要调研非常多的技术框架,看很多文章,再结合项目是否落地,最后才可能勉强凑出一个比较好的“答案”。

我也将这句话送给正在阅读这篇文章的你,如果你有一个好的 idea,多多想想上面这句话,能不能做到毫无死角地回答,然后再去找别人提出自己的方案。

现在回头看看我工作前三个月的那些“努力”:重构代码,优化项目,技术升级等等,其实都不能给项目来很高的价值。性价比低不说,而且还容易出现“改了一个什么东西,别的功能不能用了”这样的场景。

所以,我慢慢地也将公司项目和个人项目“分开”了,不再花 200% 的精力操心公司项目是否完美了,能 work 就万事大吉了。

放飞自我

由于不再操心公司项目了,我彻底放飞了自我:

  • 准时上下班,不再提前到公司做想问题,也不会在晚上加班做优化,将时间全部留给了自己
  • 看到CRUD的需求跟狼看到肉一样,反正上班就是写代码赚钱,做技术能赚钱,写CRUD能赚钱,那为什么不找个简单的活干呢?最好是那种需求还没评审,我心里就把页面写好的那种活
  • 不再愿尝试新技术了,提出一个方案不仅要花很多时间调研、实践和落地,还要说服各方诸侯,对于一个腾讯 5 级的小兵来,别人可能还会笑自己幼稚,算了,写写页面不香么?
  • 不再天马行空了,想想自己就一 5 级大头兵,做好“本分”就可以了,新技术还是自己玩具项目里玩吧

看起来我“黑化”了,但是我生活过得真滋润啊。

首先,没有那么多的烦恼了,所有公司项目的问题,只要到了下班铃声响起那都不是我的问题,就算是我的问题,那也是我明天才能处理的问题。

不再是老实人、和事佬,变成搞事佬。敢于把问题上升和下放。处理不了的就让上级处理,不是自己 own 的功能就转给对应的 owner 去修 bug。

更多的个人时间了!。由于准时上班班,我的时间多了不少。把之前废弃的 个人网站 又更新了一次。


开始写停更了很久的技术文章了。上半年到现在已经写了17篇文章了,冲冲冲!以前一直用简书来写文章的,现在回过头来一看,哇,原来已经写了这么多东西了。


后来,我慢慢开始在更多平台开始更新自己的文章了。

比如 以前曾使用过的掘金 和 一直用来看段子的知乎。

有空了还写一些沙雕玩具项目,比如这些:

  • 字符画蔡徐坤
  • tenet-逆向写代码的VsCode插件
  • 一只可爱的香蕉
  • 一个旋转立方体
  • 单测驱动的文档生成器

虽然心态上放飞了自我,但是在工作的时候还是要严格要求自己的。工作时专业,下班后生活

而且我还发现一个神奇的事情:下班不想工作的事情后,一旦回到工作上,效率就变得非常地高。有种很久没玩游戏了,一玩就5杀的感觉。

工作上精进

有人就会问了:那就没想过工作升迁的事么?当然想过!

上面说到刚工作的我做了很多无用功,其实我是知道进入公司老板看重的是“结果”,但是我并不清楚这个“结果”指的是什么,要怎么展示这个“结果”。直到今年才慢慢感觉出来关键在于两点:敢秀会秀

千万别上来就秀技术、秀代码、这个图那个图的。最好围绕着:解决了什么问题、方案的理论、如何落地、落地效果 这些方面来整理出一篇总结。然后再秀出来。

用 Redux 举个例子:

  • 项目背景:目前我们项目用的组件还是通过 props 和 onXXX 回调来进行通信的,当出现兄弟组件通信的时候,就会出现大量冗余的 props 数据。如果子组件很深,就不得不把状态当传家宝一路传到底,很麻烦
  • 解决了什么问题:Redux 可以高效地实现组件之间的通信,不要传家宝,不要回调和 props
  • 理论基础:通过事件发布-订阅的设计模式实现状态监听,当数据状态改变时,重新渲染组件
  • 落地:使用 redux 和 react-redux 两个库进行配合使用
  • 落地效果:减少了x% 的冗余代码,等

工作中尽量做到最好,给不给提拔和升迁的无所谓,没有很激进,属于佛性青年。那难道我就不怕被亏待了么?emmm,也怕,所以我对公司会比较“吝啬”:无论项目也好、做了多少开源也好,升了多少级,我觉得在公司做的事都是公司所有的。只有自己记录下来了才是算自己拥有的。换句话说:当你离开了这个公司,你能带走的只有自己沉淀出来的东西

所以,当做技术需求的时候,我都会写博客去记录下来,无论分析源码也好、盘一盘文档也好、哪怕做个小 Demo 发到 Github 上,都一定要做输出,因为只有输出了,这个技术才真的属于了自己。

当然,也不要为了提高自身价值而浪费一次展示自己的机会。如果有好的技术需求,除了自己写博客之外,也要 大方地秀出来

这一步我自己也慢慢学习,毕竟国内还是比较倡导“低调”,“内敛”,而且在程序员里更是有文人相轻的缺点。不过,我也会用《当幸福来敲门》的这段话来鼓励自己:


别人找工作找得连棺材本都没了,我还怕个啥。

这么努力工作为了什么

上半年的时候,我也经常疑惑:这么努力工作为了什么?

如果我要在工作上有所成就,就必须要花业余时间来想怎么优化项目,提出更好的解决方案。而提出方案又要联合部门,又要征求上面同意,又要搞汇报,听着就很麻烦。而且成功率还不一定很高。有时候还要看老板的方向,要是不重视这个了,搞这么多意义也不会很大,还不如写个 Demo 放 Github 上赚一个绿格来得爽。

做出来的努力还要让上级老板们的认同?那我不成跪着要饭了吗?


要这么说,我之前的状态还真是跪着要饭的:自己努力优化、提方案啥的、为项目忙前忙后,只为了在老板面前秀一把,然后还没秀成。

所以上半年有点懈怠了,老想用个人时间搞点事:要不学学别的技术,不行啊,比如学好了 Golang,但是在后端领域依然会是个菜鸟。要不有前端精进吧?同样的,就算学了个新技术也没有落地场景,做出来依然是小打小闹的 Demo。还不如花时间在工作上,有落地场景、也有大佬支持,收益会更多。所以,最终大部分的时间都花在写文章和打游戏上。

想站着也把钱铮了,还得回归到这个问题上:写代码的意义是什么?

写代码的意义是什么

好吧,我也不知道写代码的意义是什么。

无论我写小项目、写文章、学新技术目的看起来都是为了提高自身技术,那提高技术的意义又是什么呢?以前可能就是为了好玩,反而现在有点想不通了。

第一个想的就是为了钱,要生活嘛,不寒碜。


真正让我想通的还是因为那次看了一份源码:还记得上面我说到,曾经把一个页面搞白屏了么?为了解决这个问题,我看了 React 的 Error Boundary 章节,发现了 react-error-boundary 这个库。

那一天,我鬼使神差地点进了它的 Github,源码只有一个 tsx 文件。我大概看了一下,发现:woc,我竟然能看懂!源码好像也没我想象中这么难。

之后,我结合了马保国的梗,写了一篇《造一个 react-error-boundary 轮子》。


虽然我并没有指望这篇文章能大红大紫,但是觉得把看似复杂的源码用简单的话术说出来就很爽。

后来,下班的时候我就研究公司项目 package.json 里的一些 npn 小库,然后总结了 10 个 npm 轮子的从 0 到 1 的源码实现过程。然后,我把这 10 篇文章编成了一本小书,所以就有了 《一天学习一个 npm 轮子,十天后变成轮子哥》 这本小书。


目前来看,反响还不错,有 1.1k 的 Stars,对于我这种没啥名气的作者来说已经很知足了。

找到写代码的意义

最初我是在简书上写文章和博客,只是为了怕自己忘记才记录的,看我简书上的关注量就知道了,没推广,也不互动,就算现在简书走下坡路我也没管。那个时候我心里还想着:“我都是乱写的,千万不要关注我啊,我只想记录一下技术和生活而已 ”

我知道自己水平一般般,永远变不了大神,也不想变成大神,因为我觉得生活不应只有代码。代码仅仅是一种实现 idea 的工具。就像视频剪辑技术,没有好的 idea,就算神剪手也不能让视频爆红。

技术的高低并不重要,它所服务的内容才是最重要的。所以,我希望可以一边提高技术的同时,也能 Carry 一波新人。 目前已经把所有平台的更新都恢复了,可以关注一下哦~

  • 知乎-海怪
  • 掘金-海怪
  • 简书-会写代码的海怪

Bilibili

到了今年的 5 月份,另一个东西走进了我的视野:Up主。回到国内开始看 B 站了和关注一些 Up 主,刚开始没有什么想法,就是图一乐。当我看到程序羊的时候,感觉太亲切了。


没有培训班的啰嗦,没有中年大叔的油腻,只有分享的心。他在视频里曾说过一句话:

程序员能在网络中发声,说说话是一件很美好的事情。

我深以为然,很多程序员都只是埋头苦干,很少在网络和一些自媒体去发声、刷存在感。网络上大多数的“程序员”几乎就是培训机构了。反观 Youtube 上面的一些程序员,他们的视频都是很有个人特色和分享精神的,比如 techlead, joma, clment。那要不我也做个 Up 主来玩玩?

在今年 5 月,我开始了我的 Up 主之路。学 Final Cut Pro,想标题,想封面,写稿子。虽然每次搞这些都很辛苦,但最终把视频导出来的那一刻,我似乎找回做完大项目的那种成就感,真的好玩!

所以,我冲了!除了文章输出,以后还会做一些视频输出。

结语

从毕业到真正的工作,我放弃了很多不切实际的幻想,也收获了不少东西。总结一下吧:

放弃的东西:

  • 不再早来晚退。到点上下班,把更多时候留给自己
  • 不再埋头搞自己的事。知道做这件事的意义是什么,多汇报、多秀、多沉淀
  • 不再抱怨 山,每个人都有自己的情况,严于律己就可以了
  • 不再把公司项目当工艺品来雕刻,产品应该以赚钱为主
  • 不再为公司项目献身,适当的放松有利于高效的工作

得到的东西

  • 懂得一些做事方法论:会想这件事能解决什么问题,意义是什么,再决定要不要做
  • 懂得沉淀的重要性:做完之后,必定有沉淀、必定要汇报、必定要秀一下
  • 找到写代码的意义了,文章输出和视频输出
  • 得到了更多的个人时间
  • 知道了语文的重要性,所有的分享、文章、写稿都离不开语文
  • 收获一个放松的心情
  • 变成了一个 Up 主

这次个人分享就到这了,希望各位还在学校的学弟学妹们拿到满意的 Offer,在工作的老哥步步高升,手动❤️

腾讯前端程序媛的「大厂炼成记」

2021-06-25

在腾讯工作是怎么样的体验

2021-06-23

我毕业了

2021-06-17


最后


对团队感兴趣的话,可以加个微信。
无论是否考虑跳槽,交个朋友也好。



喜欢这篇文章?点个“在看”吧~▼

浏览 66
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报