从公司技术管理角度看C++游戏程序员发展

【从公司技术管理角度看C++游戏程序员发展】C++游戏程序员现状 中国C++程序员100%都是自学的 。因为中国几乎没有象样的C++培训机构 。大家都知道社会培训是赚钱为主要目的 。能在那里成才是个大运气 。也不象JAVA有SUN公司一手推行 。中国大学教育里也根本没有C++教学 。关于C/C++基础课的知识,只是让学生入门 。但对于实际的C++软件工程应用,大学课本知识实践意义不大 。最重要的是,大学里没有合格的C++老师 。编程是门技术,叫手艺也行 。而大学是搞科研的 , 多的是科学家,靠出PAPER教科凭职称为生 。并不是技术员 。没有10万行以上代码经验和成功软件项目经验的人 , 很难教出中高级C++程序员 。游戏制作业对C++程序员的要求是比较高的 。比一般行业软件高很多 。因为任何一个MMO都是个中大型软件项目 。日使用人次达到几十万上百万,同时使用人数几十万在线的大型网络多人交互软件 , 集成了超过十几项专业领域编程技术的软件,想不大都不行 。另外,中高级C++程序员能力一般都很强 。因为都是自学成才 , 这需要较高智商 , 很强的自学能力 , 解决问题能力,和克服困难的毅力 。但是这种人才在游戏行业里人数并不多 。抛开凤毛麟角具备整体大型软件架构能力的高级人才不谈 。能够承担独立模块开发,具备独立解决问题的能力 , 写出在空间 , 性能,可维护性等几个方面达到要求的C++程序员,也是很难找到的 。而具备这些能力,同时又具备一些专业领域技术的人(图形引擎,网络引擎,等) , 更加稀少 。所以 , 即便是大游戏公司,对于C++游戏程序员的需求,也是永远不能够得到满足 。而已经在公司工作的C++程序员,不经过短则3个月,长达1年的锻炼,也无法真正胜任独当一面的C++游戏程序开发工作 。
MMO游戏开发对C++游戏程序员要求 前面提到,所有MMO游戏都是中大型软件 。软件占用空间,稳定性,性能,可维护性等各项衡量软件质量的指标,对MMO游戏软件的要求都非常严格 。远大于普通行业软件 。这种规模和银行系统类似 。而客户端和软件逻辑比一般的商业软件又要复杂很多倍 。这就要求软件编写人员具备较高的程序编写素质 。游戏软件中,解决好软件工程部分,只是项目的1/3 。另外两部分是策划和美术/音频 。从经验来看,需求变更对于MMO游戏软件,不是偶然事件 , 而是一种MMO游戏软件开发的基本属性 。游戏软件投入大,周期长,风险高 。MMO市场变化也大,交互电子游戏发展迅速 。游戏软件必须面对外界变动 。又因为开发周期长,所以软件需求变动成为了软件开发的一种基本属性 。犹如复杂性是软件工程的一项基本属性一样 。这导致游戏软件的开发充满了不确定性 。交互娱乐不同于商业应用 。娱乐是属于理性和感性之间的领域 。而C++开发面对就是0和1的二元世界逻辑 。这两个领域存在着不可调和的矛盾 。这种情况,对C++游戏程序员提出了更高的要求 。首先,基本C++知识,C/C++运用技能,必须极其扎实 。并不是游戏软件开发用到什么平时书本上很难得到的知识点或者技能点 。游戏C++开发的知识体系和技能体系,利用现有C++书籍就可以满足 。比如《C++ PAORGRAMMING LANGUAGE》《C++ PRIMER》《EFFECT C++》《MORE EFFECT C++》等 。但是在开始游戏编程之前,把这些书本吃透并且实践熟练的人,非常难遇到 。当然能够真做到这点的人,已经是个中高级C++程序员了 。我曾经遇到过一个,毕业工作不久就去了GOOGLE其次,对于面向对象的深入理解 。是非常重要的 。熟练掌握C/C++语法,编程技巧,只是满足了C++游戏程序员一部分要求 。而面向对象观念的深刻理解,会为大型C++项目开发带来翻天覆地的变化 。有时候,在一个10人以上并行开发的C++游戏项目中,面向对象方法会成为救命稻草 。《设计模式》以及《设计模式解析》相关的书籍,也是必修课 。最后,好技术人员的本质是自大的 。这属于正常 。但是如果这种习性影响了自身继续提高和团队合作 。以及影响了其成为技术管理者和项目技术核心时 , 那么这种技术人员的自身价值会大打折扣 。如果早日越过自命不凡这一关,扩大眼界,继续在综合素质上提高 。在技术管理能力,架构能力上提高 , 其自身价值才会继续增长 。落到实处,就是待遇和身家增长 。由于游戏开发的本质是团队开发 。任何时候,只有对一个团队有价值的技术人员,其本身的价值才有可能得以体现 。
成长和技术发展路线 一般技术人员发展有几个阶段1 、具备独立开发局部功能的能力 比如为某个UI编写逻辑接口函数 。为某个LOGIN对话框编写自绘制控件等 。2 、具备独立开发和攻关某个功能模块的能力 比如为游戏增加一个小型逻辑功能模块 。3 、具备独立设计并开发某个系统的能力 比如设计和开发AUTOPATCH 系统 4 、具备解决技术难题,设计架构的能力 比如开发网络同仿真系统 , 开发一个中大型游戏制作工具5 、具备整体架构 , 管理,协调其他人共同开发一个大系统的能力 客户端主程,服务器主程 , 引擎主程等6 、技术director制定技术发展方向,技术团队建立,技术管理等 在迈向每个阶段的过程中,伴随的都是巨大的工作量和工程压力 。有时候是跨越1年的失败等等 。在公司项目不成功时转换单位,重新开始 , 或者继续做为核心团队留在公司继续从新的机会做起,都是好的办法 。但关键是吸取经验教训 , 尽量多学多练 。并且结合自身长处发展 。当然,游戏制作人员 , 最好还是依靠一个核心团队 。成为核心团队的一员 。
能够达到第三档的程序,已经是公司不可缺少的人才了 。但往往程序员自身对自己的认识,和公司对其的认识,有时候会有差异 。我碰到过一些人,脑子好用,写东西很快 。各种技术都有涉猎 。但总是不放心让他独立开发设计某个系统 。哪怕是相对独立的工具 。也会被搞得一塌糊涂 。要后面人不停擦屁股 。可自己还觉着自己水平很高 。这种人浮躁,眼高手低,不愿意细致周全的做好一件完整的事 。所以就可以看到他不停的跳来跳去,可在新公司的职位也没有见多么提高 。公司非常重视交给一个程序员一件事,他是否能完整 , 考虑周全的把事情做完 。哪怕时间长一点,也不能不做完 。这会给工程带来致命的后果 。
发展待遇 前面提到的6档,粗略了划分了待遇水平 。其实到了第三档 , 你的待遇已经是这个行业所决定的了 。而不是某个公司决定的 。因为游戏业大量缺乏这样的C++程序员 。如果具备这个水平,在几个大城市游戏公司找到工作并不难 。大公司提升慢,还有我这种不到百人规模的公司要 。所以行业价格才是公司要考虑的 。如果给少了,软件项目的C++程序员流失会带来较大影响 。但给的多,其实是 C++程序员自己的价值增长瓶颈 。如果几年下来一直以为自己水平就该拿这么高,结果到了一家整体技术水平比较高的企业 , 就会彻底傻眼 。这个时候再放低心态去重新开始,对技术员来讲就是件很艰难的事了 。在目前游戏行业技术水平普遍较低的情况下 , 哄抬程序员工资水平对程序员自身好处也不会很大 。就算一个新手本来拿几千的水平,给他1万 。他根本就不会知道自己到底有多少水 。一年下来也就多拿了3-4万人民币 。可耽误的是学习 , 影响了心态 。而那些心态好,知道努力方向的技术人员,干个3-5年后如果有拿期权和股权的机会 , 比那些一开始虚高的人,身家就不知道高多少倍了 。