聘请高质量的虚拟现实(VR)开发人员对项目的成功至关重要. 尽管有各种各样的网站提供自由虚拟现实服务, 在你的团队中找到合适的人来填补这个角色仍然存在挑战.
你可能是一家大公司开发团队的招聘经理, 或者一家寻找充满激情的VR开发者的小公司. 无论如何,面试过程是评估你所寻找的人才的一个重要方法.
美术和编程对于任何沉浸式虚拟现实项目都是至关重要的. 这取决于你公司的文化, 美术和编程角色的定义可能非常严格,几乎没有重叠, 或者非常流畅,两者之间的区别不大. 本文专门介绍程序员, 而不是像3D建模师这样的职位, texture artists, and animators.
我们亲自采访了几位行业领袖,讨论了虚拟现实开发面试和招聘的细微差别. 适合你项目的开发者将会受到你的VR公司的影响, 但我们所有的消息来源都有共同的特点,即他们想从VR开发者那里得到什么以及他们如何选择采访他们.
Roles
传统的VR工程(无论是否与游戏相关)深受游戏开发和应用开发社区的影响. 团队中的角色通常会反映这一点, 但是你公司的文化将最终决定你如何在你的团队中描述工程角色. 与我们与VR招聘经理交谈时遇到的语言保持一致, 我们使用了“玩法”和“游戏”等术语.” However, 这些角色同样适用于与游戏无关的虚拟现实应用程序, 比如互动体验, movies, and consumer spaces. VR工程师的角色通常分为三类:
1. Gameplay Engineers
游戏玩法工程师关心的是用户与VR游戏互动的方式以及他们的体验. 它们构建游戏世界,而不是图像. In other words, 这些工程师构建的是游戏本身,而不是运行游戏体验的技术.
游戏玩法工程师将负责诸如游戏体验中的角色行为等内容, 在虚拟现实应用程序世界中,用户如何与环境交互, 以及用户在世界中的导航.
2. 引擎程序员(或“核心引擎程序员”)
引擎程序员几乎与游戏玩法工程师完全相反. 这些程序员致力于体验所依赖的底层技术, 尤其是渲染体验的3D技术.
他们还专注于确保性能是可接受的. 这在VR中尤其重要,因为低帧率会导致恶心.
In modern VR, 很少有引擎程序员会负责构建能够完整运行游戏体验的引擎. 他们更有可能负责与用于开发游戏的第三方引擎进行低级互动, such as Unity, Unreal, or CryEngine.
3. 高级脚本工程师
脚本工程师的角色与游戏玩法工程师相似. 它们在Lua或UnrealScript等语言中工作得非常高. 这与游戏玩法工程师截然不同, 谁在编写游戏时使用的是同一种低级语言, usually C++.
在一些VR应用开发环境中, particularly Unity, 高级脚本工程师和游戏玩法工程师之间的差别不大. 这是因为游戏玩法代码往往是用Unity支持的高级语言编写的, 比如JavaScript或c#.
以上描述的每个角色都经过正式培训. 与其他软件开发和编程专业不同, 现在很少有人在没有去学校获得编程或计算机科学学位的情况下拥有这些特定的VR开发技能.
超出正规培训, 在面试虚拟现实开发人员时,您应该希望在候选人身上看到以下几个特征. 如果你选择给你的候选人一个技术面试,我们建议花三到四个小时.
合作潜力
任何虚拟现实体验背后都有一个复杂的实时系统,其中包含许多活动部件. 具有协作思维的开发人员会考虑到其他团队成员,并意识到工作流程和管道.
无论你是在小公司还是大型分布式团队中工作,沟通都是至关重要的. 协作团队成员可以独立工作,但也不怕提出相关问题并分享有效推进开发的见解.
Problem Solving
有几种方法可以评估解决问题的敏锐度. 和其他技术面试一样, 在面试过程中提出技术问题是评估解决问题能力的好方法. 它们是一个很好的工具,可以引出被采访者对这个主题的想法. Help when necessary. 请他们详细说明,以收集更多关于他们思维过程的细节.
有些技术问题是通用的,适用于任何编程角色. 其他可能更具体的虚拟世界,如相机计算, rendering problems, 和角色AI技术. Additionally, 作为面试官,你应该评估他们对绩效的看法以及问题解决方案的正确性.
3D Math Skills
任何参与构建VR体验的人都需要一定程度的3D数学知识. 也就是说,具体的级别取决于他们在团队中的角色.
核心引擎程序员将需要深入,3D数学的各个方面的复杂知识. 这包括矢量和矩阵数学,以及渲染、物理和着色的数学.
On the other hand, 游戏玩法和脚本工程师只需要了解如何使用3D矢量和转换的基本知识.
面试的这一部分应该是量身定制的,以挑战他们的3D数学技能,使其适合他们所申请的职位. 这些问题应该试图揭示他们对所涉及的原则的基本知识, 而不是死记硬背3D操作知识.
一个例子是,他们应该能够分辨出向量积和点积的区别,以及如何使用它们, 但不一定知道做叉乘的精确运算顺序.
Speed
记住,虚拟现实体验的每一帧必须在16帧内运行.6毫秒,否则会导致恶心.
Virtual reality, 就像我们今天的经历一样, 取决于效率:代码运行得快吗?
除了使用应用3D数学解决三维空间中的问题外,解决方案还必须优美. 如果解决方案效率低下,那么数学上的正确是不够的.
For example, 对数学搜索问题的暴力解决方案不太可能是实用的, 即使它在数学上是正确的. 如果你在面试中遇到这样的解决方案, 试着提示受访者在基线蛮力解决方案的基础上进行构建,并将其转化为更高效、更优雅的解决方案.
优化是获得愉快用户体验的关键. 记住,虚拟现实体验的每一帧必须在16帧内运行.6毫秒,否则会导致恶心. 这要求团队的所有成员都了解性能和优化.
这有两个方面. 有一个理论上的大o符号——任何计算机科学专业的毕业生都应该理解——你可以用它来表达一个算法在理论上的时间和空间复杂性. 但是也有更多实用的经验知识,将代码与现实世界的性能联系起来.
前者可以在提出前面“解决问题”一节中讨论的技术问题时进行评估. 受访者是否理解他们提出的解决方案的复杂性, 以及这将如何影响其理论性能?
后者对于低级引擎程序员尤其重要,可以通过询问他们编写的代码对低级性能的影响来评估. 他们是否理解不同级别的缓存对性能的影响, for example, 或者CPU和GPU的性能特性?
Desire
一个渴望在该领域获得职位的人会有激情项目的例子. As an interviewer, 花点时间看看他们在GitHub等开源存储库上发布的源代码的质量,或者他们提供给你的工作示例. 这些项目容易编译和运行吗?
渴望通常表现为应聘者的热情和从本质上提高技能的意愿. 询问他们的兴趣项目和他们为他们编写的代码,以一种让他们透露他们在虚拟现实领域工作的愿望的方式.
程序员不一定要提供演示文稿,但这是值得赞赏的. 如果你有一个演示卷轴, 询问有关实现演示卷中所示内容的技术细节的问题.
As mentioned above, 这取决于你公司的文化, VR编程和艺术角色之间的界限可能会更少. 对于任何有艺术成分的角色, 一个演示卷是至关重要的, 因此,在面试过程中,你需要对他们进行深入的评估.
Overall Value
除了技术技能和激情, 在评估候选人对你的团队的整体价值时,还有其他一些重要的方面需要考虑.
当你在寻找新的团队成员时, 你可以记住这一点:在我们的采访中, 最常见的招聘职位是游戏工程师. 最困难的角色是核心引擎程序员. 当你面试人才时,了解他们在更广泛的技术生态系统中的价值是很重要的. 这将影响他们可能收到的竞争报价的数量.
However, 不管竞争要约的可能性如何, 你应该努力使面试过程越快越好. 有效地向成功和不成功的面试者表达结果.
现有技能和快速学习
很明显,最有吸引力的候选人是具备多种技能来填补空缺的人. However, as an interviewer, 考虑一下你的候选人是否有教化能力也会有所帮助. 在工作中学习的意愿和能力与展示掌握的综合技能同样重要. 你的需求和预算将以这种方式指导你雇佣最优秀的人才.
长期和短期方法
每个团队都有预算和时间表,包括长期和短期目标. 核心引擎程序员对你的团队非常有价值,因为他们拥有多种技能. 在面试过程中, 考虑你的员工能够帮助塑造和维持的长期和短期目标.
有些工程师可能擅长灭火, 但不一定擅长重新构建您的技术以满足您的长期目标.
面试过程的一个目标应该是确定被面试者如何适应你的团队和日程安排. 有时候你的长期和短期目标可能需要不同的雇佣决定. 有些工程师可能擅长灭火.e., 解决阻止虚拟现实项目发布的即时问题和bug,但不一定擅长重新构建技术以满足长期目标.
Likewise, 对您的虚拟现实技术的体系结构有远见的工程师可能不太适合介入并修复当前阻碍项目完成的高优先级JIRA项目. 你的面试的目的应该是在你的项目中区分这两个角色.
并不是所有的开发者都适合这两种类型. 事实上,有些人可能能够很好地发挥这两种作用. 作为面试官,你应该意识到你想要填补的是这些角色中的哪一个.
要找出善于救火和解决眼前问题的工程师,就和他们谈谈他们工作经历中的类似案例. 深入研究他们在以前的工作中解决的难题的技术细节. 这些问题是在什么时间被解决的? 他们是如何解决这个问题的, 他们对解决方案的具体贡献是什么?
For a more visionary, architect role, 通过提问来了解他们对整个系统的看法. 在之前的项目中,他们是否领导了生成系统架构的过程? 他们对为更广泛的软件设计做出贡献感到兴奋吗? 最后,他们是否能够与身边的同事清楚地交流自己的见解?
Creative Ability
在面试招聘过程中,VR工程中的“创造力”可以用两种方式来定义. 一个人可以有视觉上的创造力.g., with effects; there is also the marrying of math and art. 有些人可能在设计上很有创意, enhancing gameplay, 调整角色移动时间, 让跳跃机制具有正确的感觉等等!
了解面试者的创造能力, 您将需要结合我们前面介绍的特定领域:解决问题, 3D math skills, and desire. 给出的答案是否反映了受访者的创造性观点,还是更线性的思维方式?
Pushing the Envelope
虚拟现实是一个仍在制定规则的前沿媒体, 不像像电影这样的媒体,许多惯例已经建立了近一个世纪. VR领域的创意工程师必须准备好编写未来VR创作者将遵循的规则和惯例.
During your interview, 询问工程师对更容易获得的虚拟现实体验的想法. 询问他们对该领域可持续性的看法. 他们的回答可以帮助你衡量他们的创新程度.
在VR时代升级你的团队
面试全职或兼职VR开发者(以及AR开发者)可能会很有挑战性, 但如果用对了镜头, 你可以找到你需要的人才来赞美你的团队,实现你的愿景. 为了虚拟现实领域的发展和繁荣, 我们需要创造可访问性, 高质量的体验,与负担得起的VR技术硬件和VR头显(如三星Gear VR)配合使用, Google Cardboard, or Oculus Rift.
渴望创新,寻找志同道合的人才, a heart for teamwork, 以及以最少的管理监督进行生产的能力——没有其他方法可以保持在VR应用革命的前沿!
我们要感谢Dave Alpert, CEO at Geopogo; Glen Egan, President and CEO of Sanzaru Games; and Alton Glass, Glassrock Entertainment的主管和所有者,感谢他们在我们撰写这篇文章时的见解.