毕业三年后,我离职了

很高兴见到你。

时间真的过得好快呀。想想我写的第一篇博客的时候,还在努力找实习中,当时因为实习面试通过,激动了特别久。而转眼间,我已经要准备离开这家公司了。

从毕业到现在,已经在这家公司待了三年多了,如果算上实习的时间,已经有4个年头。甚至我在组内的时间,比大多数人都要长,也已经是组内的"老人"了。

大家都说,对于毕业的第一家公司,感情都会很深,很舍不得。这是会的,而且毕竟在这里待了三四年,多少都会有点不舍,一起工作了这么久的同事。

这篇文章作为我在自己这几年来的回顾和纪念,也希望能给到刚进入职场,或者准备离职的读者一些信息,写到哪算哪,我们开始吧。

离职

我大概是从去年开始有换工作的念头,到今年年初开始找工作,原因的话,更多的是一种焦虑,焦虑成长速度、晋升空间。

说实话我并不是特别想走,在当前的团队,做的也还算舒服,强度不高、老板照顾,因此在找工作的时候,我也只是抱着一种锻炼一下、试试水的心态。在maimai上改了状态之后,陆陆续续有hr找过来,最后决定先投一下字节的部门练练手。

刚把简历投过去没多久,就被我在字节的朋友看到了,然后过来问我要不要去他们部门。经过一番沟通之后,发现他们的部分其实和我的履历算是比较契合的,因此也就决定好好准备一下面试他们部门。

之后大概准备了一个月的时间,复习了一些计算机基础,刷算法题,还有对已有的工作经历进行总结。这段时间刚好我在现团队的事情变得很少,得以有比较多的时间来做这些事。

面试一共分4轮,三轮技术面和一轮HR面。一面主要是基础知识,也就是八股文,顺带问一点项目;二面主要是了解项目内容;三面会问的比较深,看看我们目前的天花板在哪;HR面就是常规的那些问题了。

通过面试之后聊薪资,发现和我最初的预期差了很多。也发现现在换工作的涨幅普遍都控制得很严。这时对我自己all in一个岗位,以及没有好好认真对待找工作这件事开始有点后悔。由于没有其他的offer,去找hr argue几乎是不可能成功的。

最后思考再三,为了换取一个更大的成长空间,还是选择接下这个offer。

这几年我都做了什么

首先介绍一下我们组的工作内容。主要是做多媒体能力的开发,可以类比一下剪映,负责创作端开发。如编解码、渲染、调度框架等,负责做特效渲染、视频剪辑合成等功能。整体的架构大概如下:

按照时间划分,我在组内的工作一共可以分4段:实习、第一、二、三年,每个阶段做的事情都不太一样。


实习的时候刚来组内,其实能干的事情不多,音视频能力也接近为0,大多数的事情我都无法上手。所以如果你是一个在校生,一定要注重好计算机基础的学习,这比去学所谓的新框架更加重要。此时我只能在师兄的引导下,做框架层一些流程上的事情,配合做一些框架流程的优化等。这个阶段主要以学习为主、干活为辅。我阅读了组内调度框架以及渲染原子能力的大部分代码,学了C++、openGL等,并重新用自己的方法重新写了一个简易版作为我的毕设,以此来更加深入理解我们组内的模块。

这个阶段其实是比较不错的。通过阅读代码、学习新知识,掌握了很多新的内容,能够明显感觉到自己的技术能力在不断进步,并在这过程中也做了一些流程上的优化来提高性能,有明显的正反馈和成就感。在周末的时候也经常会来公司,学一些知识,或者做一下总结。所以在整个实习阶段过得很不错,也让我对未来充满了干劲。

对于应届生有一个重点就是自驱力。当时在实习转正的时候,HR问了我一个问题,我的自驱力是什么,或者这是什么让我工作有动力。我回答是成就感,因为能够让我的代码运行在这么大一个平台,对于我一个刚从学校出来的学生确实是很大的成就感。然后他又说了一个点:这种成就感不可能持久,你得好好思考自己真正的自驱力是什么,才能推动你自己在职场上不断前进。这是很重要的,当然,钱也可以是一个自驱力。

但当时刚入职场的我,对所有人都充满了防备心,特别是HR,所以我也并没有把他的话当回事。现在想想,当时的HR和领导都是挺好的人的。


实习结束后我回到学校,做毕设、毕业典礼、毕业旅行,过了大半年后重新回来。这次接手的是一个独立的SDK组件开发,我暂且称它为特效组件SDK。

这个组件是从0到1开发,我负责做 调度框架层 + SDK接口层 两层的开发,这对我来说也是一个新的机遇也是挑战,因为我终于可以再次深入一层,提高技术深度。我想着通过这个组件的开发和落地,能够锻炼到我的方方面面能力。但此时,我们的团队也悄无声息地发生了很多的变化。

