RMC Primer: Get A Job In Game Development

A career in video game development is challenging and rewarding. But getting into the industry is not easy.

As reported in the Guardian, the game development industry makes $60bn a year [2014]. It is an industry that’s bigger than Hollywood, that dwarves the music business – and an increasing number of young people want to work in it. Hundreds of universities throughout the world offer degree courses in computer games programming and design.

It is a good time to join. With the arrival of digital distribution, games now have a bigger audience than ever; they are beamed directly to our phones, PC, consoles and tablets.

In my previous article Finding Your Next Unity3D Job I overview what companies want in prospective candidates and outline where you can search for available positions.

As a tangent on the same subject, below is a quick overview of working in the industry with a decided focus on programmer roles, my chosen career.

Game Development Careers

Here are the common roles on a small (5-10 person) game development team.

Roles

  • Producer – Owns the ‘product’. Decides what features to add.
  • Project Manager – Owns the ‘process’ and timeline. Decides if time exists to add the desired features.
  • Artist – Creates concepts, production art, and animation. Decides how the game looks.
  • Tester – Plays the game, reports bugs. Decides what needs improvement.
  • Programming
    • Programmer – Codes the tools for the team and the gameplay for the end-users. Decides how the game works.
    • Lead Programmer – Lead the programming team responsible for creating all the computer code which runs and controls a game. Produce the technical specification of the game and managing the overall code development process

Larger teams may have more specific responsibilities in departments (and roles); Backoffice (Accounting, HR, Marketing), Art (Concept Artist, Animator), Audio (Music Composer, SFX), Programming (Engine programmer, gameplay programmer), Game Designer, Level Designer.

Programming

Let’s compare the skills required for programmer and Lead Programmer. Typically a ‘Lead Programmer’ was first a ‘Programmer’ earlier in his/her career.

I choose to divide the lists into 3 areas; the technical skills (fostered by education), the personality skills (less trainable), and the social skills (how we interact with others).

You can see that as a programmer advances in his career, the lead position requires many social skills to excel.

Required skills (Source: CreativeSkillset.org)

Programmer

  • Tech
    • be able to programme in C++, C and other programming languages
    • have specific platform experience, e.g. Wii, PlayStation, Xbox
    • have a good knowledge of game play
  • Personality
    • be systematic and highly organised
    • be creative and possess problem-solving skills
    • be able to work to deadlines
  • Social
    • have good communication skills
    • be able to work on your own initiative and as part of a team

Lead Programmer

  • Tech
    • have a hands-on knowledge of all programming roles
    • have advanced programming skills
  • Personality
    • be able to resolve conflicts and solve problems
    • be able to multitask
    • be creative and innovative
    • be composed under pressure
  • Social
    • be a team player and a leader
    • be approachable and listen to what people need and want, both from other disciplines and within your own team
    • be able to communicate your ideas and vision to the programming team
    • be able to inspire and motivate the programming team to ensure that everything gets fixed on schedule
    • have excellent people skills with management and communication, including tact and diplomacy

Advice For Career Planning

I choose to divide employee effort/value into 3 areas; the product (what is being created), the process (how it is created), and the people (who is creating it). Here is some advice;

Focus on ‘Soft Skills’ – Programming is important. Its ‘the’ core skill to develop, but once you set that ball in motion, shift your focus to other ‘soft’ skills. Everyone is a great programmer. It doesn’t set you apart as dramatically as other areas of improvement. Many will disagree with my point of view. Many product-centric employees believe that doing more development, in less time, with less lines of code is the only goal. As a people-centric and process-centric philosopher, I recommend instead to focus on the soft skills; EQ (Emotional Intelligence Quotient), social graces, communication, language, personal habits, interpersonal skills, managing people, leadership, etc. that characterize relationships with other people.

Focus on Learning – Create a virtuous cycle of meeting the requirements of your assigned job description (typically focused on ‘product’) while also raising quality of the process and bolstering your people skills. For more info, see my previous article Ultimate Path Learning. I contribute high quality Free Unity / C# Video Tutorials for new and veteran developers to build community and sharpen my knowledge and communication skills.

Pick Your Moment – Jack Ma, Founder of Alibaba advises to pick your moment. Your strategy must change as you age.

  • Age: Childhood – Be a good student.
  • Age: 20’s – Follow a mentor. Go to a small company — you learn the passion, you learn the dreams, and you learn how to do lots of things at any one time. Make mistakes.
  • Age: 30’s – You have to think very clearly if you want to work for yourself. If you really want to be an entrepreneur. This is the ‘mid-game’.
  • Age: 40’s – You have to do all the things that you are already good at.
  • Age 50’s – Work for the young people.
  • Age 60’s – Spend time on yourself. Its too late for you to change.

Focus on Passion – Use your early years to try EVERYTHING professionally, then settle into the things that are a fit for your strengths, your interests, and your passions. For more info about my passions including teaching and charity see my previous article Playing For Good.

Consider Your Mid-Game – Over your career (ex. 40 years of work) you will likely hold many different positions and many different companies. You may start as a Game Tester, then become a Programmer, then Senior Programmer, then a Lead Programmer which is generally  most advanced role in that specific career track. For the excellent and ambitious that might happen in the first 10 or so years. So what then do you do for the next 30 years of your career? There are endless layers on top of the value offered within that track, but other opportunities are calling too. The biggest mid-game (i.e. mid-career) question is do you want to lead people, or do you want to stay solo. Consider your strengths and interests. As your answer becomes more clear you can steer your growth and progression to fit that goal.

