总结一下实习期间的点点滴滴
我从20年4月实习至今,工作了两家在杭州的公司,上个月拿到了转正的sp,现在码下这一篇文章,当作这一年的实习时光的总结。
为什么会实习这么久呢?
这其实就要从19年开始说起了,那时候还是大三的上学期,12月份从学校回来去三亚旅游玩,以为过一个月就能够回学校学习,当时的计划是大四的下学期左右开始找实习,但是由于爆发了疫情,家里人都是医生,经常会因为可能的疑似病例回不了家,自己在家也不能够出去,所以就在一边阴沉的气氛下,一边盼望着看什么时候能回学校上课。(个人当然还是觉得学校才快乐自由)
到了三四月份左右,就开始气氛不再紧张了,然后学校也发出了通知,学生在家上网课.这个时间点正好是金三银四,有几个同学也拿到了好公司的offer,我也准备面试了,当时是面到了杭州的一家阿里系公司,然后下一周就去了。
第一次进入公司的我
作为当时一个刚进入公司实习的同学,在我的潜意识里,公司应该是很多勾心斗角,一个个西装革履的职员,很严肃的那种,我到现在还记得我被HR带到我的座位的时候是抖得有多厉害哈哈哈。
第一次实习,感受最深的就是,合作。在学校的话,一直都是自己一个人来做前端,顶多就是和寝室的后端合作一把大作业之类的,github只有一个人使用、代码只有自己看、css的important只有自己知道放在了哪里、驼峰与下划线混用命名、Magic number一大堆等等,开始的一个多月基本都是半数时间在code review里面度过的,抓命名,抓函数抽取,抓代码风格,或者是。当时经常出现各种状况,比如在merge代码时冲突一脸懵逼、被前端问为啥把他的配置改了、被boss问为啥首页导航栏被我整崩了等等。
后面其实有问过那个带我的大姐姐为什么一直帮我code review,不累吗?她说不累,主要是怕你污染我的代码(/黑人问号脸上线.jpg)。到后面能够在问到可复用代码位置的基础上,独立完成一些比较简单的Table、表单、拆一些自己之前写的职责不单一的组件了,当然还是需要code review了,进步只是能够在code review之前猜一小部分可能会指出来的问题然后先改掉。
在这个公司给我带来的成长是,体验了在公司里,前端合作开发一个项目的流程和注意事项,体验了工作状态下的程序员是什么样的,第一次赚钱的感觉,虽然实习阶段比较少,但是毕竟自己赚钱自己花,当时还是挺开心的哈哈。
七月份的跳槽
实习三个月之后,还是和前端主管提了离职,主要原因还是住的地方较远,本身可能也比较难负担杭州比较靠市区位置房租,和HR协商后也没办法给我配一个电脑和显示器或者稍微涨点工资,正好当时有同学给了一个内推,当天下午就去面试完了,第二天还是选择离职了。
米卡到了第二个公司
七月份到了我的第二个实习公司,和上一个公司一样,也不是业务平台而是公司内部工具平台的前端开发,有一个几年的前端全职带我。个人体验除去福利这块的话,这个公司的工作流会比较对我胃口一些。code review是一定有的,然后有开发、stage、线上环境的区别,使用的是Phabricator作为代码审核工具,不通过允许不能merge进主分支。技术方面的话相对较新,主要是用React框架,前端用Apollo + graphql做请求,中间层用Nest + proto,Nest这个技术相对较新,我记得当时看到这个需要我开发的时候一脸懵逼,这咋办我不会啊,慌张溢于言表哈哈哈,还好每次出问题都能找到人帮忙解决,不至于被一个地方卡住很久。
入职前一周一直是在熟悉环境的阶段,新发了电脑,安装开发环境,熟悉项目代码等等,到了一周后就开始做一些小小的代码修改,也需要各种修改才让过的,但是有时候看到diff上面给我的commit的“LGTM“的鼓励,还是会偷偷笑的(虽然就开始一个月了给俩,后面就没得了)。
入职两个月后开始自己接完整的项目需求,这个阶段可以做到比较基本的操作能够自己完成,diff不会被打回来太多次,开发速度稍慢,碰到Nest和性能相关的问题还是需要去寻找帮助。
入职八个月后转正了,因为负责了大部分这个平台的开发任务,所以给了一个E3的sp,这个阶段里慢慢地会比较注意,和产品的博弈、维护自己在团队的个人Tag(团建整了个小演唱会)、注意自己的休息时间和工作时间的界限、在不工作时间作一些个人沉淀,比如做做自己的博客或是文章等等技术以外的事情。
技术上比未实习前的进展
- 库的选择会考虑地更多,以前只要是好用的酷炫的库都要往项目上用,现在在选用库之前会考虑是否有更低成本的可替代方案,以及团队使用成本、对性能的影响、对整体代码的影响与修改成本。
- 代码本身会更注意职责单一,以前容易被自己开发的思考约束,反正只是自己开发,一整个函数可以写一百多行,如一个上传函数可能包括了开关Modal、修改组件状态、上传等代码,过于耦合,也不方便调试,甚至注释也不好去描述这个函数的详情。
- 避免写一些Magic Number,这东西会让你的团队开发者比较头疼,这里简单举个例子
// bad code
const canAddRange = (ranges) => {
return ranges.length >= 7 && ranges.length <= 16
}
// better code
const MAX_RANGE_LENGTH = 7
const MIN_RANGE_LENGTH = 16
const canAddRange = (ranges) => {
return ranges.length >= MIN_RANGE_LENGTH && ranges.length <= MAX_RANGE_LENGTH
}
- 以前经常会有想炫技的操作,现在尽量用更简单或可读性更佳的操作来代替。
现在的我
现在的博主已经请假了一个多月回学校写毕设咯,毕竟毕业才是比较重要的事儿,不全职写毕设和论文的话还是对完成答辩有点慌的。希望能在这段时间里我也能开开心心地把自己的路走好,也好好体验下最后的大学时光。