美团点评后台开发实习记(持续更新->已经完结)

申明如下:本人确实是目前在美团点评某部门下做JAVA后台开发的实习生,本帖本着不出卖公司隐私的前提记录自己作为实习生的一些所见,所感,所想。目的是为了能让自己对这段珍贵的回忆能够有文字形式的记录,另一方面我是个愿意分享的人。

----------------------------------------------------------------------------我是分割线------------------------------------------------------------------------

第一阶段:初识新美大

经过两个星期,和我所在的部门里的同事基本上已经熟悉了起来。大多数同事还是比较热情的,当然也有一些很geek的同学不太爱说话和搭理人。这也可以理解,我很感谢自己的同事们,刚去的时候其实很担心自己水平太菜,当然确实也有很多不明白的地方,同事们先是对我给予了很多鼓励,对于我的问题也是耐心的回答。除了在工作上,在生活上的事也是。很庆幸自己能去到美团实习并且遇到了这群同事。虽然不是全部都让人满意,但总的说来确实已经很不错了。毕竟要学会和各有特点的同事相处也是项必学的技能。

再来说说公司,公司对待新人的态度很不错,毕竟研发岗的都给配macbook pro 15寸,老版不带touch bar16G内存用起来杠杠的!福利方面嘛,公司里面有健身房,我身边就有一个同事长期在公司的健身房健身,练就了不错的身材。然后下午八点后下班会有饭补还是很科学的,上下班的话在附近几个主要的地铁站都有免费接送班车。

再来说说公司运转方面,给我的感觉是美团点评有很多内部的系统,员工使用各系统将自己的工作生活紧密联系在一起。确实效率很高也很方便。感觉相对于别的互联网企业同事的幸福感还是要高一些的。我之前虽说也实习过但去的地方确实不如美团点评体量这么大。所以见识了大公司内部的一些真实情况觉得实习真的来值了,就算最后技术上没有得到多少提高,但是认识了这些同事,了解了大公司的机制体制,就已经很赚了。

最后说说技术方面,不得不说美团点评的技术氛围很不错,经常在聊天或去吃饭的路上都可以听到我组的同事或其他同事在讨论需求、业务或者技术。用的东西也都是很新的东西,也会把一些很主流的东西做一些自己的改造。然后组内会经常开一些技术分享的会,公司本身也有图书馆提供各种技术书籍。每周有例会,有时候会大家一起review某个同事要上线的代码,提出各种改进的意见或是自己的疑问,所以你说这样的氛围能不让人的技术长进么。

总之,关于新美大我相信我接触的只是冰山一角,还有很多值得我去学习和体验的地方。接下来我会继续放低自己的姿态,确实也翘不起来哈哈。已经开始上手写些简单代码了。下一步想要适应公司内部一些我还从来没使用过的技术和git上的多分支多人协作,以前都是用的sourcetree而在公司大家都是用命令行的神,我要向大家靠拢哈哈!先写这么多,再有感受了回来更!

----------------------------------------------------------------------------我是分割线------------------------------------------------------------------------

第三周:上手干活

其实从上周四到本周算是开始干活了,但是因为我是实习生么?感觉给我分配的活都比较简单,也是在学校里干过的那一种。比如对于一张表的CRUD,从controller到mapper.xml。和我差不多到位的应届正式的同学已经在用一些中间件组件了。说实话还是有些羡慕的,虽然在前两周有学习过那是个什么玩意儿,但是亲自上手搞一下还是会不一样的嗯嗯。我在想可能是我最终是要走的,所以复杂的代码不给我写是后面不好维护?也有可能是本身对我的技术不放心?我也不想当那种会叫的孩子要奶吃,怕大家觉得我好高骛远,眼高手低。有什么活儿分配过来我就好好完成!得空了没活干我就学习感兴趣的东西,确实在企业里用到了很多学校里听不到的东西。感觉和我一起到岗的两位应届本科生的能力都很强,觉得挺赞的。听说下星期又会来个top985的实习生,感觉压力还是有的。要有自信!


----------------------------------------------------------------------------我是分割线------------------------------------------------------------------------

第二个月:开发需求并上线

在美团这里实习一个多月了,今天算是完成了一个功能的上线,企业级特别是像美团点评这样流程和技术都比较成熟的公司,其整个流程给了我很大的触动。下面我将自己的心得体会和流程小记于下

1.需求

首先肯定是我所在的这个开发组收到了PM提的需求,需求评审通过后组内把这个需求布置给了我,并且老大给做了排期。
接下来我收到了来自PM的需求说明,熟悉了需求。

新发现:排期超过一定时长的需求,需要RD出技术方案进行组内评审。

2.开发

