2008年,我进入腾讯实习。
实习了两个月,过得挺开心。写了一个 epoll svr,后来又写了一个纯udp 的 svr。导师当时有个项目刚好要用到 udp 通信,我帮他完成了udp 通信在我们的网络,机器环境下的性能测评工作。
导师经常跟我沟通,不断指引我,帮助我,一切感觉都很好。
感觉那时候的实习是真的实习,学到了很多的东西,不像现在都是把实习生当正式员工用。
2009年,正式入职,开始了自己的职业程序员之路。
那时候,我感觉最明显的是压力。
这个压力来自工作任务,来自同时期入职的同事的竞争,也来自新的人际关系。
相对于实习期,在工作任务上最明显的变化,是要为系统的质量负责了。
在学校写代码,虽然也会尽力写好,尽量保证不出bug ,但几乎都是自娱自乐的项目,没有实际的用户在使用,所谓质量,也是自己臆想的。
工作后才发现,一个系统里1000行代码,可能有三分之一是为了系统质量而存在的。比如各种log ,监控,为了产品运营而增加的数据统计打点等。
除了在代码上用尽各种措施保证质量,在研发流程上,也是极尽保证质量之事。
当时做设计,写代码会再三思考,考虑的特别全面,我的导师和技术总监都是这种风格。一个看似简单需求的设计方案,他们能给你想出很多你没有想到的特殊情况。现在看来,这个就是一般架构师和优秀架构师的一个重要区别了。
当时我的导师给我的一个目标是,架构设计要做到一切尽在掌握!有些极端的异常情况和应对措施,不一定要做,但心里面一定要清楚,各种情况会产生什么结果,可不可控,而不是等系统上线后,靠用户的“测试”来发现。
这个理念,一直影响着我,后面我自己做设计的时候,也经常一遍又一遍地问自己,是不是把所有异常的情况都考虑全面了,是不是把依赖系统的各种情况都考虑到位了。。。。
我入职后第一个接触的系统,是QQ的接入层---全部门质量要求最高的系统。
我们当时写完代码提交后,要一并提交一份测试用例,同时子项目负责人会再review 一遍代码。周四作为统一上线日,灰度这周合入的新特性。(周五不上线,担心周六出问题,处理不及时)。
这个流程在现今的互联网行业来说,算是很重的流程了,可见当时对质量的重视程度。我也在那个时候被培养起了很深的质量意识。
如此苛刻的质量要求,自然也带来了不小的项目压力。
代码写得很仔细,也很慢,写完,测试完,自己还要review几遍,才敢提交给项目负责人,因为担心被项目负责人打回重改。
还有一个压力,是来自于项目的值班制度。
那时候值班有两种。
一种是白天的接口人。值班那天你需要处理外部其他团队的咨询,一些小bug 的处理,那天,你自己的任务几乎就是没有时间做的。
还有一种是夜间的报警值班。我们有一个专门的值班手机,组里每个人轮流值班一天,24小时待命。手机有报警,就要起来观察曲线,看看有没有问题。这个很累人,特别是当晚有故障,处理到深夜之后,第二天还要正常去上班,就特别的累。
有一段时间,感觉压力特别大,当时以为,后面十几年的职业生涯都要这么过了,曾陷入深深的痛苦中。
压力最大的时期,也是成长最大的时期。
有一段时间特别难受,感觉要被压跨了,幸好最后坚持了下来,自己的抗压能力得到了一次质的提升。
现在回过头来看,确实印证了那句:你觉得最艰难的时候,也是你收获最大的时候!
还有一个我不太适应的事情,是开始做团体项目了。以前在学校,几乎都是单干,现在要开始跟其他同事合作项目了。合作的人里面,有跟我一样刚入职的同事,有工作了几年的老员工。
当时对自己的定位不明确,老是想抢头功。一个新的任务过来,按自己的能力,明明不能成为这个任务的第一负责人,自己非要去抢,结果也搞砸过不少的事情,这些也算是成长的代价了。
那时候,团队实行的是系统负责人+项目制。
每个人都会负责几个子系统,子模块,这些系统,模块的日常维护和一些日常小需求都由系统负责人,负责设计和实施。
对于一些比较大的业务性需求或系统性需求,则会为其起一个新的项目来推动。一个项目会有明确的开始时间和项目周期,会有固定的项目成员和明确的目标。
刚开始,被分配到一个三人的小项目组。我,一个同期入职的新人,一个工作了两年的“前辈”。
任务分配下来后,很兴奋,想好好干一番,好好表现一番。除了花时间看文档,熟悉代码,在项目讨论会议上,自己也想尽量表现。另一个新人似乎也感受了我的冲劲,于是对方也不甘落后,大家开始互相比拼。
本来这种良性的比拼和竞争对项目是好事,可惜两人拼到后面,开始带上情绪了,无论是私底下讨论还是项目会议上的讨论,都有种在杠的感觉。
好在最后,项目正常完成上线,没有因为我们的杠而影响到任务本身。不过我们的leader 也觉察到了这个问题,后面在分配任务的时候,就特地的把我们给分开了。
现在想起来,那时候真的是 ”学生气“ 太重,有啥好争的。
一来,公司不是请你来表演自己的牛B的;二来,工作贡献的衡量,也不是看你比多少人厉害,更重要的是看你做了什么,产出了什么。
之后自己也意识到了这个问题,慢慢调整了过来。后面再跟其他同事的合作的时候,也没有再发生类似的情况。自己关注的焦点也从人转移到了事情本身。
自己在实习的两个月的时间里,是很受导师照顾的。实习的时候,导师隔三岔五的会跟我聊,聊我目前学的东西,也会关心我的生活情况,比如租住的房子舒不舒服,上班交通情况怎样等生活上的问题,当时感觉特别好。
正式入职后,也惯性的以为会持续这种状态。
但正式入职后,导师和我的沟通明显的少了。当时以为是导师把我忘记了,有时候还特地挑些问题去问他,有一两次,我明显感觉到了他的不耐烦。
后面跟其他同事吃饭,才得知,导师那个时候接到了一个很重要的任务,难度大且时间赶,压力大,周六日还经常过来加班。那个时候,我突然意识到,我已经是正式员工了,导师的真正身份是公司员工,作为我导师,也只是他在一个特定时期内的工作任务,而他还有他正式的工作。
从那个时候起,我也开始慢慢调整自己的心态,开始以一个正式员工的心态在工作和学习。自己在看项目文档和代码得时候,如果遇到问题,都会多看几遍文档和代码,然后尽力地思考,到最后实在是搞不明白地时候,才会去请教其他的同事。
在请教其他同事的时候,也会选好时间,比如一起吃饭或者闲聊的时候,或者趁着大家有空的时候去问,不会随便地打断别人正在进行的工作。
后面自己做别人导师的时候,才真实地感受到,当项目压力很大的时候,真的没有太多地精力可以顾及自己所带的新人。
所以,自己的成长还是要自己做主。
我刚入职的时候,带着很浓的”学生气“。一个是不太愿意主动地”搭讪“ 别人,觉得主动地”搭讪“ 老员工,有点”献媚“的感觉;另一个是喜欢跟人杠,特别是在一些技术点上,喜欢跟人杠,无论是新人还是老人。
我印象深刻的一次。
当时,一个老员工在会议室里给大家分享 linux 内核相关的知识。我因为在实习的时候,特地地看过这部分的代码,而且还写了不少的文档,笔记,所以对这部分还比较熟悉。
我在听他分享的过程中,发现了几处错误的地方,于是在过程地不断地打断他,不断地”指正“ 出他的错误。那一刻自己还洋洋得意,以为自己很牛B,但分享结束后,我明显地感觉到了那位老员工的尴尬和不爽。
人家辛辛苦苦准备得一场分享,结果你一个错误指正,又一个错误指正,搞得人家下不了台,面子上也挂不住。
当时,我没意识到这个问题,只是在分享结束后,感觉到氛围不对。
后面,有几次跟着他做项目,才明显地感受到了他对我的不爽。他没有明显的要整我或怎样,就是跟我保持了一定的距离,但单就这种距离感,已经让我很难受了。
我不能说他心胸狭隘,确实是我的行为先让人不爽,他后面对我保持冷漠,不给我提供帮助,也没错,因为帮助我也不是他的义务。但没有了他的帮助,我工作的开展却遇到不少的困难。
后来,我开始学会顾及别人的感受,跟其他同事保持良好的关系。
融洽的人际关系,不但使得工作,生活更加开心,别人也更加愿意主动帮助自己,使自己的工作能更好的开展。
第一年的正式工作,让我真正实现了一个学生,一个业余程序员到职业程序员的蜕变。开始懂得了为 系统的质量负责, 在实际工作中锻炼自己的抗压能力,学会了团队合作,知道了自己的成长要自己做主,也学会了,如何可以保持一份和谐融洽的人际关系。那一年的成长很大,收获很多,也为自己后面的发展打下了坚实的基础。