我的十年程序员之路 (2)

我的正式职业生涯的第一家公司(暂且称之为D社),在当时是一家移动手机游戏为主体运营业务的公司,在当年凭借着功能机上的游戏地位站在日本手游界的Top2位置。D社虽然其收购了美国的一家公司在旧金山也有分部,并且也连续几年在海外招聘了一些外国的毕业生程序员,但是本质上还是一个比较偏传统的日式IT公司。

D社对于新加入公司的毕业生程序员的培训不得不说还是做的比较到位,首先对于海外招聘的毕业生,提供了日语的全日制培训以及之后正式入岗后的日语追加培训。其次,在正式分配部门之前,有为期两个月的技能培训。技能培训的内容是将公司内的Perl框架简化后让大家进行一个类似于填补作业的项目,并全程有老师指导,每阶段需要提交代码并且答辩。答辩不通过的话需要再等两天后才可以预约下一次答辩。现在看来过于严苛和形式主义,但是在以后的工作中,越来越体会到新人培训的重要性,因为在之后的公司从没有过这样细致到“手把手”式的培训。

 我自己觉得受益比较深的几点:

对于每一句写下的代码,老师会问为什么这么写,有没有别的写法,各种写法有什么不同?会细扣到代码的顺序,变量名的命名,注释的语法等等。实际上这是非常细致的代码审查(Code Review)流程,大部分新人程序员着眼于如何快速的实现功能,有时会不假思索的借鉴来代码,而我之后供职的公司并没有这样的培训,大多数的代码审查也只是停留在错误检查和性能上。个人觉得在一开始写程序时养成良好的习惯非常重要,尤其是对于刚脱离校园环境的程序员。

老师也教会了很多工具的使用,比如vim,git,bash等基本操作,比如用bash完成对Apache log的简单统计分析等等。这个其实是程序员的提高生产效率的方法,在之后的公司中遇到太多的新人进入公司好几个月还在git提交上遇到各种困难。或者不得不耗费体力做一些简单脚本可以解决的问题。比起教会的知识,更重要的收获是万事都可以脚本化的信念,不会因为自己的本职工作不包括写脚本而对于脚本就打退堂鼓。

在D社的培训结束后加入了一个临时的岗位,做了三个月的Perl的网站开发,之后又调去了别的部门操刀旧业,维护公司的门户App,说实话门户App的技术含量真心不高,就是WebView封装出来的。期间做了唯一一件有些技术含量的事情是把App内的聊天功能加上了推送功能。在客户端启动时,在服务器端注册客户端的推送口令,在客户端的网页里通过api来通知服务器把消息放进队列,服务器端有定时任务去消化队列中的消息。 这其实是一个非常普通的小系统,也比较成熟,对于个人来说主要的作用就是独立设计并且完成了一个完整的系统,并且在生产环境中实际的运行起来。

在D社的日子没有持续很长时间,最后在公司的半年被调任到游戏部门,做了一款基于Unity2D的手游,虽只有短短的四个月经历,但是也可成为是个人职业生涯中出品的第一款游戏,它是一款抄袭了FlappyBird的山寨游戏,在制作的过程中重温了一回用C#,顺便熟悉了一下Unity2D开发环境。

反思一下自己在D社的1年半,在职场的第一份工作并没有能够很好的积累。而只是停留在完成布置的任务阶段,并没有去主动的学习。

后端程序员

在D社待了一年半之后跳槽到了I社,I社是一家在美国以工作搜索引擎为主体业务的公司,被日本R社收购后在日本开张了办公室。加入I社的时候办公室只有二十名不到的程序员,等到离职的时候已经超过两百人,可以说见证了I社在东京办公室的快速发展时期。

在I社的前三年我一直在SEM组工作,SEM(Search Engine Marketing)组的主要任务是自动的将公司投放在搜索引擎上的广告优化。这是一个纯后端的组,以前的工作经验在这里并没可以发挥的地方。我的工作内容,从一开始去开发维护一个基于Python的内部工具网站(后来知道老板看我的简历是做App的,误以为我是前段能手),三个月之后Python工具网站的开发告一段落,开始接触竞价算法(Java后台程序)。当时正适逢移动流量开始渐渐追赶并超过个人电脑的流量,针对移动端广告进行竞价调整(Bidding Adjustment)是一个重要的功能。正是在进行这一工作的时候,我有机会去主导从MySQL切换到RabbitMQ的解决方案,解耦合算法端和API端的紧密联系。并且通过和系统工程师的配合,解决了首次部署RabbitMQ中遇到的问题,并设置了警报规则去监视系统的运行健康状况。在切换的过程中,为了保证无故障的切换,先后采用了试运行(Dry Run)的方式模拟从MySQL切换到RabbitMQ的场景,接着运用了A/B test的工具分出少量流量测试RabbitMQ流程的稳定性,最后达到100%切换后进行代码的清理。在这个项目中我学到了很多宝贵的经验,对于以后进行的一些重构式工程有很重要的方法论上的参照意义。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppswp.html