研究生期间项目总结

2021/04/07 Blogs

自大三进入实验室开始实习,已经有五年的时间了,马上就要研究生毕业了,一直想总结一下这些年来的工作、学习和生活,最近闲来无事,就写下了这篇文章。

先从我和徐老师的相识聊起吧,大三的时候我在出国和保研之间犹豫不决,由于出国需要科研经历,保研也需要提前联系实验室认识老师,因此我参加了由教务柳絮老师发起的“放飞计划”,通过这个活动,我认识了徐鹏老师和自邮之翼团队。这个活动从实验室导师角度,是可以招收一批实习生,学生角度可以提供科研和保研的渠道。

大三时侯的我对coding其实并不是很感兴趣,或者说也不是很开窍,水平停留在完成C或者JAVA大作业的程度。放飞计划的安排的第一个工作任务是“三版通讯录”,如果你是徐老师的学生,那你看到这里一定是会心一笑了。三版通讯录是一个Java Web项目,功能是在网页上可以CRUD人和对应的手机号,可以说是Java Web最入门级别的小工程了。第一版不允许使用任何框架,通过最原生的方式实现相关功能。第二版加入了JQuery的ajax实现异步刷新。第三版通过ssh(struts+spring+hibernate)框架实现通讯录。虽然从前端来看,界面变化并不大,顶多就是有没有css渲染的一些小差异,但是通过三版通讯录,对Java Web的技术的发展有了一个大概的认识。

说来惭愧,当时由于没决定好保研还是出国,考GRE和托福的同时做着放飞计划的项目,拖了大半年才把三版通讯录做完,当然也因为当时的coding和学习能力都比较差,问了同级的张益铭很多问题,还问了很多实验室的学长比如大林哥、豪哥、昊哥等人才做出来。虽然过程有点小痛苦,不过最终还是做出来了,并且学到了很多知识,也逐渐的开始对做工程有一个入门的认识了。

在完成了三版通讯录之后,我就正式的进入自邮之翼团队开始我的实习生生涯了。简单介绍一下自邮之翼团队吧,自邮之翼团队是 北京邮电大学 / 网络与交换技术国家重点实验室 / 交换与智能控制研究中心的一个项目团队。团队带头人是徐鹏老师,成员是徐老师下所有研究生。具体团队介绍可前往自邮之翼官网。这是一个工程能力非常强的学生团队,不同于交换其他组学术能力很强,自邮之翼更加偏向于工程能力的培养,也因此我的工程能力在近几年得到了较大的进步。

以实习生的身份进入实验室后,我跟的第一个项目是轻项目。轻项目是一款团队协作应用,其功能类似于Teambition。在轻项目上可以与项目成员进行任务协作,文件共享或者提交周报年报等功能。不同于三版通讯录是入门工程,轻项目让我第一次感觉到代码实现的价值,通过完成一个又一个需求,让这个自邮之翼团队每个人都会使用的应用变得越来越好,尤其是完成将任务卡片通过拖拽的方式改变任务状态需求时,这是我第一次在coding过程中感受到的巨大的成就感。在轻项目实习期间,前端后端都有写,由于后端仍然是简单的数据库增删改查的一些实现,后端功能能力提升较小,更多的是在前端上了解了更多的框架组件特性,例如Echarts的使用等,让前端展示越来越炫酷。

身份的转变是在大四,由于语言考试都不太顺利,我放弃了出国的道路,选择了保研。非常幸运在保研激烈的竞争下“活”下来了,从实习生转变成了自邮之翼团队正式的一员。在参加项目组一学期一度的项目总结会时,听了几个大学长的汇报(当时和听天书一样,啥也听不懂,只觉得牛逼了),我选择进入云海项目组,去做云海IaaS。当时的想法是,徐老师做云的时间最长,最出名,最厉害的项目组就是云海,我要挑战一下自己,因此和徐老师毛遂自荐进入了云海项目组正式开始了我的研究生实验室生活。

