这里不再记录2015的工作内容,单纯记录下工作中的一些感受,部分观点不一定是2015才形成的,也算是多年工作之后的一个简单总结。
技术上
不要习惯于现状,多思考,多发现问题
工作中一些既定的问题解决方案未必是合理的,很多时候是可以去改进的,自己需要多思考,去发现。
一个例子是年初开发客户端时,项目中没有代码热更新功能,IDE智能提示比较弱,也缺少远程调试功能。因为上一个项目也是这么过来的,也就没在意,还是傻傻的改代码再重启。在其他同事提出有没有这些工具、能不能改进的时候,才去调研实现,然后发现都是可以搞定的。
之后在效率工具上做了很多事情,比如数据热更新、移动设备上的远程调试、代码自动生成脚本等等,一系列东西累加下来,极大的提升了所有人的工作效率。在现在这个阶段在这方面其实还是有很大改进空间,今年也会继续去改进。
如果所有人都习惯了原有的想法,不去想着改进,甚至认为就只能那样,那么也就只能一直那样了,不会有任何提升。直到某天发现别人的项目竟然可以做种种事情时再发现自己的落伍,那打击可就大了。
先弄清楚问题,再考虑实现,要有全局思维,避免单纯实施
作为一个程序员不能仅仅把自己当成方案实施者,不能给什么需求就实现什么需求,不加思考。“变化”是不可避免的,在实现功能需求时最好能弄清楚为什么有这样的需求、这个功能是用来解决什么问题的,之后再考虑实现方案,这样才是对自己、对团队负责。
“迭代”是开发过程中常用的词,迭代少不了,不过多了就会让人乏了。多思考,甚至多去挑战需求。在游戏开发中,程序处于一个相对“弱势”的角度,但有句话说得好,“要有主人翁精神”,多从本源来思考问题是没有坏处的。
把应对需求变更的能力作为代码设计的评判标准
在实现功能的时候,一定要考虑到需求变更。程序最好只负责实现某种机制,让策划根据机制去组装功能。尽量实现原子或模块化的功能单元,让一切可配置的都配置化。这样的设计才能最大程度的应对需求变更,以及具备良好的功能扩展性。
在之前开发Android或Python服务端代码时,在这方面也有体会,但那会儿需求其实比较简单,完整的项目也没有多少功能。但游戏项目中,功能系统尤其多,如果每一个功能都需要重新编码去实现,那只会把自己累死。
及时清理脏代码,多多重构
游戏项目的代码量大,脏代码出现的几率也多,为了快速DEMO或是为了应对频繁的周版本,时不时就会在代码中塞入不那么漂亮的实现,久了,相关的代码也就难以维护阅读了。
大规模的重构是不可取的,但小范围的重构一定要多做。甚至抽出额外的时间去做也是可以接受的。经常会发现自己之前的代码很搓,然后去改进。在策划看来可能实现的功能还是那样,但具体的实现可能已经改进了很多。
代码重构这件事对个人对项目都是有利的,因此断无不做的道理。但在具体实施时,最好避免独立的去做重构,在相关功能模块进行修改的时候去重构会比较合适,这样修改的风险比较低,相应的改动也能够得到测试。
多利用工具,提升自动化程度
可以把一些好用的工具引入到日常开发当中,比如Code Review系统,异常捕获系统等等。多发现工作中重复性比较高的部分,尝试去实现工具脚本来解决重复劳动。部分结构固定的代码可以考虑去实现简单的代码生成器。
自动化处理一是提升了效率,二来降低了出错的可能。提升自动化水准,可以将自己从部分无意义的琐碎工作中解放出来。
工作方法上
细化任务清单,做个人的微任务管理
某个功能的实现可能会涉及到很多模块,有各种情况。在动手之前最好能想清楚这些,然后将需要改动的地方记录下来,然后再一条条去解决。
这种方式一来是让自己的思考结果沉淀下来,考虑问题能够更周到;二来方便在工作被其它事务打断时帮助回忆之前的工作进度;三来在事后回顾的时候也能知道当时做了什么,便于总结成文档或是周报月报。
划分工作时间,设置免打扰区间
根据个人工作习惯差异,可以将一天中的某个时段设置为免打扰区间,这段时间内集中处理当天必须解决的问题。
工作中时不时会被打扰,来自自己、他人、突发问题等等。频繁被打断是很影响效率与心情的事情,因此自己在时间上需要做这样的掌控。同时也要提醒自己,如无必要不要去打断别人。
多记录、多总结
工作中遇到的问题以及解决方法或是临时的思路之类,都可以进行记录,在合适的时候再进行总结。
自己经常遇到的情况是,一段时间之后完全记不起之前某天或某段时间做了什么,或是遇到问题时明明知道曾经遇到过,但忘记了当时的解决方法。反复几次之后就决定将这些事情都尽量进行记录,之后再遇到似曾相识的问题就可以方便的进行查找了。
总结是和自己对话的过程,梳理针对某个问题或某件事情的看法思路。多总结就是多思考,多思考才能有进步的可能。
多做
尽量多做些事情,这样才能让自己得到锻炼与提高。不同位置考虑问题的方式不一样,站在管理者或领导者的角度,要避免事事亲力亲为;站在实现者的角度,要多做事情,多做附加值高的事情,多做自己能力边界的事情。
合作上
有想法不要藏着掖着,及时说
主要是产品或项目上的问题,对需求或是其它产生疑问后,一定要提出来。否则于己于人都无利。
沟通时,站在对方考虑问题的角度来进行思考
在和策划进行沟通需求的时候,要主动站在他们思考问题的角度来分析问题。这也是之前说的要有全局思维。如果一个方案只是省掉了程序的工作量,但会增加策划的工作量,这个方案一定是难以达成共识的。