首页 > 美团优选实习经历与感受
头像
凛冬将至Stack
发布于 2021-06-22 15:50
+ 关注

美团优选实习经历与感受

01 背景介绍


美团优选实习生,实习时间为两个月整,四月份到六月份,岗位是java后端开发,该经历仅代表个人体验,不代表美团整体这样,也不代表优选都是如此,事业群之间的差异、群内部组与组之间的差异,都是蛮大的。


还有一个很大的体验影响因素,就是你的实习目的是什么。如果只是刷个简历经历,那可以很舒服,不转正的实习生可以为所欲为;如果是想拿个转正offer保底,那么也不用太累,研发岗晚上八点多领了餐补就可以了,其他岗可以走的更早,工作时间别划水就差不多。


如果是想以后毕业还在这里工作,那个人的建议是,对齐正式员工,以优选为例,如果以一个实习生的标准来要求自己,可能除了上线的那几天每天就九点多下班,然后实习了两个月,感觉还可以接受,需求不多、强度也不大,但是毕业后作为正式员工进来后,发现每天是十点半左右下班,需求多且同时做好几个,感觉自己收到了欺骗,我认为这样是不好的,浪费了试错成本低的提前体验的机会。然后我个人是对齐的正式员工的,能力不谈,时长是相同的,所以我下面的经历,大家不要觉得美团优选压榨实习生什么的,这是我自己选择的,我想在这段时间里看清部门的全貌,有一个更真实的了解,从结果来看,我的目的确实是达到了。


最后,美团算是我的第一份大厂的实习经历,整个过程中情绪是蛮复杂的,对于这篇文章的内容,只想保证三件事:真实,真实,还是,真实。





02 实习过程


代码开发:QMS-CORE

4.19 - 5.20


这个需求算是比较大吧,从需求评审到正式上线,三个人一块搞了一月,其中不少时间都在加班。然后这个需求是个新项目,从零开始,XFrame框架和appkey都是我创建和申请的(自豪.jpg),前面开了好几天的评审会,从4.23才开始写代码,第一次参与大项目还蛮紧张的,想把《阿里巴巴Java开发手册》看一遍再写,但是时间不允许,所以就先开发,趁着4.26和4.27的周末把这本书给看了。


我负责的模块是比较偏内部的一个逻辑,所以也没有用到MTthrift,也不需要Mafka,因此上手还是比较简单,一些其他的组件使用起来也不难,美团的学城还是可以的,能解决我的大部分的问题,开发过程中蛮少问我的mentor开发工具问题的,问的基本都是一些业务问题,一方面我比较喜欢自己解决,另一方面他确实忙,有很多活要做,但我问他的时候他都很耐心。


代码方面,除了学城和百度,其他的组内项目也是一个很好的参考资源,有什么中间件不会用、设计模式不会写、代码结构摸不准,都可以翻开其他项目去学习,当个字典用,这里我建议,看的时候打开git的Annotate,看高手写的代码,组里谁是高手开几天的会就知道了。


业务方面,建议一定要写代码之前问清楚,就拉着产品问,问到自己清楚每个流程的细节,千万不要稀里糊涂就开始写,很有可能做无用功,技术评审的文档一定要写的详细再详细,我就吃了个亏,因为我写的技术评审文档和产品的需求文档在某个环节相同,但两人都忽略了一个具体细节,而两个人各自的默认的细节又有出入,导致多了半天的工作量。


工作思路大概就是上面那样,然后就这样开发,时间也是很紧,越写越觉得要写的东西更多,暴露出来的之前评审时没考虑清楚的问题也越多,但是排期一直没变,也没申请节假日加班,所以就是每个工作日加班加点的干,几乎天天都是十点半下班,这是我自己的下班时间,另外两个正式员工我都不知道几点走,但到一直这个时间下班我是有点撑不住的,到了十点多效率就很低了,日常怀疑到底谁三十岁。


项目预计17号周一提测,20号上线,然而到了14号周五晚上的23:42,才完成全部需求开发、前后端联调和部分自测。第二天,15号周六,正好休息休息出去玩一玩,晚上带着朋友,吃着火锅,聊着天,突然感觉有个地方逻辑写的不对,就在手机上记了下来,时间是19:39,吃完了以后去了趟公司,时间为21:13,打开电脑一看,果然是个bug,就开始改代码,改到23:20改好了,开始骑车往回走,到家快23:40了。


那么问题来了,为什么17号周一就提测了,到14号周五还没完成完整的自测、冒烟?因为14号周五上午刚改了个数据库字段,而当时手里还有两个功能没开发完,时间已经不允许从头到尾再测一遍了,就出现了这样的问题,在这里我大概将其归到三个原因:

  1. 产品给的排期紧张,而研发又不做反驳与调整,时间就是少,在不延期的情况下确实是没时间再测。

  2. 研发能力问题,到最后还没有考虑清楚一些细节问题。

  3. 研发单元测试没写好,如果单元测试写好了,只需要重新跑一遍单元测试就能知道改动对业务逻辑产生的影响。


17号周一,提测了,4月14号入职美团,减去这个周末,刚好入职一个月,看了下