我开发的功能依赖外部第三方的接口,开发开始的时候遇到了一些问题,第三方配合的很不及时,导致了项目进度的拖后,就发了delay周知说明了原因。给我的感受是不论是什么原因导致你觉得做不完了都要提前和上级沟通,不然排期的时间到了但是开发进度没了保障是不合适的。我们的delay原因是第三方配合的不及时所以还是可以被接受的。也从老前辈那里得到了一个经验,估时的时候一定要为自己留buffer,这样早开发完了大家都高兴,中间有什么突发情况耽误了努努力也赶得上进度。

开始开发第二周算是正式做功能的开发,第一周被耽误的时候做别的小功能用到了缓存,用得是公司的squirrel。开发这个优先级较高的功能时需要做监控报警,接的是公司的CAT。能够在实际开发功能的过程中学习组件的使用确实比光看文档要幸福太多了。功能的主要逻辑2pd开发完毕,然后提了pr。期间反应出了不少我代码质量不够高的问题,这里要感谢帮助我的盼盼姐。if else逻辑嵌套有些复杂我没有做什么优化,再比如对于工具类的使用没有养成习惯,try catch的逻辑不够健壮,日志的信息不够完善等等都有体现。确实是在学校里呆久了,写代码基本上就是以实现功能为第一要义了,忽略了其它方面一些其实是很重要的点。比如说,if else的逻辑太复杂会影响代码可读性从而提高了后期的维护成本。工具类的使用没养成习惯则会导致出现一些不够安全的代码。try catch的逻辑不够健壮导致异常的处理不到位,日志信息不完善更是让我吃了大亏,上线后出现了问题排查起来因为信息的内容太少让查日志的成本很高,而上述的这些问题都是可以在开发的时候加点小心然后避免的。

3.测试1---自测

a.首先是RD开发完了之后在本地环境上进行冒烟测试

b.PM向QA方面申请了资源,冒烟通过后向QA提测,并和PM、QA三方开会设计测试和发现风险

4.发布

本地的环境已经不能够满足集成测试的条件,把项目部署在测试环境,拉着我的接口调用方一起测试。发布用的是plus系统,非常的智能。美团这边非常成熟了,有dev、test、stag、prod四种环境,一项功能上线需要层层递进,确实是显著降低了风险保证了质量。

5.联调&修改代码

和接口调用方进行联调,对调试中出现的问题进行代码的修改。这一次我想说的代码git仓库的多分支协作确实好处多多啊,试想我一个功能在联调过程中都要多次修改代码,如果像在学校里就一个master分支或者两个分支一个develop一个master这么多人开发肯定就乱了套了。然后这边对maven的使用确实是体现了用它来管理依赖的好处,而不像我在学校里仅仅是把它作为一个管理依赖的工具。

6.测试2—验收&压测

经过联调并解决了相应的问题之后,分别由PM和QA进行了验收测试,在这个过程中提出并暴露了一些,修复之后回归测试。另外,为了保证上线后我所提供的服务能够抗压,我学习了使用公司内部组件ptest来对我的thrift接口进行压力测试,压力测试表现的还不错,否则肯定要根据压测反馈来调整代码了。一切就绪,准备上线!

7.上线

上线前首先将项目发布到线上环境的“镜子”,stag环境。stag环境上又测试了一下没有问题,这就能很大程度确保真的上线了也不会有问题。接下来发布到线上环境并通知我的调用方。发布上线以后QA和PM又进行了一轮回归测试,值此,就上线了,有报警排查一下,没有报警反馈没有问题就万事大吉。最近又学到了一招,美团这边通常是一个服务部署在多台机器上,所以为了在发布时进一步降低风险,可以采取灰度发布的方式,就是说只部署在一两台机器上,切点流量过来看功能是否正常。使用一段时间发现并没有什么问题就将服务进一步部署在所有机器上。而一旦服务真的出现问题也只是少部分用户受到了影响,回滚也只用回滚灰度发布的机器。代价很小。可以说是非常厉害了。

总结

可以看到从发布需求到最后测试的流程并不简单,可能其中最简单的事情是开发了,但是后面一轮又一轮的测试确实能很大程度保证质量。让我深刻感受到了什么才叫做企业级开发,以前在学校那种什么都不用考虑的开发真的是玩呢。在整个过程中,不论是监控,缓存,发布或者是压测,公司都提供了非常靠谱的组件,组件既能避免RD重复造车,延长进度,而组件有人维护,又能提供高可用的服务,很好。协作方面的规范公司也很到位,总之还是很感谢这一些列流程,经历了说句不好意思的话感觉自己都升华了哈哈~



(the end~)

你可能感兴趣的:(美团点评)