阿里实习 90 天:从实习生的视角谈谈个人成长
前言
今天是我到阿里实习的第 90 天了,最近也拜读了不少前辈的文章,尤其是 @于江水[1] 前辈的文章更是让我有种醍醐灌顶的感觉。
回顾这 90 天的成长,感慨良多,在这里和大家做一下分享,也从实习生的视角,尤其是本科毕业就参加工作的同学的视角,谈谈个人应该如何成长。
缘起
2020 年,一场疫情让这个原本平平无奇的年份,变得特殊。新型冠状病毒肺炎席卷了全国,蔓延至全球。
在这个特殊的一年,我也走到了大三下学期该找实习的时候了。「曾经梦想自己能够进入大厂,在自己喜欢的城市、喜欢的公司,做自己喜欢的工作。」
在 2 月份的时候,因为疫情的原因,我的老东家出台了疫情期间工作的政策,实习生 2 月份统一不参与办公。于是 2 月份得闲,开始准备复习一些基础知识,春招试一试大厂们。
无意间逛牛客的时候看到了一个小姐姐发了帖子,说找一起复盘面试找实习的小伙伴,于是就扫码加入了群聊,与她们成为了朋友。
「从一开始的不认识,到慢慢熟悉,再到最后大家一起朝着一个目标努力,这种感觉我好像很久都没有体会过了。」
「上一次有这种并肩作战的感觉,好像只有三年前的高考了。」
逛牛客的同时,还看到了「淘系」的实习生招聘贴,于是抱着试一试的心态,加了师兄的微信,小心翼翼地整理了自己的简历,发送给了师兄。
然后我想起来自己还有一个校友 @渊辰[2],认识很久了,知道他技术还不错,就把师兄也推荐给了他。
没多久,就收到了提前批的简历初筛,面试官是一个非常和善的师兄,聊天的过程中问了一些基础知识,同时还聊了一些个人的情况和未来的规划,非常亲切,体验非常棒。
当时暗自下决心,我一定要努力加入「淘系」,加入这个「东半球最强的前端团队」。
后来非常幸运地收到了简历初筛通过的消息,通过了简历初筛的同学被统一拉到了一个群里,这时我惊喜地发现,我的校友 @渊辰[3] 也在里面。
当时他已经在准备考研了,我把团队的 JD 发给他,让他试试。然后他就试了试,没想到我们通过了简历初筛。
有一天我在我的学长(也是我的前端启蒙老师)建的京东内购群里,看到了当时内推我的师兄,然后一问 —— 他俩早就认识。
「缘,妙不可言」。
缘聚
再后来的几轮面试之中,得到了我的师兄,也是现在我的老板的一些指导,整理自己的实习和项目经历:从项目背景、技术方案、重难点以及解决办法和沉淀到项目成果,将自己的每一个项目整理成一个完整的闭环,最后通过了二面三面,走到了交叉面。
交叉面的面试官是菜鸟的师兄,聊了很多人生规划、前端未来趋势的看法,还有一些项目过程中实际使用过的性能优化方案,非常愉快的面试过程,面试结束的时候面试官还说:「“要是还有认识的优秀的同学记得帮我推荐到菜鸟来呀!”」
在阿里的面试过程中,都是一个非常愉快的交流学习的过程,问到一些基础的问题,首先会让你能够答得出来最基础的部分,然后再逐步深挖,去探索你的深度。
同时还会拓展,去探索你的广度。这样的面试方式,你永远不用担心面试官正好问到你不会的部分而没有在你擅长的领域提问,很大程度避免了运气成分。
面试官还会与你交流一些对某个技术的看法,或是某项技术未来的趋势。从开始面试到最后签下意向书拿下 offer,其中的每一轮面试都是一个学习交流的过程,亦师亦友。
应聘嘛,也是一个双向选择的过程,阿里的面试官给我留下了非常深刻的印象,不论是淘系,还是在投淘系之前投过的钉钉,面试官都是非常 Nice 的,于我个人而言,我非常喜欢且享受这样的面试过程。
拿到意向书和 offer 之前,还有一个小插曲:老板希望我们能够尽快入职,于是给我们安排在 4 月初前往杭州,然后我们几个实习生小伙伴买好了票,各自都准备好了前往杭州,然后老板在我们出发的前一天晚上得知要公司政策目前还不能安排实习生入职,于是我们只能退票。
当时我老板就说:「你们退票吧,手续费多少我补给你们」,疫情原因集团政策还没放开,估计还要等一段时间。
签了意向书之后,等 offer 也等了好一段时间,老板在这过程中积极协调,不断跟 HRG 沟通,希望我们能够尽早入职。
等待 offer 的这段时间,我跑去了腾讯,实习了一段时间。由于是远程办公,然后还是一些打杂的工作,做的不是很开心,面试的时候腾讯的 HR 还明确说明了转正会比较困难,后来收到了阿里的 offer 之后,就离职了。
买了人生中的第一张机票,一个人提着行李箱,人生中第一次坐飞机,落地杭州。
到了杭州之后因为疫情的原因,暂时只能住酒店远程办公,而且恰逢阿里日,园区内外异常热闹,无法入园的我错过了这一年一度的盛典。只能通过钉钉,看一看师兄师姐们的合照,通过直播,看一看园区里有什么热闹的活动。
7 天之后,得知可以入园了,激动又兴奋的我,怀揣着自己当初进大厂的梦想,走进了这个我一直向往和憧憬的公司。
6 号楼北面,一进门就看到了我们用户增长的大旗,然后就是见到了自己的老板。跟老板打了招呼之后,我被领到了我的导师,也就是我的师姐的工位,在师姐的带领下走访了各个师兄的工位,与师兄们打了招呼。
我其实是一个比较腼腆的人,尤其是第一次见到的时候,会有些扭捏,并不是非常放得开。好在师兄师姐们都非常 Nice,很热情地跟我打了招呼。
真正与自己未来的同事们见了面,还有一直崇拜的、Rax GitHub 仓库 Star 还没他博客 Star 的零头多的 @冴羽[4] 老师(误),没见过世面的农村孩子流露出难以言表的喜悦。
之后的时光,我白嫖了两三次团建,白嫖了每周两次的下午茶,团建里玩游戏拿了第一名还得到了老板赠送的阿里定制背包等等,享受了一些公司的福利(亲橙里很多店铺阿里同学优惠、杭州口腔医院阿里同学八折),也和师兄师姐们一起参与了一些业务的开发,充实且快乐~
成长
前面是一些闲聊的内容,讲述了目前为止我与阿里的故事,这个部分就来讲讲,阿里与我的故事。
对于阿里在国内的技术实力和影响力,相信应该不用我多说。阿里就像是一所大学,是一个非常广阔的平台,这里有任何你感兴趣的、领域里最前沿的一些知识供你学习,也有各个领域叫得出名字的大佬时常做一些分享。
「作为一名阿里的实习生,我很幸运,也很荣幸能够进入这样的一个大平台。」
我说这样一句话肯定有人会说阿里味太重之类的尖酸刻薄的话。没关系,换一个立场:如果你是我,本科还没毕业就能进入一家市值接近万亿美元的公司工作,你的心情是怎样的,你是否会跟我有一样的感受。更何况是一所不知名的双非本科。
人际交往
说实话,应届生多少都还带一些书生气,尤其是本科生。如何尽快地融入一个大集体,融入社会,是我最先面临的问题。
大学入学,大家会通过军训的方式相互了解认识,帮助我们尽快融入集体。
到了公司,大家都有自己的工作,每天都是忙碌充实的,如何相互了解认识,去建立良好的人际关系是首当其冲需要解决的问题,也是最重要的问题。
于我而言,我个人的做法就是珍惜每一次表达自我的机会,无论是周会还是团建活动,有表达自我的机会就好好把握在手。
「只有首先对他人敞开心扉,才能让他人对你更加了解,才有迸发出火花的可能~」
业余时间可以多聊聊生活,聚餐的时候多聊天,分享自己最近的了解到的奇闻乐事,抛出一个话题,就很容易聊起来。
对于自己的人际交往,逐渐有了自己的方法,这点应该也算是成长中的一环吧。
技术能力
刚进入一个大型的企业,相信很多同学都有一个适应技术的过程,我也一样。
淘系 ToC 的业务大多数都使用的是跨平台的自研框架 Rax[5],要较好地融入开发,学习 Rax 就是一个不能绕过去的过程。
好在 Rax 的语法和 React 基本一致,React 的开发已经比较熟练了,Rax 上手也没有什么太大的困难。
需要适应的地方其实在于:相关的研发平台众多,自己手上的业务涉及到的各种研发平台/搭建平台都需要学会如何使用。
这一点是非常消耗时间和精力的,从项目的搭建到最后的开发,过程中可能需要使用到四五个研发平台/搭建平台,对于新人来讲不是很友好。
好在我的师姐非常贴心,涉及到平台的使用的时候,都会一步一步演示给我看,手把手教我如何使用这些平台。
刚来的一个多月,基本都在熟悉这些平台,开发一些简单的模块。
开发的过程中肯定也会遇到一些问题,大部分情况是自己的代码有问题,又或是缺少某些配置项,这些问题一般都能通过 Debug 和查文档得到解决。
老牌大厂的技术沉淀非常深厚,同时也有一些历史包袱,Weex 应该可以说是比较大的历史包袱了。
大多数时候开发 Weex 的 Native 页,都需要先在 Web 上开发完成了之后再查看 Native 页,然后解决一些兼容问题带来的差异。在 Weex 中的调试是比较困难的,而且还有一些样式/语法约束,在开发的过程中需要时刻注意。
最近 Rax 小程序的运行时方案也出炉了,能够抛开语法约束直接使用 Rax 写小程序了,这个方案可以说极大地方便了开发者。
最近在做的业务,就使用到了 Rax 小程序的运行时方案,由于是第一次在业务中落地这个方案,踩了不少坑,这其中还涉及到了不少技术问题,由于自身的技术能力还不够,有些问题没办法自己解决,需要四处请教师兄师姐。
Rax 的脚手架配置是不透明的,开发者没办法通过修改配置的方式解决开发中遇到的一些问题,只能通过脚手架对外暴露的配置项,进行有限的自定义。
开发过程中遇到的问题,很多时候会涉及到一些组件或仓库的源码,如果是多端项目还会涉及到一些容器相关的知识,这其中因为自己读源码的能力欠缺,给开发带来了不少困扰。
经过这一段时间的学习开发,也算是梳理出了一个解决开发过程中的 bug 的思路:
业务开发过程中的问题,如果自己没办法解决的,基本都能够通过沟通或者咨询解决。
踩过的坑也需要及时记录下来,其他同学遇到的时候能够给他们指个路。
开发的过程中也一直在思考,如何写出低耦合、可读性高、可拓展性好的代码。
为了达成这个目标,最近也一直在学习设计模式,在每次写代码之前思考业务逻辑,设计代码结构实现最终的功能。
回顾自己的代码,其中有不少没必要的分支结构,就可以尝试使用策略模式对代码重新设计。
来到淘系之后,我比较系统地了解和学习了前端自动化测试[6]的一些知识,学会了如何使用 Electron 进行桌面应用开发[7],接触到了 Rax 和 Weex 实现的架构[8],见识到了不少研发/搭建平台,了解到了他们的设计思想和实现方式。
站在现在的角度回顾自己进入淘系之前的学习过程,前后的变化可以用一个段子来形容:「土八路」 和 「正规军」。
淘系这样的大平台,能够提供非常广阔的视野,从前很多从博客中了解到的概念,从只能泛泛而谈到能够结合实际场景谈看法和应用,也许是我这段时间在技术方面最大的成长。
业务能力
于我个人而言,学习前端更多的是对前端技术的热爱,一直想做一个技术顶尖的开发者,像尤大一样,能够利用自己的知识和技术,开发出类似 Vue 一样的现象级框架。
曾经在微信上也与 @神三元[9] 做过较为深入的讨论:
❝在大多数公司里,前端都是以半个工具人的身份,作为后端同学与产品运营之间的纽带进行沟通和开发。大多数的前端都是业务前端,每天跟各种各样的业务方打交道,参加各种各样的业务评审,游走在业务的最前线。
基于这样的现状,我们应该怎么去平衡技术和业务之间的问题?
❞
我相信大多数的实习生同学应该跟我一样,不太喜欢去深入了解业务,更加倾向于技术。
以前我会觉得去理解业务不应该是我们开发来做,而是由产品和运营的同学来做,开发过程中他们提什么需求我们就做什么,这可能也是作为一名在校生的惯性思维。
一直以来我都是希望做一些纯粹点的技术型项目,用技术解决一些技术问题,开发一些现象级的开源项目,这也是我学习前端的动力和初心。
直到最近拜读了 @于江水[10] 前辈的《我在淘宝做前端的这三年》系列[11],感触颇深,开始从心底改变这种想法。
其中有一段话让我虎躯一震,有种醍醐灌顶的感觉:
❝「业务能力应该是程序员除了技术之外,最具价值的能力,也是最必要的。因为技术本身很难赚钱,业务落地才能赚钱。当程序员具备了业务和产品能力,才可能选取业务和技术的折中点,又快又好的支撑业务,带来价值和效益。懂产品和业务(甚至交互设计)的技术,更容易跟其他工种进行沟通,用通俗易懂的方式介绍技术实现和难度,可以提升在企业中的自身地位和价值。此外,对于架构师,理解业务也是必备能力。」
❞
很多时候纯粹的技术项目是没有用的,一个技术项目的产生,背后一定是有目前生产实际中的痛点驱动的。如果一个技术项目的出现,没办法解决生产实际中的问题,那么整个技术项目出现的意义在哪里?
任何现象级的开源框架,都是解决了一个领域中一些非常棘手的、迫切改变的问题的。
最近在逛知乎的时候,看到了阿里的 React Hooks 库 ahooks[12],然后跳转到官网一看,这简直就是一个神仙库,基本覆盖了大部分业务中可能涉及到的 Hooks 需求,尝试了一下之后直呼过瘾。
用过之后就在思考,这样一个好用的库,还是从业务中来到业务中去的,印证了前辈的话。
最近在做的业务算是比较贴近自己的娱乐生活了,在参加评审的时候也会对业务方的需求做出一些思考,有时候在业务开发的过程中遇到一些问题,会站在用户的角度去审视这个需求的必要性和合理性,然后去和产品同学沟通。
很多时候我们需要站在业务方的角度去思考,用什么样的方式和技术能为业务方带来更大的收益,这点是最能体现自身价值的。
技术的出现本身就是立足于解决实际问题的,没有任何一个技术是能够脱离现实而存在的。
对于业务前端,最能展现自身价值的事情应该是在业务支撑的过程中产生一些沉淀,这些沉淀能够为整个业务中的每一个同学减负,优化整个流程,提升开发效率。
而对于技术前端,则应该深入业务前线,去了解业务中普遍反馈、深恶痛绝的问题,基于这些问题,用技术给出一个完美的解决方案。
在刚来淘系的一段时间里,由于需求都比较零散,很难去系统地去了解和思考业务中的一些问题,最近深入到了业务中才真正感受到了解业务的重要性。
事实就是,你只有在深入了解了业务之后,根据业务类型和实际情况,去选择相应的能够又好又快实现业务需求的技术,至于你用 React、Vue、Angular 还是其他框架来实现,业务方并不关心,他们关心的是业务上线后的数据是否符合预期。
之前在学习完了自动化测试的一些内容之后,在团队里做了一次分享,简单讲了一下学习的心得,但是由于 Rax 的适配原因没能在团队里推广。
自动化测试的技术好吗?当然好。那为什么没能真正落地?
抛开 Rax 的适配问题,如果使用的框架是 React,如果没能解决开发中的痛点,只会徒增开发者的负担,一样是一门无用的技术。
其他方面
其他方面的成长最多的还是与人沟通的能力吧,越来越能够清晰地描述一个问题,越来越敢于表达自己的看法。
其实有时候会觉得自己只是一个实习生,害怕自己提了什么很愚蠢的问题,给人印象不好,总是不敢表达自己的看法。
深入挖掘这其中的原因其实就是对一件事情还不够了解,没能抓住一件事情的本质和主要矛盾。
还有一点就是预估工期越来越有把握了,以前总是不知道一个功能或者页面开发要多长时间,自己心里没有底,现在大致可以根据页面的复杂程度和其中可能出现的问题估计一个比较准确的工期了。
结语
「90 天,时间真的好快呀~」
这 90 天里感觉每周都有聚餐或者团建活动,在这样的团队工作生活真的非常愉快。
也非常感谢我的师兄师姐们,给了我很多帮助,在我刚来杭州的时候给人生地不熟的我很多生活上的指导,也在我实习的这段时间教会我如何在业务中独当一面,至少现在做项目有底气有信心,也能很好地预估工期了。
特别感谢一下全世界最好的元泉师兄,温柔漂亮、脖子以下全是腿的若欢师姐,很温暖很贴心。
令我感到难过的是师姐没多久转岗了,我的导师换成了接手师姐业务的燃堂师兄。
其实这个时候是实习生最焦虑的时候,外面各种大厂的秋招信息满天飞,但是实习生手上又有业务,还有转正的压力,很难抽出时间去复习面试,如果转正答辩情况不好,得知结果的时候也已经 9 月份了,错过了很多其他地方的好机会。
其实这也不是什么吃里扒外或者吃着碗里的看着锅里的什么的,我相信这种焦虑大厂的实习生们应该都有,毕竟公司的岗位数量受环境影响大,如果大环境不是特别好,实习转正的机会也可能不会特别多。
最近也得知了转正答辩的消息,离转正答辩没多久了,师兄也很认真负责的跟我一起梳理了一些实习的项目,希望我能在师兄的指导下顺利转正,能够留在这个温暖的大家庭,继续跟这群可爱的同事们一起工作。
就这么多吧,祝自己能够顺利转正,也祝所有正在实习或是秋招面试的小伙伴们能够拿到心仪的 offer,我们一起加油~
Reference
@于江水: https://juejin.im/user/4212984287594775
[2]@渊辰: https://juejin.im/user/3210229686482942
[3]@渊辰: https://juejin.im/user/3210229686482942
[4]@冴羽: https://juejin.im/user/712139234359182
[5]Rax: https://rax.js.org/
[6]前端自动化测试: https://juejin.im/post/6844904194600599560
[7]使用 Electron 进行桌面应用开发: https://github.com/wjq990112/Holiday-Editor
[8]Rax 和 Weex 实现的架构: https://rax.js.org/
[9]@神三元: https://juejin.im/user/430664257382462
[10]@于江水: https://juejin.im/user/4212984287594775
[11]《我在淘宝做前端的这三年》系列: https://juejin.im/post/6844903783198097416
[12]ahooks: https://ahooks.js.org/zh-CN