刚进到云海做IaaS的头一年还是比较痛苦的,由于IaaS这个工程将近有十年的历史了,一届又一届学长学姐交接流传下来,在高校团队下,不像互联网公司一样有严格的代码审核流程和交接要求,造成的结果就是代码风格存在许多差异,并且注释非常缺少,存在许多冗余废弃代码,造成阅读学习成本较高,而且创建虚拟机流程较为复杂,涉及到内存硬盘网络等多个资源的申请,因此光是阅读代码就用掉了半年左右得时间,才对这个庞大体量的代码有了一个大体上的掌控。除了代码,还有IaaS的部署同样也是一件非常让人头痛的事情,涉及到许多服务的安装,文档也是非常散落不齐的,还有许多点是靠着口口相传,针对这些问题,我在学习接手的过程中,重新整合了文档,并且写了一键部署的脚本,优化部署环节,将可以脚本化的地方都脚本话,减少部署一套IaaS的时间成本。

后来随着我的逐步成长,章润学长就将IaaS项目交接给我了。在负责IaaS项目过程中,也接触到了好几个甲方公司,包括公安部某研究所、邮储银行某分行等。其中最为复杂的属邮储银行了,他们有将近20台物理机,从装操作系统开始,要将这些物理机部署虚拟化服务,同时还有一些定制化需求,例如需要支持windows server和红旗虚拟机,需要个别虚拟机创建在指定的物理节点上,针对该甲方提出的需求点,均需要做特定的支持。在与这个甲方合作的过程中,我也跑去邮储银行办公地很多次(安全原因必须现场办公均内网),差不多在很长一段时间每周至少去一整天的邮储银行,在出差的过程中,感受到了银行的科技部的工作强度,朝九晚五,双休,主要工作内容是督促我们乙方干活,饭菜可口,生活真的是十分舒适了。。。。不过最近银行的科技部也开始逐渐的没那么舒服了,据说部分银行的程序员也开始996了。

在负责IaaS的过程中,我还参与了分布式云项目。这个项目的甲方是石家庄的某研究所。在做这个项目的时候,出差去石家庄也有三四回吧。最长的一次在石家庄住了整整一周,一直在研究所内部进行项目部署调试开发工作。这个甲方相比于邮储银行就更加的注重安全了,毕竟是军方背景。进到园区里需要扣押身份证,园区里也有各种迷彩的装甲车等,当然,分布式云面向的也是战术环境,主要解决的问题是战术环境下的容灾问题。在出差过程中体验最深的点是,全隔离式的开发,平时遇到问题习惯性的百度或者Google一下,在这里,几乎没网,主机如果插入了外来的U盘就由于安全原因报废了,可以说是非常吓人了,离开了百度Google后那两眼一抹黑的感觉的确是很难受了,幸好当时我们是三个人,同行的还有章润学长,和我们这一级的王智大神,不然可能我们一周都搞不定了。

除去云海IaaS和分布式云这两个云相关的项目之外,我还参加了和航天某院合作的天地一体化项目。该项目主要解决的是天上的卫星和地上的数据中心之间的云间的调度问题。不过该项目不同于IaaS和分布式云,不涉及到较为复杂的后端逻辑,主要侧重于仿真系统的实现。在这个项目合作期间,我也前往航天院多回,既有和孙其博老师前往去讨论项目,也有过独自代替徐老师去参加项目评审大会,在这个过程中,也感受了一下航天口的氛围,有点一言难尽,如果说邮储银行科技部和石家庄某所至少有技术背景,航天某院更像无技术背景的产品经理,派系之争我这一个外行都看得十分明显了。在参与他们的大会时,有一个评审专家的意见我觉得就非常真实,国家下发的项目,被他们拆解成许多小项目,然后都外包出去,自己负责验收,和皮包公司一样。

到此,和云相关的故事就告一段落了,时间大概从我大四一直持续到研二交接给曹亚洲学弟为止。甲方也是多种多样,很幸运在做工程的同时了解了不同类型企业的工作现状。

在研二毕设选题期间,我没有将方向继续延续在云计算方向上。因为做云计算也有将近三年时间了,我想在其他方向上也有所技术积累,我选择了大数据计算方向。