git log:提交代码 22493 行,删除代码 11036 行,现存总计 11457 行。分析一下代码的提交与现存数量:

  • 首先,一部分自动生成的代码,DAO层我负责了四个表,每个表字段20来个,一共能占个1000-2000行吧,XFrame框架本身最多1000行吧。

  • 其次,代码规范、结构的调整,因为自己的代码写的也挺烂的,会有一些长方法,code review之后,拆分长方法、使用设计模式等,造成不小的代码改动,所以删除的数量也不少,还有就是业务逻辑问题,有时候没对齐,就会有一些删改,不过这种情况不多。

  • 最后,就是真正有效的代码了。


之后,就比较有意思了,体验了一把on call。


事情是这样的,我有个朋友21号结婚,我去当伴郎,就请了19、20、21号的假,这件事情我四月份的时候就跟组里同事同步过了,当时说是需求开发完就可以走了,到了18号,需求确实是开发完了,但是测试还没测完,所以19号就有了下面的场景:


电脑,任何时候都要带上,不带不行,你们想想啊,你带着朋友,出了京城,坐着火车,写着开题报告,听着歌,突然就被产品给@要开会了,然后车上开了半小时会,写了一个半小时代码;晚上到了新郎家,贴着囍字,挂着照片,喝着酒,突然就被打电话让改bug了,从九点半改到十一点半,写的头昏脑胀,所以,项目不上线的日子,才是好日子!



22号项目上线了,算是可以稍微休息一下了,上线后mentor和小组长都找我聊了,说我对团队产生的价值有目共睹之类的,比较认可我写的代码,说我的研发产出已经是组内实习生标杆了。


源码阅读:MTthrift框架

5.22 - 5.27


21号周五,婚礼结束的当天晚上就回北京了,然后后面两天周末在公司看MTthrift源码,这两天还是蛮开心的,做了一直想做但没时间做的事,看的过程中只关注了MTthrift包本身,与SGAgent等交互的部分都没有看,时间不允许。


到5.27,就开始准备业务串讲了,所以MTthrift只是把 publisher 和 client 两部分整体流程过了一遍,也没来得及整理细看,挺遗憾的。


图片来自美团技术团队


业务串讲:优选全链路介绍

5.27 - 5.31


这一块我写了一个文档,思路是文档分两大部分,一部分粗略介绍整体链路,一部分详细介绍我们组负责的工作,篇幅比例为五五开。写这篇文档的时候时间还是比较紧的,其实紧不紧这件事不好衡量,如果想做好的话,那必然要投入不少时间的,只是做完的话,应该是蛮快的,我想把这件事做好,所以还是29号周六、30号周日去公司,大约每天四个小时来写这个。


在这之前我对优选并不了解,甚至说我们组做的事情也不了解,涉及到的需求就是其中一个小环节,没有什么整体的认识,对优选进行整体了解、产出串讲文档,主要是依赖学城,这里还是要再夸一下,内容很丰富,花点时间去检索,业务内容基本都能了解到了。但是学城的文档也是有一些缺点的,比如时效性问题,有些内容已经迭代了好几个版本了,甚至已经弃用了,在文档上却没有体现出来,比如“共享仓”这一概念,已经被“中心仓”代替了,仍然还有不少文档写的共享仓;再有一点就是有些文档虎头蛇尾,目录里规划了四篇,结果点进去就写了第一篇,而且时间已经很久了。


做这件事的过程:首先在优选事业群里面,看了一些整体系统架构、商品传递的图片,然后看了互联网+大学上面的优选入门视频,就有了一个基本的了解,整个链路包括供货商、物流、仓储、团长、用户等,然后分别点开每个组的公共空间,看各个组里面的系统图之类的,有不清楚的地方再用学城的搜索,因为大部分内容是存放在个人空间的,只看公共空间了解不到细节。之后就大致了解整个链路了,就把这些内容拼接起来,第一部分就结束了。第二部分就是自己组内的了,可以多看文档,也可以直接问同事,我基本上是靠查文档,然后时间确实是不充裕,我光了解整个链路就花了三天的时间,最后一天就只是简单写了写组内工作,篇幅大概也就占整篇的25%吧,确实是没做好。


31号的下午在组内做的分享,分享后leader给了些评价,首先是肯定了文档能力和信息检索能力,说从实习生的角度讲已经很优秀了,然后是几个负面反馈,一是组内业务介绍不够深入,尤其是自己负责开发的那部分没讲出来;二是分享时语气没有起落,也没有和听众的互动,让人听了想睡觉;三是没有自己的思考,其实这一点我感觉是有点牵强了,也不多说了。


业务内容敏感,就上个用户端图片吧


技术分享:Spock使用

6.3 - 6.10


spock是一个Java单元测试框架,和Junit是同类,或许有的人觉得后端不该干测试干的事,其实单元测试就应该是代码方法的开发者写的,只有代码的开发者才能写出最好的单测,同时单测对于代码开发本身也有重要的意义,当代码改动时可以快速验证是否正确,还可以降低上线时心里的紧张程度,同时可以反向指导代码该怎么写。


