写于毕业之际
三年五个月的研究生生活转眼间落下帷幕。这几年的经历对我的影响是潜移默化的,隐约感觉到了自己在各个方面或多或少的的改变。一直以来心情也各种起伏变化,但若干年后终究难免变成浮云,唯有看得见摸得着的经历才是真正积累下来的财富。
本科期间,我极少玩游戏,也很少参加社会活动,专业课程也只是马马虎虎,把大多数时间花在了编程竞赛上,觉得编程是自己真正喜欢的领域。我一向不善于做出选择,直到大三,还没有想好毕业后工作还是读研。当时因为觉得水平有限找不到好工作、能够轻松的保研、加之马上要和携手几年的队友在ICPC赛场上背水一战,最后选择了在本校读研。在选择实验室的的方面,我不是太主动。电信系的大多数实验室都和“通信”有点关系,which我并不太感兴趣。我也深感自己数学太弱,难以在学术领域有所造诣。RCN当时是是本科班上编程方面比较出色的同学,也曾和我一同在ACM基地学习过一段时间,他当时向我推荐了比较偏向工程的W老师的实验室,介绍了实验室的主要工作,涉及的技术。我比较感兴趣,不久就向W老师发送了简历。
第一次进实验室的时候,实验室的整洁有序给我留下了深刻的印象。但是正式进入实验室工作以后还是有些不习惯的。实验室对作息的要求比较严格,这对我多年的弹性作息提出了很大的挑战,第一天午觉就迟到了很久,并且受到了亲切教育,从此便和闹钟结下不解之缘并基本告别自然醒。当时实验室人比较少,只有两届学生,而且属于起步阶段,技术积累非常有限,大家都深感压力之大,这间接导致实验室经常处于一种极度压抑的氛围之下,可能呆久了不知不觉就融入了这个氛围,但是刚进实验室时还是难免有些不适应。——我很快就知道了W老师是一个非常严谨的人,严于律人,更严于律己。
在这样的环境下,我稳步成长着,其中遇到的挑战也不少。好在一边看书一边练手,不久就渐入佳境了。
2009年底,考虑我们技术还较弱,为了让我们练手,W老师首先让我们实现一个实验室管理系统(也就是沿用到今天的XXXX)。功能不算复杂,大家分模块去攻坚。我负责的是实现邮件发送的模块。记得当时还和基地队友交流过我在做这件事,却当即被鄙视没技术含量。但就这么一个看上去似乎不太复杂的模块我当时处理得仍然捉襟见肘。其中比较麻烦的是处理多线程的部分,当时不知道Java多线程编程的一些实践方法,对“锁”什么的更是无概念。另外,不会下意识地进行模块化,导致大部分代码基本写在一个类里,或者一个函数上百行。最终,写出的代码图样,sometimes naive,可读性、维护性都非常差。反思一下,这个现象并不偶然,因为做算法竞赛的时候写的就基本全是这种只有上帝看得懂的代码。
2010年夏天接手了后来旷日持久的XX工作。算法构思了一周左右,开始编码。虽然意识到了编码习惯存在问题,但改正之事无法一蹴而就。所以写出的仍旧是单文件的难以维护的代码。尽管这样,还是一边debug,一边硬着头皮不断应对着甲方时不时提出的新需求。最紧张的时候还和W老师在实验室熬过一夜。最后好歹完成了任务,虽然我知道运行结果不够好,代码本身更不够好。
2011年春天得知新一年的这项工作仍由我们来做,我便开始着手重构XX算法的代码了。当时已经粗略学习了一遍设计模式,对主要的模式有了大概的印象,写代码的时候会下意识地回忆一下。算法大致思路没有改变,但代码完全是重写了,工作基本集中在模块化。期望最终做到可扩展,组件可插拔,功能分界清晰。最后基本实现了预期,并找到了非常合适的接手人选,而且这个框架直至今天也再没迎来大改。后半句一方面说明了这个框架已经基本合理,可以应对甲方提出的新需求,但另一方面已经暴露出问题——技术水平的进步开始变慢了,或者。。我对这个业务的热情已经逐渐消退了(要知道,没有热情怎能屁颠屁颠去为2010年的那么一大坨代码细心重构并实现)。不得不承认这是实验室项目里比较能体现想法和设计的项目之一了,在这个项目上面的工作一度让我体验到了通过代码解决难题的快乐,但是我的新鲜感如此有限,竟无法持续两年。
XX的工作虽然持续了几年,但工期基本只是集中在每年正式运行之前的一两个月(除去和FCL的交接)。如果说XX是阵雨,数据导入的工作则如绵绵细雨,寂静无声,却让人无法看到它的尽头。数据中心最重要的当属数据了,它是一切线上业务和统计分析的基础,为了一切,必须先完善我们的基础数据库,让系统充满血液。但实话说,将Excel的数据弄进数据库这项工作的挑战实在比不上XX,更多的是细心编写代码、了解字段含义、细心处理各种表间关联,所以新鲜感从一开始就无从谈起。我处理了几个月后的心情和WY处理了几天后的心情都可以体现这一点。但是接二连三的各种名目的Excel、csv、MDB毕竟还是陆续地过来了,这可怎么办呢?这件事是我开始做的、我比较熟、最适合做下去的也是我,苦中作乐是唯一的选择。这个工作至少有一个好处,就是他可以放大我写重复代码的挫败感,让我不得不去改善公共代码的设计。尽量减少自己的工作量,这个为自己提供便利的过程算是一个乐趣吧。另外值得一提的是这个工作也让我熟悉了Hibernate操作数据的游戏规则,它是实验室的同学们目前急需掌握的技能。最后这个工作让我在毕设论文里些许有了些谈资,但是因为蹩脚的语言组织能力,最终让论文留下了不小的遗憾。
除此以上几个比较有代表性的工作之外,我在实验室还处理了其他一些工作,无一例外都是技术相关,具体不再赘述。有趣的是,细心回忆一下,会发现其中不少工作是各业务子模块都会用到的公共功能/模块,而且大部分是我主动去做的。原因很简单,就是非常想看到自己的代码有直接的用户(这点大家应该心有戚戚焉吧)。在系统没有正式上线面对浏览器用户之前,就只能把各业务模块的负责人当做用户了。这点私心虽然带来了短暂的快感,但却造成了临近离校时的手忙脚乱——交接工作的时候不能草草了事,毕竟牵一发而动全身。这里特此表示辛苦YFQ了。
毕竟是人去完成工作,而不是工作去迁就人。每个人都有自己的难处,在做好自己本分工作的前提下最大程度地包容和理解,才能让个体和所在集体的发展进入良性循环。相信这一点在进入社会走向工作岗位后还是一样。
工作之外,研究生生活最大财富就是在实验室有一群可爱的同学了。你们有的慷慨大方、总是乐于分享;有的幽默滑稽、善于讲冷笑话;有的老实淳朴、给人踏实的温暖;有的古灵精怪、总能活跃气氛;还有的爱运动、爱文艺、是大家的良师益友。你们充满着正能量,处处值得我学习。千言万语也不能表达对你们的不舍。
最后感谢W老师这些年来对我的教导。您能够发掘我的长处,并能容忍并纠正我的短处。一个人带领这么多人在自己不熟悉的领域从零开始打拼,还要承受内外的双重压力,着实不易。我衷心希望您和您的处事作风能够带领同学们一步一个脚印,不断进步,开创数据中心的新纪元。
还没有完全反应过来,已经不得不面对即将离开的事实。不得不和W老师和实验室的同学们道别了,不得不和研究生时光道别了,不得不和生活学习过近七年的HUST道别了,不得不和近二十年的校园生活道别了。有缘再见了~
2013.03.30 于华中科技大学南二舍
两年多以后回过来看,问题挺严重。技术之外的一切都不关注,而且单论技术也并没有做到多出彩。字里行间倒是自负得很。(2015.12.16)