一名大三前端er在快手的实习总结

922 阅读8分钟

offer时刻.jpg

导语

简单介绍一下自己,大一接触前端,大二下开始系统学习前端,大三上拿到快手、Momenta、旷世的实习offer,由于不想放弃这次宝贵的机会,最后休学去了快手,这是我当时在牛客网发布的快手面经

简单介绍一下团队,本人是在快手数据平台部/生产与分析技术中心下的前端研发中心实习,团队职责是负责流量管理与分析产品、垂直领域分析产品、全域数据资源平台等前端研发与技术创新工作,团队使命是造通用易用的流量管理和分析产品和工具,高效高质量交付垂类领域产品,团队愿景是通过丰富流量工具提高用户埋点开发和分析效率,通过沉淀组件和共建数据规范提高产品需求交付效率,探索数据领域低代码方案。

入职前后心路对比

还记得当初懵懵懂懂开始学习前端的时候的我是最纯粹的,日常与群友“吹水”(一个优质的本科生前端学习群,群主是大一就进百度,大二进亚洲最强前端团队——蚂蚁金服技术体验部的大佬),背地里悄悄“卷”技术到凌晨,羡慕比我大一届的群友学长们秋招成功拿到大厂offer(BAT都齐了),在群技术氛围与“内卷”的熏陶下,我也怀揣着一颗大厂梦,日思夜想昼夜难寐,也许是“宇宙吸引力法则”作祟,最后如愿进了大厂实习。

QQ图片20230112200805.jpg

当初天真的以为进了大厂就能证明自己是一个“优秀的人”,就能从疯狂的“考研”内卷中脱离,追求自己想要的生活brbrbr。但事实果真如此吗?进了大厂,和我想的出入还是挺大的,工作日常拧螺丝,总是有各种各样的Task打乱节奏,每天就是做需求做需求(虽然实习生确实是这么用的没错),甚至有时候为了改一个样式都能耽误好久(所谓的切图)。技术上的成长在实习阶段其实是没有在学校里快的,因为做业务吃的是老本,系统学过Vue、React开发框架都能做,本来想着来实习能否来做一些工程化或者Node BFF最佳实践什么的,但是我们组貌似人手不是很够而且需求确实很多,就导致本来还有一个平台性能优化的稍微有一点意思的任务一直delay了。

三个多月的实习,我深刻的感受到从事前端开发没啥意思,冷静下来好好对话自己发现当初选择前端纯粹是觉得前端进大厂相对容易一些,进大厂对我而言纯粹就是为了“体验一把”,也是逃避学校里考研“内卷”的表现。而且个人觉得计算机科班学的操作系统、数据库、组成原理这些对于前端来说确实用不太到,感觉就这么就业了我应该会遗憾吧,大学有种白读了的感觉haha。可能前端并不是很适合我的性格,对于界面美观度、交互友好性我也并没有很感冒,个人还是比较喜欢后端,因为后端更加接近业务,而且在大厂一般都是后端出技术方案,后端的话语权比前端重太多,前端感觉有种“被带着走”的感觉~也可能是这一段实习工作内容的原因吧,对技术方面的热情消磨了很多,BBQ了。

上面说了这么多不是想传播负面情绪哈,每个人都有每个人的价值判断。

日常实习

话说回来,在大厂实习确实也学到了很多,技术上和软实力都有所提升。

软实力

  • 文档撰写、沉淀能力
    • 为团队沉淀数十篇文档,梳理前端通用组件,提高代码可维护性
    • 技术分享一次

qq_pic_merged_1673526788381.jpg

  • 团队协作能力
    • 学习到了大厂完整的工作流、践行DevOps研发体系
    • 软件工程理论活学活用,运用的Scrum的思维去进行团队管理
    • 日常对接PM、UI、RD的同学,学会与他人“撕逼”

CEBF269A5FEA54053DF2B24DF375DDBE.jpg

  • CodeReview规范严格,更加重视上线质量
    • 每次上线前都要经过一两个团队内的其他同学代码审核,方可合入dev分支,代码质量要求严格
    • 为了后续问题追溯,需要填写上线清单

技术

