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