好文推荐
https://hot.cnbeta.com/articles/game/1198701.htm
成为程序员需要什么品质和技能?
当招聘新程序员的时候,Monteiro表示他更看重以下几个问题:
这个人看起来是否能够与整个团队有效沟通?这些可以是个人或者专业项目,其范围取决于该职位需要的资历。
他们在编程中最主要的兴趣是什么?他们是否乐于解决难题,还是只愿意从互联网搜索答案?
这些问题可以分为一些关键的领域:
1)技术能力
Ramburrun说,“一个优秀的程序员是个懒汉,不管听起来多么酷,如果技术已经存在,就没有必要重复造轮子。”
这要求对多个程序语言有所涉猎,不管是C++、Java、C#还是其他语言,这些都是要通过在学校或者自学的。最终,你要学的语言取决于你想做什么职位。
要知道,你还需要在工作岗位学很多东西。
Cakmak在谈到Creative Assembly需求的时候说,“从技术层面,我们首先需要的是熟练运用C++,因为我们研发游戏都是用内部的C++游戏引擎。理解游戏研发流程的端对端运作方式以及游戏是怎么研发的,这些也很重要,当然也包括对游戏研发的热情。”
2)解决问题的能力
对于一个优秀的程序员来说,兴趣与解决问题的能力也是必要的。
Palmer-Leandre说,“除了选择的语言知识外,优秀的问题解决技巧也是必备的,因为总有很多问题需要解决,而且很多都是比较抽象的问题。当你遇到难以debug的代码,耐心可以带来很大的帮助。”
Cakmak表示,擅长解决问题还需要有好奇心,以及自我提高的动力。“我们始终在寻找拥有高度解决问题能力的人,这并不意味着他们必须解决每一个问题,但更多的是对于一个特定麻烦可以提出对的问题,并基于要求给出解决建议。”
她说,“不断解决问题有时候令人沮丧,而一个乐观、愿意接受挑战的态度很重要。值得注意的是,每个难题可能都有很多种解决方案,而且总是没有完美的方案,需要某种程度的妥协。有经验的程序员可以高效率地从不同角度看到问题,并因此衡量软件终极需求必须做出的妥协与折衷方案。”
如已经提到的那样,问题解决还包括搞定抽象问题,所以这是你需要适应的。
“程序员必须能做复杂抽象推理,这是解决谜题的时候同样需要的能力,找到一个数学题的解决方法、或者在复杂环境下做决策。程序员必须在他们自己的领域对知识有着无尽的渴望,因为在接下来的职业生涯中,他们需要每天学会新技能。对于只想要学一项技能的人来说,编程并不是一份好工作。”
3)沟通与团队合作能力
有一个技能几乎是游戏行业每一份工作都需要的,那就是团队协作能力,这一点再强调都不为过:做游戏不是单枪匹马。
Palmer-Leandre说,“听起来可能很老套,但沟通和团队协作对于成为优秀的程序员很重要,如果你能够清晰的解释自己的想法,并能够用其他队员适应的方式工作,那绝对可以带来成功的职业生涯。”
Ramburrun补充道,这意味着优秀的沟通和人际交往技巧非常重要。“在游戏业工作,你会发现要和很多人说话,远不止你的队友。他们会有不同的背景、个人以及职业经验,成为友好、善良和善解人意的人可以帮你走的更远。把你的自我关在门外,是开始与人沟通非常好的方式。”
在多学科团队工作,意味着能够向非技术人员解释技术概念是必要的,Cakmak说,“包括接受影响我们的商业或者技术方法,最优秀的程序员不是与世隔绝的,在理想情况下,最有效的解决方案和技术方式是通过合作实现的,比如可以是高级程序员分享经验、以及初级团队成员建议替代方案出现的新想法。指导别人和接受指导,在每个阶段都是通往成功的重要途径,这通常可以带来大量的回报和动机。”
给新手推荐的资源
书籍:
Andy Hunt和Dave Thomas编写的《The Pragmatic Programmer》
Nicolai M. Josuttis的《C++ 17- The Complete Guide》
Scott Meyers的《Effective Modern C++》
Hyrum Wright、Titus Winters与Tom Manshreck合著的《Software Engineering at Google: Lessons Learned from Programming Over Time》
在线资源
HackerRank:用于准备面试和刷新技能
W3Schools:适合新手学习一门编程语言
Udemy:有很好的编程课,尤其是游戏编程
Stack Overflow:遇到问题的时候找解决方案
Shafik Yaghmour的文章:Where to Get Started Learing C++ and What Resources to Use