当时是周四的时候接到的这个任务,是leader给的,问我有没有兴趣调研一下单测框架,然后选一种在组里做推广,要是没兴趣就让别人来做了,我说有兴趣,他说可以看一下spock,这个时候我还是第一次听说spock。接到任务后先是百度了一下spock,大体知道代码写出来是什么样子,也知道了一些特性,然后学城搜了下,果然已经有人调研过这个框架了,也做了技术分享,重点看了下他的文档,跟他交流了一些使用的细节问题。


了解了一些spock的基础知识以后,就开始做另外两件事情:了解什么是单元测试、解决真实场景中写单测会遇到问题。在做这个调研的时候,发现组里还有不少人不了解什么是单元测试、什么是集成测试,如果不了解概念的话,肯定写不出来正确的代码,所以就先去了解了下单元测试、集成测试的定义和规范,内容放到了分享文档的第一个模块。了解了单元测试概念之后,就是使用的问题,为了更了解该框架在生产环境中的使用,我开始重写上面的XXX-CORE的单元测试代码,边写边发现问题,边发现问题边解决问题,最后再结合网上的一些资料,解决了几个很常见且重要的问题:内存数据库的连接、静态方法的测试、方法的Mock和Stub、覆盖率的统计,这几个问题解决了,大部分代码的单测就都能写了,如果还有其他问题就遇到再补充。


然后是周四晚上,倒数第二个工作日做的技术分享,算是站好最后一班岗了,leader的评价跟上次差不多,文档写的还可以,给转发到了大群里面,就是分享的时候,语气还是没有起落调,没有互动,leader本来想让我分享完之后再负责在组里推广,但是我马上要走了,也没时间做了。


may your tests live long and prosper


独自上线:一些小优化

6.3 - 6.10


6.3的晚上跟小组长说了离职回学校、去阿里的事,所以后面也就没给大的需求了,都是一些小的优化点,比如sonarLint扫描问题、硬编码修复这样的,感觉组里的人也是挺照顾的,让我在后面自己上线,熟悉上线流程,算是完成所有的新人任务了,这一躺旅程也算圆满了。这几天大概上线了五六次吧,第一次还蛮紧张的,生怕点错了出什么事故,后来就轻车熟路了,而且美团基建很好,上线流程只需要点点点就行了,不用自己写配置、设置灰度机器什么的。


部分工作日志




03 感受


还是像最开头说的,整体感情是很复杂的,也是第一次体验到大厂的压力。第一天刚来的时候我想看看组里最晚下班是几点,然后到了九点半的时候,还没人动,我开始有点坐立不安了,然后继续到十点还没人走,心里有点慌了,到了十点十五,终于第一个人开始走了,然后我十点半的时候也走了,这会走了一半人左右,然后从第一天到离职的这两个月,我只有一天是最后走的,还是三个人一块,其余的时间基本都是中间走,并不知道大家平时最后走的时间是什么时候。


第一周的心理压力是非常大的,因为会议很多,两天开的会可能就顶上我在商汤的四个月了,每天都有早会,会同步每个人的进度是否完成、为什么没完成、怎么解决等问题,15、16个人一共开四十分钟左右,当时就感觉压力很大,万一哪天没做好,一个debug耽误好久,进度没推进咋办。之后是一些其他的会议,各种评审、复盘等,旁听的时候也感觉大家很认真,会对发言的人进行一些提问,我就在想如果我发言要怎么应对提问,如果我提问要怎么切中要点,一直怕自己跟不上组里的整体节奏,每天睁眼后闭眼前的情绪都是很焦虑。


过了一个周左右,逐渐适应这种压力了,但是焦虑的情绪还在继续,观察了一段时间后,发现他们的十点半下班并不是偶尔,而是常态,干不完的需求上不完的线,排期排的很满还有各种倒排期,加班加的天昏地暗,我是很担心在这种环境下的个人成长问题的,时间很紧张的情况下,代码的质量是很难保证的,没有时间去了解底层,都是抱着赶紧让他跑起来、跑对了的态度,项目中那些技术问题的TODO一直打不上勾,同时做好几个需求,没有空档期,所以也没有时间来沉淀复盘,组里有四五个人几乎花了一周来填上周上线的代码的坑,我有点害怕这种环境干个几年人别干废了,真成码农了。


我个人是想看看源码的,倒不是说带薪看源码,只是希望实习期间能在业务开发和学习中做一个平衡吧,而不是一味的做需求,结果需求太多就只能周末看了。整体体验
虽然和预期的不一样,但是在业务开发方面还是获得了很大的提高,而且组内的人对我也很好,跟mentor、小组长交流的时候,他们也很照顾我的情绪问题,中间有那么几天感觉要撑不住了,每天都想提前离职,交流之后调整了工作节奏,就没那么难受了,感谢他们对我的工作、生活做出的指导,也能感觉到他们确实有培养我的意思,希望今后他们能和产品相处的更好,也希望以后还能有一起工作成长的机会,小弟就先纵情向前了,美团江湖再见!


Respect!

全部评论

(26) 回帖
加载中...
话题 回帖