游戏编程随想
这段时间赋闲在家,对近些年的工作进行了复盘。工作么多年,一点小心得,分享一下。
1. 如何定义一个能力很强的游戏程序员
- 拥有很强的battle能力,从根本上去说服一个人,改变一个人的看法,让他配合自己的工作,这个非常难(反例:级别压制,我是你是上级,或者我的上级要求这么做),更高阶是做倒知己知彼,站在多方角度考虑,给出靠谱方案。
- 具备一定的前瞻性,在设计框架的时候充分考虑到将来的迭代计划,能预计到将来策划可能会提什么样的需求(纵使策划现在矢口否认),在现有的框架下,尽可能快的满足策划的需求。
- 独当一面的能力,在项目的某一个方面或者某个模块,做到事无巨细,是团队里最熟悉这一模块的一员,不仅能出色得完成份内工作,还能驱动需求的迭代,给其它岗位的同事提出建议和解决方案。
- 工作效率高,善用各类工具或者能自己写一些自动化工具进行编码,测试等。具体体现在,交付速度快,bug少,返工少,加班少。
- 攻坚能力,有能解决核心问题,如关键算法,修复致命bug。
- 知识面要广,不拘限于某种单一的语言或者技术。每一种语言或者技术都有它擅长的邻域,只要把它用在恰当的地方即可。
2. 如何定义一个能力很强的主程
- 首先应该是一个能力很强的程序员plus
- 具备很强的识人能力,在短短的面试阶段,能甄别出真正适合自己团队的人才,所谓的适合不是面试笔试对答如流,而是具备上面说的优秀程序员的特性,或者非常有潜力成为这样的程序。
- 合理的安排任务,不把下属当工具人:根据团队成员的特性指派合适的任务,并给予高度自主权,所谓的合适,可能是该程序在某一方面的特长,或者是某一方面的技能需要历练,在出色的完成工作同时能得到能力上的提升。
- 把控进度的能力。对于完成策划需求的用时预估要准确,在给下属留有一定缓冲的同时,尽可能早的让策划看到原型。
- 对游戏有深刻理解,知道策划最终想要什么,还有他们此时此刻最想要什么。这有助于版本的快速迭代和上面说的进度把控。
- 留得往人。给下属争取更多的利益,给下属足够的发展空间。很简单直接,要么钱给够,要么不让人受委屈。
3. 关于开源
- 代码就像是程序员的底裤,不能随便给人看的。代码开源,就是把自己的内裤扒出来给人看。秀出来的,一定是很屌的东西。
- 不能为了开源而开源。开源应该是一个造轮子的过程,这个轮子不能重复造。一定是因为某个项目,或者库,可能会对别人有帮助。不能是说,以前我做了个很牛很牛的项目,现在把它的代码开源,来炫一下技。还有一些通过歪门邪道来骗赞的就不说了。
- 开源可以让自己的综合能力得到迅速提高。开源,其实说白了就是相互白嫖的过程。社区里什么牛马蛇神都有,大家共同维护一个项目,无私奉献和拿来主意都能各取所需,大家者有各自的需求。在这里,每设计一个接口,每提供一个功能,都会不由自主的考虑,这是不是大部分人想要的?会不会让项目变能冗余?能不能做的更通用点?扩展性好不好?等等这些问题,我们的自己的闭源项目里是很少思考的。长期以往,就会本能的写出更优质的代码,我们程序员最向往的高内聚,低耦合的代码。