业务侧的需求突然减少,组内陷入了"无事可干"的局面。特效组件开发的目的,也从支撑业务需求,到变成辅助团队下一步的能力输出寻求业务。这个项目由于没有实际的业务落地,进度慢了下来。因此也可以料到,我很难在此获取好绩效。我的成长速度也跟着一起,慢了下来。

这个时间持续了半年多,好处是每天都很悠闲,但伴随而来的是,对于自身的焦虑以及对团队的焦虑。我知道这是我职业发展的黄金期,看着我朋友每天都在为业务忙的焦头烂额,负责的业务模块越来越大,职责越来越大,很难不焦虑。好在过了一段时间之后,迎来了团队结构的变动,我们也有了新的开发目标:非线性编辑引擎。


团队的变动,让我们暂时不再疲于找活干的焦虑,团队大部分都投入到了非编引擎的开发。而我在这个过程中,工作的内容发生了比较大的变化。特效组件SDK被废弃,主要负责SDK接口层、业务逻辑层,也有部分UI层的开发,相当于我的工作内容从偏底层到更接近业务层了。从前期的底层技术研发,转头往业务方向继续前进。

这对我来说其实是有点打乱了我的计划的,原本想着不断往底层技术深耕,拓展自己的技术深度。现在转而向业务侧开发,而且有了一些UI相关的开发,心里多少是有点抵触的。对我自己来说,我更想成为一个能力输出者,我只负责我自己的组件模块,并输出能力给到业务,不断地去迭代深耕自己的模块能力。

来到业务侧对我来说并不是好机会了,因为我本身对业务开发并不熟悉,流程也不是特别了解。此时我的导师也已经离职,没有人再给我当指明灯,只能自己慢慢摸索。但好在此时我的工作内容,大部分还是在SDK接口层,业务的内容并不多。

慢慢地过了大概半年多的时间,我们将非编建立起来。但由于产品侧不满意非编底层的进度,引入了另一个第三方的非编SDK进行合作,我们暂且称之为非编第二版。到了合作的后期,第一版的非编被废弃,全面转向了第二版的非编引擎开发。是的,我开发的第一版非编组件被废弃了。

第二版的非编开发了一段时间,基础能力也慢慢满足了业务的需求。但又来了一个经典问题:没有需求了。团队再次陷入了僵局,我又开始闲了。


破局的关键是,我们又迎来了一个新的项目,这个项目我称之为项目S。

项目S我从第二年就已经在开发了,也是我从0开始开发的一个项目。到了第三年,这个项目成为了我们团队的核心项目,或者说是唯一的项目。由于这个项目最开始只有我一个人在研发,因而这个时机对我来说是一个重大的机遇,但是很可惜,我没有把握住。

项目S成为重点项目之后,整个功能的体量变得很大,技术上涉及到算法、算法工程、业务逻辑、UI、服务端等。当时的我,面对这个机遇,说实话内心有点慌,我希望自己能够成为项目owner,但是到了项目中期,还是出现了力不从心,项目进度出现了一些问题,因此老板派了两个人过来整体负责这个项目,而我自然而然从项目owner回到了模块owner。这个机遇也慢慢从我手上溜走。

我们总说,机会是留给有准备的人,这句话说的挺对。这个过程中的原因有很多,例如前期的技能树没有点在业务上,业务经验少;我个人的性格更加偏向于技术研发而不是项目管理等;同时还有一些其他的事情影响我的精力。反正挺可惜的,从前面两年的经历来看,这确实是一次越级突破的机遇。

随着项目的研发,我个人的一些优势也慢慢发挥出来。由于前期做了很多的SDK优化,让我对于耗时、性能方面有了一些经验和认知。所以在后续,我做了很多工程上的优化,将整体的耗时降低了非常多,这也成为了我换工作核心的技能点。


回顾在这家公司所做的事情,可以发现所做的内容都在一年不到然后被抛弃,转向一个新的东西开始研发。这也从侧面看出来这块业务并没有一个固定的发展方向,一直在各个项目中去做尝试和发展。对于我个人来说,最大的坏处就是无法持续地做技术积累,好处是能够不断地接触不同的内容,拓展技术广度。

工作的内容集中在SDK接口层,在开发的初期会工作量比较大,但当开发结束后,后续的需求会很少。从绩效的角度,业务层、底层能力更容易被看到,而中间层更容易成为工具人。同时能够锻炼到自己的方式也比较有限,业务侧有项目管理经验,底层有技术深度,而中间层属于不上不下的位置。因此我在这里也只能不断去做一些流程优化、性能优化,来拿到一些结果。

或者是去卷,将更多的职责卷到自己的范围内,将自己负责的模块做大做强。但这是我太愿意做的,很心累。

绩效是一个很重要的事情。当自己做了很多事,但是在绩效阶段发现自己没有很能拿得出来的事情,甚至在问你有什么亮点的时候很难挑出来,这会很打击积极性。以至于会觉得自己做的事情没有价值,陷入自我怀疑。

