2013年总结

  本来2013年底2014年初对我来说是一个很好的总结与审视自己的时机——因为我在2013年最后一天结束了在英佩的工作,也离开了上海,回到了家乡广州,准备在广州开启新的工作;不过这年终总结却迟迟未憋出来。


  过去这一年我好像并没有系统而专注地掌握任何一门新技术。年初的时候想学DirectX,跟着一个Tutorial学了几节,但很快因为没有时间加上动力不足而放弃了。后来想学下客户端引擎,也就只是看了几节Unity视频。《算法导论》更加是没怎么读。后来因为Launcher方面的工作,稍微学习了下Windows编程相关的一些东西,分层窗口、半透明;也在工作间隙跟着项目代码了解了下相关的技术,比如IOCP等。但学得都比较散,总体感觉过去这一年在学习上比较浮躁,没有清晰的方向,之前在一篇文章里也提过这问题。


  学习上唯一完整做完的事情就是好好读完了四人帮的《设计模式》,见识了23种经典设计模式,并且结合自己的编程经验,对设计模式有了自己的理解和思考,既不会盲目追求,更不会全盘否定。不过这份收获要对实践产生更大帮助的话,还有很长的路要走。


  真是不比学生时代了。那时可以将大把大把的时间用于读书学习,每天可以花上好几个小时专心地学习一门技术。可过去这一年,每天业余能有一两个小时专心学习都已经很不错了。因此,主要的成长经历和学习过程还是在工作中获得,并且主要的收获还是在经验积累和能力的成长上。相比其以前注重打基础的阶段,现在对我更重要的是见多识广,积累经验。


  年初的时候我还在游戏逻辑组。那时候接到了算是比较重要的任务——重构和维护物品的拾取分配模块。这个模块逻辑复杂,历次测试都出过诸多问题。其实我接手后,因为我不惧改动,甚至有通过bug和崩溃熟悉逻辑的“邪恶”打算,所以这个模块到了我手里反而问题更严重了。后来总结历次崩溃原因,发现将近一半的崩溃都是在我的组队和拾取模块中。当然在我多次的小结、修复和重构之下,尤其是在理解底层的session机制之后,这个模块最终还是稳定了。不过现在回想起来,如果能早点阅读底层代码,理解服务端的底层机制,那很多错误应该是可以避免的。所以,即便是做上层逻辑,多掌握底层机制还是会对工作有很大帮助,少做很多无谓猜测,也少走很多弯路。


   四五月份的时候,我被调到了服务器组,之后就一直在进行工具方面的开发和维护——Launcher和监控工具。Launcher让我零散地学习了一些Win32编程的知识。监控工具则让我对整个服务端的分布式架构有了全局上的把握。说起来我们项目的服务端架构真是太复杂了,一位有五年工作经验的同事说这是他见过最复杂的服务端架构。这种复杂度也给逻辑程序员带来了很大负担,引发了很多bug,包括监控方面的逻辑也搞得很复杂。不过这大半年的工作也让我感觉自己离游戏开发有些远了,走向了运营和运维支持这一块。尽管后来也几次跟领导谈过这个问题,但也一直没有机会再做工作调整。人在江湖身不由己。2014年,我即将加入一家新公司,加入一个还处于开荒阶段的项目,期望在游戏开发上会有更好的“核心体验”。


  2013年,除了本职工作,我业余时间和师兄合作的项目——GEAR还在进行。尽管我在这项目上花费的时间还不是很多,不过这一年来我在这项目上的进展也还是可以。给项目加入了日志、内存监测和单元测试等底层支持,重写了profile模块,设计并实现了子命令框架,同时也在对代码进行持续重构。在这个过程中我们也逐渐明确了各自在项目中的角色——我搞底层,师兄搞逻辑。当然,在精力允许的情况下,我还是会审查师兄提交的逻辑层代码,也借此机会熟悉他的统计方法。我现在觉得,底层程序员也是需要尽量熟悉业务逻辑的。其实在一个小团队中,各人只管自己的一亩三分地是不利于项目发展的,紧密配合才是王道。


  不过在项目中我也遇到了有点烦恼的问题。师兄在计算机方面毕竟没有专门学习训练过,专注点一直在统计遗传上,因此写出来的代码难免会有很多地方考虑不周,并且不够简洁,缺乏可维护性和可扩展性,有很多复制粘贴的味道。而我偏偏又非常追求代码质量,所以审查代码时经常会感觉不爽。让师兄的代码质量在短期内有质的提高是不可能的。我本来希望在合作过程中,通过代码审查反馈和重构,逐步提高师兄的计算机水平,但一年下来感觉这也会给对方带来比较大的负担,他甚至都希望将编码工作完全外包出去。另一方面,无尽之重构也加重了我的负担。我感觉自己就像是个代码清洁工,不停地打扫;而师兄的提交速度又远远快于我的重构速度。我其实挺担心软件工程中的破窗户理论会在项目中出现。工期和人员素质是两样很难改变的现实,却又是制约软件质量的重要因素。我知道自己无法很快地解决这个问题,事实上这已经是管理者考虑的问题了。我只能不断修炼,不断感悟。


  2014年,由于新工作的缘故,我希望自己至少掌握以下两门技术:一是Linux网络编程,二是Lua。Linux网络编程方面,除了吃透项目网络层的代码,最好也研究下libevent。希望在这个过程中能把Vim也给顺便玩熟练了。除了这两样之外,如果时间精力允许,最好再认真学习Unity3D。我其实不希望自己只局限在服务端,还是比较倾向于“全端”发展,做复合型人才。


  然后在读书方面,我希望能将同事极力推荐的《Linux高性能服务器编程》细细读完,并且将里面的案例都好好实践一下。这确实是一本难得的干货。接着就是读完《人月神话》。最后,我有点想将《程序员修炼之道》再读一遍。经历了读研时的苦逼项目、一年的工作以及业余项目,我想看看和两三年前相比,我对书中所讲有哪些新的或更深的体会。


  除了技术方面,我希望自己在工作态度上也能有所改进。这并不是说我以前工作态度有多不好,而是一直以来,每当我接到一个新任务,要涉及我未碰触过的领域时,我总是会怕,心里没底气。但其实每次我最后都很好地完成了任务。其实这种怕的态度很可能会让领导感觉不放心,也会让管理者对工作的难度和工期产生错误的判断。所以新的一年里,我希望自己不管面对什么问题,不管接到了什么样的任务,都要淡定、冷静。


  在业余项目方面,我现在还不知道师兄回国创业后我能提供怎样的帮助。不过如果眼下的Azure项目能申请下来的话,希望能在里面好好搞一搞,学学Azure和云计算方面的东西。相对于我的游戏开发本职工作来说,这完全是另一个技术领域,却也是我很感兴趣的。云已经是一个不可逆转的趋势了。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值