很高兴见到你。
时间真的过得好快呀。想想我写的第一篇博客的时候,还在努力找实习中,当时因为实习面试通过,激动了特别久。而转眼间,我已经要准备离开这家公司了。
从毕业到现在,已经在这家公司待了三年多了,如果算上实习的时间,已经有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,在没有选择之前永远不知道意味着什么,而也总在选择后,想着另一条路,也许有更好的风景。以前对这个道理也仅存于纸面,当做的决策越来越多时,更加能够深刻体会。