我的职业规划

职业规划是一个很重要的事情,他决定了我们职业生涯要往哪里走。但很多时候,其实很难有一个清晰的目标,模糊、迷茫、犹豫是我的常态。

我最初的想法,是成为一个技术领域的专家,成为一个不可替代的人,但变化实在太快了。我希望深入了解团队所负责的模块业务,力争成为核心负责人,然后整个业务代码交接出去了。我想深入音视频开发,但被团队转到业务的位置,AI开发也悄无声息地过来了。

因此在这三年,我时常处于迷茫和焦虑中,很怀念当初实习阶段,明确的方向、稳定的正反馈。后来我也发现了这并不是我个人的特例,而是从学校毕业初入职场的学生,大多数都会有这样的问题。我思考过原因,大概是在上学阶段,我们的方向是固定的,语数英理科文科,衡量标准是分数。只要努力,总归会在分数给予体现,不用操心过多的事情。而到了职场,这一切都突然变得模糊起来,找到自己的位置和方向,已然成为了一件更艰难的事情。

很多同学的目标会重新转化到绩效上,只要拿了好绩效那么就证明我的方向是对的。但很快我就觉得不对劲,因为绩效的决定权在于领导、在于公司,评判标准放在别人手上,永远就只能成为别人的奴隶。也是这个阶段,我开始在思考我到底喜欢什么、想要什么,到底什么东西对我来说是重要的,小到明天吃什么,大到结婚生子,需要不断自己去思考、做决策。

在工作中每年聊绩效都是类似的,有一些进步,但是还不够,业务结果少,技术上也没有太多成长。对于老板这个结果我是认的,但是问题经常在于,我做的事情很难拿到业务结果,也经常做完一两个大需求后陷入无事可做的阶段。需要自己去思考我要再做些什么才能拿绩效结果,我是不是要再去卷一下别人做的事情。事实上,这种状态是很舒服的,work life balance。但与此同时也会很容易陷入一种焦虑的状态,假如我再保持这种状态过两三年,还能再找到工作吗?

项目S,也就是我目前在做的项目,也进入到了类似的阶段。重要的部分已经做完,往后我负责的模块已经很难有大的需求,更多是一些修修补补,需要去拓展其他的业务模块。也就是相当于,我又要重新再出发。成长的方向、速度再一次受阻。因此,换工作的思绪再一次占领了高地,无形中推动我去面试。

这个过程中,我和我老板其实都做得不好。我没有在出现疑惑的时候,及时找老板沟通,我想要达到什么样的目标。我老板呢,没有给予我一个晋升的规划,明确下一步我该做到什么样的程度。当然,这和我们的团队现状也有关系,不断变化的业务,也很难在一个业务中不断去成长。但是我想说,当对自己的工作现状不满意,需要改变时,最好要先通过老板进行沟通,至少让他知道我们想要什么,他才能想办法来帮助。实在没办法,再考虑换工作的事情。

换工作这个过程,也是我不断在思考职业规划的过程。我希望去拥抱一些新的技术,例如AI,并希望在工作中去快速提高自己的工作能力。相比起具体的技术本身,我更加看重通用能力,例如解决问题的能力、沟通能力、学习能力。没有什么是一成不变的,一门手艺干到老已经不现实了。我和我朋友也时常在聊着,35岁以后怎么办?说实话我也不知道。我相信在互联网行业,很少有人能看到十年后的状态。与其纠结于这些陷入焦虑,不如专注于当下,拥抱新技术、提升通用能力,并在这个过程中不断去摸索未来的方向

最后

在收到offer做决定的那几天,我一直在思考到底哪个决定才是正确的。我列举了各种各样的因素,也请教了一些前辈,但最终依旧没有那个标准答案。

毕业后其实有很多种这个时刻,A or B,在没有选择之前永远不知道意味着什么,而也总在选择后,想着另一条路,也许有更好的风景。以前对这个道理也仅存于纸面,当做的决策越来越多时,更加能够深刻体会。

相关推荐
Lee川2 小时前
从异步迷雾到优雅流程:JavaScript异步编程与内存管理的现代化之旅
javascript·面试
晴殇i3 小时前
揭秘JavaScript中那些“不冒泡”的DOM事件
前端·javascript·面试
绝无仅有4 小时前
Redis过期删除与内存淘汰策略详解
后端·面试·架构
阿巴斯甜4 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
绝无仅有4 小时前
Redis大Key问题排查与解决方案全解析
后端·面试·架构
Kapaseker4 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
AAA梅狸猫5 小时前
Looper.loop() 循环机制
面试
AAA梅狸猫5 小时前
Handler基本概念
面试
xq95275 小时前
Andorid Google 登录接入文档
android
Wect6 小时前
浏览器缓存机制
前端·面试·浏览器