项目起名为孔明,其本质是实时决策引擎,通过实时计算框架Flink对流式数据进行规则判定并执行相关的决策策略。在这个项目中,参加了Flink Asia大会,对近年来火爆的Flink流式计算深入了解。同时在这个项目中,对Kafka的使用和了解也进一步加深了。由于疫情原因,本来本项目的甲方合作没有谈成,还是有一点可惜的。不过在实现这个项目中,对大数据计算、中间件的知识储备得到了提升。

在做完了毕设项目后,研二的暑期,我去了字节跳动基础架构下的流式计算部门实习。这个部门主要是在开源Flink版本上,做一些升级改造的工作,以适配字节跳动内部业务,同时也反哺社区。这是我第一次正式在互联网公司工作,大小周以及字节高强度的工作节奏,让我印象非常深刻。在有on call的一周,就像是魔鬼一样的工作强度。我实习时间只有三四个月,但是就已经累到心脏不适,其强度不言而喻,但是相应的,技术成长可以说是飞跃式的。而且在这种纯技术部门,同事的技术水平都相当的高,在这个部门我认识了一些实力爆表同时深爱着技术的那一帮子人。在字节工作期间,我做了以下工作:丰富 Flink SQL 使用场景,支持 Flink SQL Bytable Connector, Bytable 架构类似 Hbase,是字节内的一种 kv 存储,支持Bytable Sink/维表,支持 Bytable 的 Cell 按用户传入的时间戳做为版本写入。升级 Flink SQL 的 Redis/Abase 复杂类型支持,新增 List,Hash, Set, Zset 四种复杂类型的数据写入以及维表读取。Flink SQL 下可通过推导或者自定 DDL 方式接入 Thrift RPC, 支持在 Flink SQL 下的 RPC 使用场景。

通过这一次互联网实习,不仅在技术上得到了巨大成长,同时工作的沟通能力也得到了锻炼。由于流式计算的特性,工作中需要对接上下游部门,工作协调沟通能力变得十分重要。不过我还是不太赞成这种以自身身体健康为代价带来的短期内的巨大提升,我认为在保证健康的前提下,长久的成长才是该有的样子。

第二次实习去的是阿里妈妈,实验平台团队。阿里妈妈有许多的算法需要做实验,搜推广的算法据需要实验做支撑,我去的这个团队负责的就是实验平台。通过分层分桶,对实验效果进行对比。说实话在阿里妈妈实习期间,没有太多技术成长,也就是学了一些阿里内部的一些框架,前端搞了搞umi+antd那一套,没有太多的技术深度,主要就是写接口、调接口。不过在阿里实习期间,感受了完全不一样的工作强度,工作节奏较慢,部门氛围及其和谐,以至于我经常有时间去阿里的健身房健健身….大家到的都很晚,走的也比较早,和字节形成了非常鲜明的对比,我当时和同学聊天说这个部门如果是我原来字节那种强度,最多安排两个人,而这个部门加上我却有8个人。不过结果也非常的魔幻,在我离职后,研三春节和阿里mentor拜年时得知,这个部门人员变动巨大,2个调去高德,2个调去蚂蚁,最后部门只剩下了2个人…果然啊,互联网悠闲的部门就是容易被优化掉,不过同时也证明了,任何一家公司,都会有忙的也会有闲的部门,因为正好在阿里经历了一个双十一,别的部门都忙的昏天黑地,而我们部门却依旧悠闲。

通过在字节跳动和阿里巴巴的实习,体会了工作的感觉,最后在秋招阶段,拿到了阿里、腾讯、字节跳动、建信金科、中国移动等多家公司的offer。由于建信金科、中国移动等国企并没有给我开出户口指标,我选择了去互联网卖命。最后选择的是腾讯pcg,理由也非常简单,待遇最好。(还有一点是离我女朋友很近)

工作定好了之后,我就安心回学校弄毕业论文啦,目前呢,论文盲审已经通过,明天就要和我们宿舍的一起去贵州毕业旅行了。碎碎叨叨的,把这些年来做过的一些比较关键性的项目说了说,也算是给自己学生时代的一个总结文叭。

Search

    Table of Contents