不知不觉已经在阿里实习100天了,100天基本上把工作的苦辣酸甜都尝了一遍。过几天我也要正式的离职回学校了,就在临走前趁着这第100天的契机写一写自己的实习感受吧。当然,里面很多都是自己的主观感受,不代表任何其他人的意见,如果有啥不对的地方,那就略过就好了。
一、生活
关于“修福报”
在来阿里之前,估计很多人都听说过马总的“996是修来的福报”,我也是奔着年轻不怕吃苦的劲头去“修福报”的。结果,我发现不止我们团队,就是整个蚂蚁Z空间的园区,大家都是上午十点多左右上班,晚上7点到10点不定期下班,周末园区基本没人。
每次我因为在工作日没有在预期内完成工作,打算在周末自己稍微加加班的时候,师兄还一再给我强调,公司不鼓励加班…
而且在我刚来园区的第一天,我问过师兄我们的上班和下班时间是多少,师兄给的答案是:弹性工作制。咋说呢,这个词在互联网上的口碑并不是很好,因为有些老板喜欢把员工的工作时间弹到比如15个小时(点名西贝)。我这前几天也是忐忐忑忑的,每天9点左右到公司,结果发现公司人特别少,等到10点半甚至11点左右的时候,同部门的师兄师姐才来齐;下班也是,有的6点就走了,有的9点才走,不过大部分人都是9点以后才走的,好像是因为9点以后打车免费还有夜宵拿(只拿过夜宵没打过车)。
不过呢,我也单独问过师兄,有没有加班的时候。师兄说在今年3、4月份的时候,连续加班了很久,当时好像是赶上什么活动了,部门的同事都在一起加班。
说来呢,这也是实习的一个遗憾,没有体验加班的感觉,本来今年双11双12应该也能体验到加班的,结果因为各种原因也实习不到那么长时间了。
师兄
在阿里实习,师兄一对一辅导是标配,所以,每个阿里实习生在师兄这个话题上多多少少都有点谈资。
如果让我用一个词来形容我师兄的话,那一定是“负责”。当然,有可能是因为主管下发的任务或者其他的利益之类的因素,但是如果是因为这些原因的话,师兄完全可以以其他的不怎么负责的方式辅导我。
印象最深的是我第一次进行CR,我第一次写的业务代码,代码质量极差,可以称为“屎”了,组内从晚上7点30开始CR,到CR结束已经12点左右了,一共提出了50多条改动点(这次之后的几个需求改动点之和都不及这个数)。这次CR从始至终,师兄都是认真的听我讲,时不时的给我一些建议,而不是因为时间已经很晚了而不耐烦或者敷衍了事啥的。
当然,最重要的是,在师兄的指导下,顺利的拿到了实习转正秋招offer,让我拥有了继续在阿里工作的机会。
眼界和自信
首先要承认,我之前是一个眼界很低的人(反正比现在低),而且相当不自信。
打个比方,我来阿里实习之前,我觉得我作为一个双非本科生毕业的学生,月薪能有1万就已经符合我的最低标准了,如果能有1万5千,那一定是我运气好摊上了一个好公司……不过来阿里以后,我所接触到的都是在我这个标准线以上的“大佬”们,慢慢的,我也逐渐了解了整个互联网环境的标准。
而且,在等待转正结果的时候(当时也在面其他的大厂),我一个学校的学长和我说让我也可以投投二三线的互联网公司。如果是放以前的话,我肯定会毫不犹豫的把简历投递出去,但是现在呢,因为还是比较珍惜校招的机会,所以只想在大厂环境下去工作,或者说去镀金。而且,我也有自信去拿到大厂offer,无关乎学历。
当然,来阿里实习之前,我一直有种感觉,我比那些985、211的研究生会有很大差距,毕竟少上了几年学;然而,从实习培训那几天时间里,我才发现,我和他们之间的差距并不大,甚至某些方面我还要比他们强一点。
二、技术
现实的业务场景
在外实习和在学校学习最大的不同就是,所能接触到的业务都是真真正正生产环境上的业务。
这种实际的业务场景,都不像是在学校里做的东西那么简单。在学校可能自己或者学生团队为了图个简单,简化了许多业务,比如设计下单链路的时候,可以省略掉下单之后取消订单的功能这种;而在企业,这种功能肯定是要实现的,不但要实现还要再实际使用中毫无bug。
另外,在企业接触到的业务在实际的生产环境中更为复杂,比如起伏不定的QPS,比如不可预期的延迟,比如失败的调用,比如某个上游下游系统的BUG,比如莫名其妙的OOM……实习的100天,我所接触到的问题中随便1个就比在学校遇到的任何问题都更加严重,不过这些问题最终都在师兄的协助下一一解决,这也在一定程度上为我未来的职业道路指明了方向。
编码规范
众所周知,阿里巴巴有一套很有名的阿里巴巴代码规约。这套代码规约约定了开发者在开发过程中的各种规范,熟练的运用这套代码规约的话,在很大程度上可以减少代码出bug几率,也提升了代码的可理解性和可阅读性。
这套代码规约我在来阿里实习之前也看过,刚来阿里开通了内网权限的时候也复习过……本来我以为我可以熟练的将代码规约牢记于心,然后熟练地应用在我写的代码之中。然而,事实却是相当的残忍,我写的第一套生产环境的代码在组内CR的时候,被提出了约50条建议,几乎写的每行代码都被指出或有bug或不规范…甚至CR结束之后,我师兄对我说的第一句话就是“你写过Java么?你会写Java么?”。
不过,开头不好不代表结果不好,有了第一次CR的教训后我拿着我写的垃圾代码一点一点对着阅读代码规约,然后后面开发代码的时候经常性的翻看一下前辈们是如何写这段逻辑的(虽然有可能不是最好的实现方式),思考有没有更好的实现方式……就这样一步一步的,实习结束前我写的代码在CR过程被吐槽的点已经很少很少。
而且,我在整个实习过程中一直享受这代码规约带来的好处,因为系统大部分代码也都是遵守这个规约的,在我阅读系统源码的时候,就少了很多难以理解的点,以至于可以快速理解代码的功能,更快更好的投入生产活动中。
技术红利
相比于在学校自己跟着学校团队开发项目,在阿里实习进行项目开发会觉得很舒服。
首先因为很多比如配置中心、服务注册中心、API网关等这些基础建设,不但可以拿来即用,而且还有专门的团队在维护,让我们作为使用者可以更好的在平台上进行操作,且使用有问题的时候可以联系负责人协助排查,减少了不必要的拍错时间。
然后是见识到了许多以前没有见到过的功能性框架产品等,比如全链路监控、日志收集、开关平台、数据库DRC消息这些,很多内部的产品的功能都会让我眼前一亮,让我有一种“原来这种东西还可以这么做”的感觉。
这些阿里内部的优秀框架,一方面让我在实习的这100天的工作更加轻松,另一方面也开拓了我的技术视野,让我在日后的工作中针对一个问题可以想到多种解决办法。
文档
写文档是每个优秀程序员必备的素质,当然,这里不讲写文档的好处,这里只讲讲在阿里实习期间写的文档和在学校写的所谓的文档有何不同。
首先,在学校写的文档,像PRD文档、API文档、系分文档这种几乎少之又少,而且就算写一个PRD文档,还要让你把这个需求的背景、意义、甚至参考文献都写上,然后还要要求字数,一般情况下字数越多越好(这里主要吐槽我学校的实习报告,仅仅是去生产线当免费劳动力,还要让写5000字的报告,更过分的是还要引用至少5篇参考文献)。
在阿里实习我也被师兄要求写文档,实习期间我主要写了系分文档和发布计划这两部分,但是这两部分文档的目的性及其强,而且不需要废话也不需要把与之无关的东西写在上面。就是这种简单干练的文档风格我觉得才是年轻人该有的风格。
另外,内网中大部分文档,负责人都把目录分的特别清晰,有什么不懂的,一般情况下都可以很快的定位到相关文档处,然后通过很短的时间阅读文档就可以理解。
三、写在最后
这100天仅仅是一个开始,是一个即将踏入职场的青年的开始,未来的日子,只会更好不会更差,也期待未来的自己能够让自己认可。
最后,还是借用H大当初在我的面经里送我的那句话“愿你一生努力,一生被爱。想要的都拥有,得不到的都释怀。”