因为团队是做流量方向业务的,技术上最大的成长就是接触到了前端埋点SDK设计的一套体系。团队的研发的埋点SDK Weblogger 经过多年的演变,从单一支持 Web 埋点上报,到现在支持 H5、RN、小程序等多平台,支持上报到 v2、v3 双链路,支持端内桥上报、HTTP 直接上报等上报方式,支持常规页面、半屏页面、无 PV 事件、压缩处理等多种上报场景的支持。在多平台多场景支持的过程中,Weblogger 的能力已经趋于稳定,并且已经有比较可靠地单元测试、质量和异常监控保障。

同时由于 Weblogger 前期人力不充足不到 1 人力,大部分的开发精力放在多平台多场景上报需求的满足上,随着上报能力丰富,架构方面也逐渐暴露出一些问题,主要表现为:

  1. 多基类多实例,耦合严重: Weblogger 现有方式是通过基类继承的方式实现,主要有 CommonPackage 公共信息管理类、UrlPackage 页面信息管理类、Logger 埋点发送器、Weblog 埋点接口类,多平台的支持则再这些类的基础上进行继承加复写,类的设计和不同平台的能力有比较强的耦合关系,多一个平台就要多 4 个以上类的继承,一个最终的实例会创建 7 个以上的中间实例。
  2. 模块不单一,功能冗余: Weblogger 支持两种不同的链路,支持 show、task、custom 等多种事件,这些功能的模块没有细分,导致即使只使用一种事件、一个上报链路也需要将所有能力引入支持,增大业务包体积、额外消耗带宽和性能。
  3. TS 类型声明不规范: Weblogger 虽然一直依赖是基于 TS 进行开发,但却对类、接口的声明未能做规范的约束,还是像 JS 一样,随意的可以进行类型的扩展,业务使用时也无法通过类型的约束快速知道接口调用是否有问题,很多问题还要等测试阶段才能暴露,增加开发成本。
  4. 插件体系粗暴简陋: Weblogger 插进是可以为业务提供更易用的埋点上报能力的封装,但 Weblogger 未能对插件声明周期进行统一的管理,每个插件都比较孤立,能力难以复用,比如很多插件都要单独实现埋点的收集管理,页面信息、公共信息变更的处理等,使得插件的扩展成本变高,也会导致功能代码的冗余。

基于以上问题,需要对 Weblogger 进行架构的重构升级,定为 Weblogger 4.0 版本。重构除了解决上述问题,也需要考虑对微前端、script 异步加载、vue、react 等场景进行支持。

image.png

image.png 当然以上只是个人窥见的冰山一隅,日后还需继续精进。

快手生活(多图预警)

福利

快手的福利在20年之前是“真香”,免费三餐下午茶,工作日8点下班有30的能量券补贴,10点下班打车免费,周六周日来公司中午晚上都打满卡就有120的能量券补贴,公司罗森、星巴克、食堂都支持刷能量券消费,反正在公司内部除了有时候点外卖,饮食上基本不需要我自己花钱。22年加入快手取消的免费三餐下午茶了,但其实问题也不大。

公司还有免费班车、健身房、保健小屋、理发店等福利,每周都可以领口罩、纸巾什么的,快手行政的同学服务态度也很好,实习生有任何生活方面的问题找万事通“客服kimi”就行,在北京一个人不熟悉想找啥好玩的直接搜内部公开的“玩乐”文档就行。

F638C97D43575A86970B8E2D3F6BC7E0.jpg

环境

话不多说,直接上图

85FEDD69DC28BF508655796EF7AB78EF.jpg

C40FA8465141F34C6013AFDACC8DF86E.jpg

16AA5D4C422ADF8EF1BC152A4EA5C7B6.jpg

43645C2D3854851D4055EBB564C57758.jpg

4050EF734E750825617953FAAFA0541E.jpg

7B1FC9FFEF106302A2FF91648052F49F.jpg

结语

对于我而言,准备从事开发的大学生的快乐其实就两种——历经层层选拔斩获大厂offer时盆友圈“奔走相告”喜悦以及离职前不带任何遗憾地选择远方的路的坚定。

个人决定考研了,综合来看个人觉得还是学生阶段好,提高学历的同时再体验体验学生生活,多点时间学习充实自己认识更多优秀的人,而且以学生身份多去几个厂实习也是一件挺有意思的事情,以后就业的话对Go云原生开发或者全栈比较感兴趣。

写下这篇文章,以此来纪念我在快手的一百多天。