Avoid ‘Rockstar’ Programmers – These are programmers that 1. are extremely efficient and deliver results and 2. are isolationist and self-serving. There are countless definitions for this type of worker, but let’s stick to definition for now. There is nothing ‘wrong’ with working that way per-se, but when a company actively hires rockstar programmers (through the language of job descriptions and the practice of the recruiting process) it is a red flag. The company may value end-results more than process and may value product more than people. As a job-seeker, be cautious of joining such a team unless those qualities match your career goals. A Rockstar coworker may indeed raise the quality of the product, which is good for you and your portfolio. But a teaching, sharing, collaborative programmer will help you build your own toolset more dramatically which IMHO is more important to your career. As a job-recruiter, be cautious of hiring such a candidate as he/she categorically will not thrive within a people-centric environment and the rest of your team may be impacted as well.

Short Interview About My Career

I have 16 years of experience in video game development [2015]. My roles include; founding team member of Neopets.com, owner and consultant at Rivello Multimedia Consulting (portfolio), and senior programming positions at leading game studios (LinkedIn).

What education do you have?

I decided between studying computer science and graphic design. I graduated with a B.A. degree in Media Studies (graphic design + multimedia). In the first year of my career I changed from an artist position to programmer. I have been a programmer since.

What was your career path?

Game programmer and founding-team member of a gaming startup which grew from 5 people to 180 in 8 years. Managed a team of 12 game developers. Left that company to start another company as a consultant for 8 years. Now, I’m a full-time employee again, as a Unity game developer.

Did you expect to end up in this field?

Ending high-school in 1995 I dreamed of working in video game development. At that time that meant working for one of the biggest companies. Then the internet bubble came and went, mobile phones came and stayed, and democratization of game development made indies a reality. Its a totally different industry now.

When you are interviewing young candidates, what are you looking for?  What advice can I give students so that they stand out?

When hiring for a small team, end-to-end game development experience and social skills are priorities. I like to see a side-project the candidate completed at home handling the game design, development, (simple art), and really succeeding in the polish of the input as well as the feedback to the user. A candidate really impresses who can speak clearly about his or her goals on that project, who can defend the choices made during design and development, and who can take criticism on the completed project. A student should get experience working with people (customer service, retail at a store, etc…) anything where communication is critical so they can speak their mind, listen actively, and demonstrate putting the needs of others first in conversations and meetings.

Are there any programming packages or languages you like prospective candidates to have experience with?

As a web developer I recommend learning some client platform (e.g. HTML5/JS/CSS) and some server platform (e.g. Ruby). Typically members of a team will focus on one or the other, but knowing some of both will help you collaborate with more compassion. Young game developers are advised to learn engine-level programming (e.g. C++) and gameplay-level programming (e.g. C#) for the same reason. I’m learned to program outside of academia, so my focus is mostly client side (Unity with C# most recently which serves me well).

Many students are interested in studying business.  Do you think programming/technology based skills are becoming essential in this area of study?  If so what types of skills?

For business-people the required technology has changed. It went from nothing required, then in the 90’s Microsoft Office was the core skill, then in the 00’s learning to program webpages was the buzz-topic, now I think commanding social media channels (for marketing purposes) may the the latest tech area that business people are encouraged to learn. I’m not sure of the answer, but I’d say if you don’t ‘do’ tech in your job, but you work with people who do, then you want to gain as much expertise as possible on the tech that your coworkers know. This builds rapport/understanding and improves the efficiency the feedback loop between your requests and the tech teams responses.

One of my students ask me to forward this question J. How important is it to have solid mathematical skills in this field?

You can be an excellent programmer without historical interest or excellence in mathematics. Becoming comfortable with ‘logic’ as a concept has been more relevant to me than specific mathematics. Some exceptions where math directly helps my game development are trigonometry for 2d and 3d tasks (collisions, path finding, camera) and statistics for understanding creating controllably-random level generation and AI routines.

Removing cost and skills constraints, what software packages would you encourage future programmers to learn?

For game development. Learn to model simple 3D in Maya, animate it in Maya, texture it with Photoshop, import into Unity3D (or Unreal), and create a simple, complete game with it. The goal is workflow, not polished final product.

What software packages would you encourage future programs to learn that are accessible?

Unity3D. Its extremely popular and accessible (free and cross platform). Other engines exist and the popularity of tools changes, but competency or expertise in any one package is my recommendation. 

If you were to pick a languages to teach students today.  What language would it be and why?

C++ and Java have VAST resources available online and in academia. They are great for learning the fundamentals. C# is great too. From a learning perspective, you want a language with core features such as class based inheritance and strong typing. You can compile and run small demos for free online via Tutorialspoint.com and others.

Resources

  1. Find your ideal job fit (Sokanu.com)
  2. Is It Worth Getting A Degree In Game Development (IGN.com)
  3. How To Get A Job In Game Development (TheGuardian.com)
  4. Be Organized (GettingThingsDone.com)
  5. Evaluate Your Progress (Forbes.com)
  6. Invest In Your Personal Development (Glen Lopis)
  7. Raise Your Own Standards (Jack Zenger)