美团点工程师慢慢融入团队后的第一年总结
在公司的第一年,我迎来了在美团点评机会。在公司工作这段期间我遇到了很多困难,也学习到了很多知识,得到了很多人的帮助。这篇文章主要是帮自己总结一下自己过去,回顾一下自己正式工作的第一年,将这段记录给自己,也给需要的人。特别是现在毕业在即,对于那些即将从校园踏入工作的毕业生而言,永远逃不开的话题就是校园招聘,在校园招聘中你能收获很多,这些都能够让你拥有更多的选择的权利。
我本科是在一个航海院校学习计算机相关专业的学生,在近几年,某些计算机的专业被提拔到了一本的级别,但在综合的实力上还是和一些老牌院校的计算机专业有着不小的差距,很大程度上,我们是计算机校招队伍中的弱势群体。但是在本科阶段虽然我没有浪费本科的时光,但也没有意识到这一点,等到自己读研和工作后才发现自己在那段期间真的错过了很多储备知识的好时光还有去找工作的时间节点。
但是幸运的是我的成绩还不错,被顺利保研,压力相比其他人而言会小一些。在大四的暑假,我确定了目标,等着毕业的时候一定要去一线互联网大厂做后端工程师,当时锁定的主要语言是Java方向的。然后我就开始了解几个互联网主流厂商的后端Java工程师岗位的一些JD,我主要关注了美团点评、阿里、爱奇艺等公司,了解到他们的岗位对于应届生基本会需要基础计算机知识扎实以及目标岗位匹配的若干优质实习和项目还有一定的技术视野。
知道了要求以后,我就根据以上几点要求,在读研一阶段就复习基础知识,空余时间去找实习拓宽技术视野,等毕业后不至于不知所措。
我的基础知识大部分都是把Java相关的基础书籍以及本科的一些当时觉得听着很枯燥的课,比如计算机网络、操作系统、数据结构又复习了一遍,通过做题,看视频等手段加深印象,深入了解。不太能理解的就通过搜索引擎和一些问答社区向前辈取经。
但是在边复习基础知识的时候,我也有同时开始去找Java后端工程师方面的实习工作,累积经验。在那段时间里,我经历了准备简历、获取求职资源、技术面试等,我先后在创业公司和阿里实习过,下面记录的是当时的一些体会吧。
去校招的技术岗位,我的简历和内推都挂了,只因为你做错了......
想去阿里实习需要你有......
其实在准备校招的过程中,你可以去先看一些学长学姐的面试经验,和一些同学朋友交流面试的体会,涨涨经验,尽量不要去踩人家掉过的坑。
除此以外,平时的时候逛一些技术论坛,拓宽技术视野,了解主流互联网公司的架构,Java后端技术方面的最新进展等,都是利大于弊,让你能了解更多相关的事物,也不至于一问三不知的状态。
经过这些努力,校招的时候拿到了好几个Offer,但是最终因为个人的喜好和综合因素来到了大众点评。我的学生生涯就此结束,但是学习仍在路上。
在找实习期间,我加入了校招的一个团队是闪惠,做的是大众点评商户的优惠买单业务的一个团队。其实整个团队的业务量在整个公司来说也是很大的,我加入团队的时候挺自我否定的,但是还好我的业务还趋于稳定。
刚入职场的时候,真的是什么都不会,瞬间从学霸变成小白,连个需求会议都听不懂。因为我的工作是走迭代的,一般两周一个迭代,所以每一次开始前,产品经理都会先召开需求会议,主要是给大家讲一下之后 会涉及到哪些业务,要做哪些东西。在需求会议上,看着组长写的记录,对每一个迭代要做的东西,每一个需求可能需要多少人力,需要涉及哪些系统,都预估的很清楚。而我连需求听不懂、分配到任务没办法很好的理解我到底是哪些模块的时候,每次都是靠会后才去问的导师,只有这样我才具体明白一个看似简单的需求到底是需要做什么工作,那段时间我对自己是有点否定的。因为觉得在自己之前实习的时候,功能完成的也很好呀,怎么正式入职,连需求都听不懂,需求拆解都做不好呢,突然陷入了迷茫期。
因为业务量比较大,技术知识出现不足,线上一些小问题都会被无限的放大。我记得有一天线上突然出现某一个后台项目的所有机器的老年代增长都较快,同事排查后定位是接入的外部包有问题,然后写下了一篇如何从源码的角度定位了问题的故障分析报告,我当时看了好几遍才看懂。
通常来说我们一般都会有Code Review,会请高级别的工程师过来帮你看你的代码,看是否能够提交上去,当时还想着可以展示一下代码的能力,也能得到指导。但是在我刚开始写的代码,因为一些自己不好的习惯和对业务思考的不够,出现了类如NPE、代码复用不够、代码层次不清晰以及命名不太合理等问题,也是经常被打回去修改。所以那段时间还挺难受的,有些自我否定,觉得哪哪都做不好。
后来和自己的导师以及领导聊了一下,结合我现在的一些理解的话,我想对当时的自己说:
每个人都是要成长的,要学会放松,公司其实并不期望刚刚进来的你,能够创造多少价值。在成长期难免会遇到各种各样的小问题,这可能是大多数人的必经之路。和你一起共事的同事们,他们都比你在工作领域待的时间更久,拥有了更多的经验,你可以把他们作为目标,但不要把他们作为现在自己的标准,毕竟拔苗助长那样会压力太大,对自己也没什么好处。
初入社会,从学校到职场切换的前几个月,不适应是难免的,但在这段期间,对于不懂得也可以请教导师和身边的同事,身边的同事是最好的学习资源,他们可以告诉从更高的层面看你现在所处的位置以及遇到的问题。同时也可以通过翻阅团队过往的资料和代码,了解团队的业务现状、核心系统以及主流程,从大方向上入手,再进一步了解业务中的细节。多交流,多回顾总结这些都可以帮助自己完成适应,从自我否定中走出来。
其实我刚进来时,团队在做的是一个流量很大的业务,系统架构已经趋向于成熟,单身作为一个新人,能做的更多的是在修修补补,很少有机会从头开始做一个项目,主要是针对子系统中的某一个模块进行一些开发。
在这样的一个成熟团队,他们经过长时间的大流量的业务考证的系统架构和业务设计,业务架构已经基本定型,所以新人真的难以参加一个项目完整的开发过程。新人在这里大多是针对系统具体的子模块进行一些功能上的开发。但是团队在成立至今肯定遇到了很多千奇百怪的线上问题,肯定有着丰富的经验,所以在团队排查这些问题的过程中,新人是能从中收获很多养分,技术能力和沟通能力能得到很大的锻炼,让你能够站在一个更高的视角去看待问题。
在我工作了快一年的时候,团队切换了业务,去做了一个从0到1的业务,主要是依托我们公司积累的数据,为商家提供咨询和数据的一个平台。
在这样一个新业务中,有机会从头到尾去设计一个项目,对于如何亲手设计一个系统有了经验,同时可以借鉴过去在成熟业务当中学习到的一些准则。
与此同时我也从之前的简单的和后端同事之间的对接,到需要跨团队和客户端、前端、测试打交道,在个人的沟通技巧上得到了很大的成长。参加了App站内信、用户中心、后台推送中心的完整开发过程,能够去定义和外部系统的交互接口,底层的数据存储设计,系统内部的流程等等。
在切换到新业务后,前端和数据开发的资源相对比较紧张。
虽然我当时的职位只是一名后端工程师,但不代表要把自己局限在后端,需要用技术的手段解决问题的,都可以有我的出现。
在这个新业务中,如果在一个业务快速发展的新业务中,随着新业务的不断演进,原有的架构会不断得到挑战,进一步提升自己系统设计的功底。但是并不是每一个新业务都会快速增长,让你不断的遇到新的挑战。在业务的缓慢成长中,可能只是在重复过去学到的技能,得不到足够的挑战,也就错失了进一步成长的空间。
所以不管身处哪个业务,都要像海绵一样汲取其中能够被吸收的营养,因为不管是成熟业务还是创新业务都有自己的优缺点,都有值得学习的地方。
同时我在业务的演进过程中,我接触了前端的开发,做了一些很简单的页面开发,再配上自己的后端接口。还接触了以前完全不知道是什么的数据开发。
从什么都不会的小白到对集团数据平台的使用驾轻就熟,从底层数据的提供到后端接口的开发一条龙服务,这一路不仅复习了之前学过的Hive,还学了新技能ElasticSearch,同时把在接触新东西的过程中遇到的问题,总结下来,积累经验。
所以总的来说,职业生涯的早期是可以多多尝试的,不要局限自己,当需要你的时候,其实你都可以勇于尝试。不管是在生活还是工作中都要保持谦逊,学会多总结多思考,对于不会不懂的要积极提问,保持平常心。