Collect from 追梦人物的博客
Modified by ACool

来鹅厂实习的数月

不知不觉,来鹅厂实习快三月了,工作已经步入了正轨,三月底从百(you)忙(xi)之中抽出时间,记录一下过去几月的收获与感想。

在国内的公司里面,我认为鹅厂是对员工较为人性化的公司,不仅有BAT中最好的福利待遇,而且对于新人有良好的培养体系。恰好在我刚刚开始找实习的时候,鹅厂的游戏部门来我们学校招实习生,抱着试试自己水平的心态投了一个简历。没想到面试出奇的顺利,一面只面了20分钟,简单地手写了一道题,和面试官随便聊了一下便过了,二面面了2个小时,面试官是我们组现在的组长,有着数十年的从业经历,提的问题有很好的引导性和启发性。不过二面大半时间还是在做算法题上面,六道算法题要求一个小时做完,说实话我没想到鹅厂也会考这么多算法,网上面经的面试流程二面基本上都是考察一些知识点,所以来之前没有复习刷过的题,还好题不是很难,我老老实实挨个完完整整地手写了出来,结果面试官只看思路,并没有要求像学校考试一样把答案写出来,不过还好基本上都做对了,算是有惊无险。面完二面我就知道稳了,第三天便发了 Offer 。

于是便开始了实习的生活。

鹅厂的员工福利确实做得很好,不过我更想谈的是工作的内容。我所在的是某手游的后台开发组,技术栈是 C++。刚进组的时候被导师带着熟悉环境,了解本项目和其他部门的各种架构设计,认真研读底层实现,初步建立起了对鹅厂整个业务体系流程的认识。公司内部有很多的轮子,各个BG各个部门甚至于各个组都有一套自己的轮子,给人的印象是较为混乱,其实这也是鹅厂最为人诟病的一点,不过自从去年年底事业群架构改革以后,公司内部做了一系列的努力,现在也建立起了一套较为日益完善的组件库。受益于公司内部的组件库,在那段时间我看了很多较为底层的源码和设计,思考架构的时候,会考虑架构设计是否合理,哪些地方可以改进,哪些地方值得学习等等,受益匪浅。其实游戏栈与互联网的技术栈有很大的区别,就拿后台开发举例,用的语言是几十年前的,技术栈比较老旧,基本都是Windows 上某一款编辑器 + VIM + GCC一把梭,但是由于鹅厂多年以来的积累,公司内部有各种较为先进的技术的成熟解决方案,不亚于甚至超过业界流行的方法,所以仍然有良好的技术表现。

在对整个项目的大体框架熟悉以后,组内同事慢慢给我分配了一些编码工作,最开始做了一些效率工具,后面慢慢地开始做一些需求。在这期间,自己的编码能力和交流沟通、解决问题的能力有了比较大的提升。一个需求的实现,看似没有多少内容,其实有不少需要考虑的点:首先是对需求,设计流程合不合理,有没有考虑反外挂,边界情况有没有考虑清楚,估计需要多少的工作量?然后是写代码,对数据库有哪些影响,有没有内存限制,有没有考虑字节对齐,有没有考虑复杂度,有没有更简单效率更高的实现方式(建索引?多键用位运算计算等等),编码是否符合规范要求,代码是否简洁清晰易懂,是否考虑以后的扩展性?接着是自测,测试流程是否完善,边界条件是否覆盖完整等等。此外,组内的 CodeReview 比较严格,最开始因为不熟悉,曾经有一个需求的代码被同事们拒绝了八次,改了六版才通过,那次的经历不仅让我逐渐摸清了开发的要点,而且也让我深深地感觉到了组内同事认真负责的态度。

我们项目在鹅厂所有的游戏里面迭代算是比较快的,所以工作量比较大,不过对于实习生来说,敏捷的开发确实能学到很多东西。公司的同事们也很友好,基本上有什么不懂的都可以问,就算是自己的工作再忙也会抽出时间解答。渐渐明白了Leader的那句:“在这里工作半年可以学到有些公司工作两年的东西”。从实习到现在开始,工作逐渐走入了正规,开始担负起越来越重要的任务。

现在看来,当初来鹅厂确实是一个正确的选择。