详谈C++游戏程序员发展前景
这是我多年来招聘培训C++游戏程序员的⼀点想法。⼀直想汇总⼀下。我在H3D Studio的核⼼技术⼈员和游戏制作管理⼈员全部是SMTH BBS游戏制作版成员。从99年开始截⽌BEGINER的历任版主都在H3D STUDIO⾥⼯作过。在这⾥我想和⼤家聊聊关于游戏程序员切⾝利益相关的事。在C++游戏程序员发展前景上谈谈⼀些⾃⼰的看法。
另外这不是居⾼临下来评判什么事情。我本⼈也不是多么⾼级的技术⼈员或者管理⼈员。只是坚持做⼀件事情年头很长教训很多⽽已。所以有些体验。⽂中所有评判其他结构或⼈⽔平低,并不是说我本⼈⽔平有多⾼。不要误会。
1 ,C++游戏程序员现状
中国C++程序员100%都是⾃学的。因为中国⼏乎没有象样的C++培训机构。⼤家都知道社会培训是赚钱为主要⽬的。能在那⾥成才是个⼤运⽓。也不象JAVA有SUN公司⼀⼿推⾏。中国⼤学教育⾥也根本没有C++教学。关于C/C++基础课的知识,只是让学⽣⼊门。但对于实际的C++软件⼯程应⽤,⼤学课本知识实践意义不⼤。最重要的是,⼤学⾥没有合格的C++⽼师。编程是门技术,叫⼿艺也⾏。⽽⼤学是搞科研的,多的是科学家,靠出PAPER教科凭职称为⽣。并不是技术员。没有10万⾏以上代码经验和成功软件项⽬经验的⼈,很难教出中⾼级C++程序员。
游戏制作业对C++程序员的要求是⽐较⾼的。⽐⼀般⾏业软件⾼很多。因为任何⼀个MMO都是个中⼤型软件项⽬。⽇使⽤⼈次达到⼏⼗万上百万,同时使⽤⼈数⼏⼗万在线的⼤型⽹络多⼈交互软件,集成了超过⼗⼏项专业领域编程技术的软件,想不⼤都不⾏。
另外,中⾼级C++程序员能⼒⼀般都很强。因为都是⾃学成才,这需要较⾼智商,很强的⾃学能⼒,解决问题能⼒,和克服困难的毅⼒。但是这种⼈才在游戏⾏业⾥⼈数并不多。抛开凤⽑麟⾓具备整体⼤型软件架构能⼒的⾼级⼈才不谈。能够承担独⽴模块开发,具备独⽴解决问题的能⼒,写出在空间,性能,可维护性等⼏个⽅⾯达到要求的C++程序员,也是很难到的。⽽具备这些能⼒,同时⼜具备⼀些专业领域技术的⼈(图形引擎,⽹络引擎,等),更加稀少。
所以,即便是⼤游戏公司,对于C++游戏程序员的需求,也是永远不能够得到满⾜。⽽已经在公司⼯作的C++程序员,不经过短则3个⽉,长达1年的锻炼,也⽆法真正胜任独当⼀⾯的C++游戏程序开发⼯作。
2 ,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++游戏项⽬中,⾯向对象⽅法会成为救命稻草。《设计模式》以及《设计模式解析》相关的书籍,也是必修课。
最后,好技术⼈员的本质是⾃⼤的。这属于正常。但是如果这种习性影响了⾃⾝继续提⾼和团队合作。以及影响了其成为技术管理者和项⽬技术核⼼时,那么这种技术⼈员的⾃⾝价值会⼤打折扣。如果早⽇越过⾃命不凡这⼀关,扩⼤眼界,继续在综合素质上提⾼。在技术管理能⼒,架构能⼒上提⾼,其⾃⾝价值才会继续增长。落到实处,就是待遇和⾝家增长。
由于游戏开发的本质是团队开发。任何时候,只有对⼀个团队有价值的技术⼈员,其本⾝的价值才有可能得以体现。
3 ,成长和技术发展路线
⼀般技术⼈员发展有⼏个阶段
1 ,具备独⽴开发局部功能的能⼒
⽐如为某个UI编写逻辑接⼝函数。为某个LOGIN对话框编写⾃绘制控件等。
2 ,具备独⽴开发和攻关某个功能模块的能⼒
⽐如为游戏增加⼀个⼩型逻辑功能模块。
3 ,具备独⽴设计并开发某个系统的能⼒
⽐如设计和开发AUTOPATCH 系统
4 ,具备解决技术难题,设计架构的能⼒
培训机构出来的程序员真的强吗
⽐如开发⽹络同步仿真系统,开发⼀个中⼤型游戏制作⼯具
5 ,具备整体架构,管理,协调其他⼈共同开发⼀个⼤系统的能⼒
客户端主程,服务器主程,引擎主程等
6 ,技术director
制定技术发展⽅向,技术团队建⽴,技术管理等
在迈向每个阶段的过程中,伴随的都是巨⼤的⼯作量和⼯程压⼒。有时候是跨越1年的失败等等。在公司项⽬不成功时转换单位,重新开始,或者继续做为核⼼团队留在公司继续从新的机会做起,都是好的办法。但关键是吸取经验教训,尽量多学多练。并且结合⾃⾝长处发展。当然,游戏制作⼈员,最
好还是依靠⼀个核⼼团队。成为核⼼团队的⼀员。
能够达到第三档的程序,已经是公司不可缺少的⼈才了。但往往程序员⾃⾝对⾃⼰的认识,和公司对其的认识,有时候会有差异。我碰到过⼀些⼈,脑⼦好⽤,写东西很快。各种技术都有涉猎。但总是不放⼼让他独⽴开发设计某个系统。哪怕是相对独⽴的⼯具。也会被搞得⼀塌糊涂。要后⾯⼈不停擦屁股。可⾃⼰还觉着⾃⼰⽔平很⾼。这种⼈浮躁,眼⾼⼿低,不愿意细致周全的做好⼀件完整的事。所以就可以看到他不停的跳来跳去,可在新公司的职位也没有见多么提⾼。公司⾮常重视交给⼀个程序员⼀件事,他是否能完整,考虑周全的把事情做完。哪怕时间长⼀点,也不能不做完。这会给⼯程带来致命的后果。
4 ,发展待遇
从⾃⾝经验出发谈⼀下公司是怎么考虑技术员⼯待遇的。
前⾯提到的6档,粗略了划分了待遇⽔平。其实到了第三档,你的待遇已经是这个⾏业所决定的了。⽽不是某个公司决定的。因为游戏业⼤量缺乏这样的C++程序员。如果具备这个⽔平,在⼏个⼤城市游戏公司到⼯作并不难。⼤公司提升慢,还有我这种不到百⼈规模的公司要。所以⾏业价格才是公司要考虑的。如果给少了,软件项⽬的C++程序员流失会带来较⼤影响。但给的多,其实是C++程序员⾃⼰的价值增长瓶颈。如果⼏年下来⼀直以为⾃⼰⽔平就该拿这么⾼,结果到了⼀家整体技术⽔平⽐
较⾼的企业,就会彻底傻眼。这个时候再放低⼼态去重新开始,对技术员来讲就是件很艰难的事了。
在⽬前游戏⾏业技术⽔平普遍较低的情况下,哄抬程序员⼯资⽔平对程序员⾃⾝好处也不会很⼤。就算⼀个新⼿本来拿⼏千的⽔平,给他1万。他根本就不会知道⾃⼰到底有多少⽔。⼀年下来也就多拿了3-4万⼈民币。可耽误的是学习,影响了⼼态。⽽那些⼼态好,知道努⼒⽅向的技术⼈员,⼲个3-5年后如果有拿期权和股权的机会,⽐那些⼀开始虚⾼的⼈,⾝家就不知道⾼多少倍了。
下⾯再谈谈我个⼈在招聘C++程序的体会。
1 做为C++程序员,成长周期⽐较长。如果是新⼿(代码量少于2万,没有做过⼤型项⽬的),会考察3点。是否踏实肯钻研,有⽆责任⼼,以及是否够聪明。如今,满⾜这三点的⼈其实不多。
责任⼼是⼈品,决定了是否对公司有贡献。这是最重要的。有些⼈其实很⾃私。这种⼈对公司贡献是负数。⽽且到头来,⾃⾝价值也很难起来。因为技术是要靠游戏的商业成功体现价值的。要取得商业成功,就需要⼀个团队为⼀件事付出。是否踏实决定了能学会多少技术知识。关于智商,我是最近2年才意识到⼈的智商确实有很⼤差别。⼲程序这⾏,智商必须越⾼越好。否则前途不⼤。
2 如果是有过2-3年C++程序经验的⼈,应考察的是⼈品,是否⾃⼤,是否有合作意识,是否跳槽频繁。
⾸先还是责任⼼。太⾃私,太为⾃⼰着想,时刻把⾃⼰利益看成最重要的⼈,到哪⾥都不会受欢迎。⽆论他技术有多好。
然后考察的是是否⾃⼤。⼈最容易⾃⼤的时候,往往是对⼀门技术已经⼊门,取得⼀定的⼩成就。但是眼界还没有开阔,没有领略到这个领域真正深⼊的技术知识。周围缺少好技术的⼈。这个时候,技术⼈员都容易⾃⼤。适度的⾃信和⾃⼤是允许的。但是⽬空⼀切就完蛋了,说明这个技术⼈员的提升空间很⼩。
合作意识是游戏开发的关键。包括交流能⼒,思考和解决问题的思维⽅式。⼀个喜欢独来独往的技术⼈员,在游戏团队⾥是个很可怕的事情。因为游戏软件不是⼀个⼈能够完成的事情。由于逻辑复杂,需要各种专业技术领域知识,需求变动频繁。每⼀步都需要团队通⼒配合。缺乏这种意识,或者对团队开发不适应有抵触的技术⼈员,在游戏开发领域存活的希望不⼤。
做为⼀个C++程序员,跳槽频繁的履历是很致命的。做C++时间长的⼈都知道。进⼊⼀个庞⼤的C++软件⼯程本⾝就需要不少时间。经过培训,项⽬熟悉,在为项⽬做贡献,这个时间短不了。如果⼀个⼈经常跳槽,说明他⼀直没有踏实在⼀个项⽬⾥深⼊做过核⼼的东西。或者做失败⼀个马上跑掉。这种⼈公司不敢要。
3 对于有专项技能的程序员,⽐如图形程序员。C++只要⼊门有培训空间即可。但对专业要求⽐较⾼。
应该是已经在某个技术领域钻研⽐较深。当然最后在公司还是得成为使⽤C++熟练的⾼级程序员。因为任何专业领域的技术如果要应⽤到⼯程中,还必须⽤C++做⼯具。
4 好的C++游戏程序员,其实不容易。如果他⼲得好,早就成为项⽬核⼼成员。如果项⽬不错,⾃⾝待遇也会很好很稳定。不需要通过⼀般应聘渠道应聘。不是被拉到公司做核⼼技术拿期权,就是⾃⼰创业。
这⾥我打个⽐⽅。⽹易有个云风。⼤家都知道他是⼤话西游2的客户端主程。他是中国第⼀个做开源C++游戏引擎的⼈。开放了⼀整套C++游戏引擎代码。这是他⼤学时做的。毕业后去⽹易。有了平台,做成了中国历史上最成功的MMO之⼀。做为游戏技术⼈员,他的价值可以说已经是很⾼的了。到底有多⾼,我们都不好瞎说什么具体数字。但可以这么刨析⼀下。
⼀个经验丰富的C/C++程序员。有过中国⾃主研发在线过百万游戏的成功项⽬经验。⽬前有⽹易出钱让其独⽴领导队伍搞引擎和游戏产品已经年。这样的⼀个履历,经验,本⾝就价值很⾼。他在任何公司都可以到年薪⼏⼗万的⼯作。如果他具备管理才能。哪怕就是项⽬管理,或者技术管理能⼒。对于⼀个上市公司,他能做出的贡献,应该⽤百万/年量级来衡量。如果他能到⼀个商业⼈⼠,负责舵⼿,并且⾃⼰具备⼀定商业能⼒,独⽴创业。吸引的天使风险投资也得⼏千万(否则做不了事,当然)。如果产品能做成,⾝家到达⼏千万是很⾃然的事。
我相信中国游戏程序员⽔平,运⽓,发展空间⽐他⾼的⼈不多。那么我们可以拿他做个标杆。
我知道很多⼈不服他。不过这⾥说的问题并不是关于他本⼈的。也不需要对他本⼈做什么服不服的评判。做为⼀个社会的⼈,不是靠能写多少⾏代码,代码多么优雅⽔平多么⾼来衡量⾝家的。从这点说,技术没有转化为成功商业产品之前,它的价值为0。做为技术⼈员,社会衡量他价值的标准,并不是要去阅读代码是否质量优越速度飞快。⽽是看他能为⼀个成功商业产品或者公司发展做出多少贡献。这个道理,⼏年前我还不太明⽩。⽽且我做为⼀个技术⼈员,相信多数技术员同胞们都不太可能从根⼉上理解和认同这个看法。这⾥不是评判⽔平,⽽是评判价值。你的价值代表了你能够拿到的待遇。这个不是某个⽼总说了算,某个公司说了算,⽽是取决于⼈均GDP和当前⾏业发展⽔平,⾏业销售额的。我想这个道理也适⽤于所有游戏制作相关⼈员。
结语:随着IT技术发展及应⽤的逐渐成熟,作为C++游戏程序员,他们所要⾯临的业内竞争也将⽇益激烈。对于挣扎在游戏开发这⽚汪洋⼤海⾥的程序员⽽⾔,技术就是王道,也是他们前往成功彼岸的唯⼀扁⾈。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。