Currently we're actively looking for a 3D Art Director. Follow this link for more details about the position.
Technical Hiring Philosophy
We're looking for someone who feels that computer programming is what defines them; something they feel like they were born to do. We want people that feel passionate about computer science in general. We live, breathe, eat, and sleep in code; it's our life. We're looking for someone who feels the same way.
Being familiar with the specific languages, systems, and frameworks which I also use is a plus, but is largely unimportant. What matters to me is demonstrable strength (hopefully acquired through real-world experience) in the following fundamental areas of software development:
- Data Structures and Algorithms: be very familiar with the fundamental building-blocks of computation. This is the raw stuff from which software is created. Understand things like “big-O” notation and asymptotic analysis. Be able to talk intelligently about the running time of a given algorithm. Be familiar with recursion.
- Databases: usage of database technologies is a key component in building data-heavy games. Do have an in-depth knowledge of SQL, know how to write complex SQL operations.
- Game Programming: Be familiar with general gaming concepts (sprites, meshes, physics engines, collisions, primitives, bounding boxes/spheres, raycasting, vector math, quaternions). Be familiar with how openGL works. Experience with GLSL/HLSL (working with graphics shaders) is a plus.
Raw programming skill is important, but what’s much more important is attitude. I’m looking for adventurers; after all, who else could I trust to build an adventure? I need to find experienced engineers who aren’t afraid to build something that nobody else is building yet. More than that, everyone in this studio needs to (and should want to) bring new, creative game concepts and ideas to the table.
What to expect from the technical interview?
Basically, you’ll be writing code in real-time with me, on Skype. I’ll pose a code question to you, and you’ll go about solving it. You won’t have a set time to finish the problem (within reason), so you don’t have to worry too much about being really fast. If you need help or have a question about some part of the problem, you may ask.
The interview isn’t strictly about writing code; I want you to explain your reasoning as you solve these problems. I want to hear you talk intelligently about the running time (“big-O”) of your solution(s).
You can expect the code problems to be difficult, but also general in scope. The problems will revolve around your mastery of the fundamentals of computation (data structures and algorithms). Nothing that I ask will require specific knowledge about any particular framework or branch of computation.
Finally, I’ll also be asking you a little bit about yourself. I might ask you something like: “tell me about a time you solved a difficult problem which involved the creative use of data structures or algorithms”. I expect you to walk into the interview prepared to answer this question with a couple detailed examples from your real work experience. I want to know all of the technical details around the problem you faced, what role you played in implementing the solution, and precisely how the solution solved the problem.