Hi everyone, this is Karim!
This blog has been requested by some of my friends and colleagues who want to become professional programmers in the game industry. So I thought I’ll talk about the practical steps to become one.
As you may know, the game industry is huge and competitive. Being a game programmer is more than knowing the engine or writing a feature. So I’ll attempt to cover the matters that really matter to any game studio looking to hire programmers, to which many programmers don’t give enough attention.
- MATH BEFORE ANYTHING
Yes, even if you’re aiming for a job in a studio that makes simple mobile games, chances are you’re not getting the job if you don’t know your math. I’ve talked before on the essential math skills you need as a game programmer. So definitely check it out.
- Deep understanding of OOP
OOP (Object-oriented programming) is a concept in programming in which we treat code instances as objects of classes. Understanding and mastering OOP is paramount as you won’t be able to make any functional game without using the features of OOP.
- Speaking of OOP … SOLID principles!
SOLID (Single Responsibility, Open-closed, Liskov substitution, Interface segregation, Dependency Inversion) are a set of principles that allows you to write highly maintainable and flexible code. This is very important in the game industry as we usually reuse a lot of the code we write in different games. Not only reusability, but makes our job way easier when it comes to updating a game, remastering it, and having multiple programmers work on the same code base. Mastering SOLID principles will truly transform you from an amateur game programmer to a professional one.
- Execution is key
Even if you are a very good programmer with all of the three attributes we’ve listed so far, you’re most likely won’t get a job without something to prove your skills. So, execute on your knowledge. Implement as many features as you can. You don’t need complete games, just mini-games that show your skills at implementing different features in different game genres. Don’t focus too much on graphics or any other aspect. It’s completely fine to use game-ready assets for graphics and sound while really focusing all your energy on polishing whatever feature you’re working on. You can get fancy as well and combine multiple features together. Don’t forget to have your code on any kind of version control so that anyone who’s looking to hire you can take a look at your code.
This is a very straightforward step and it’s general for any software engineer, not just game programmers. The difference is, instead of going to your typical problem-solving websites that might have little to do with actual problems that you will face in game development, try websites like codingame.com where you get to solve programming problems through making mini-games work.
Another way is to apply your mathematical knowledge to a certain feature that you want to execute. Just make sure you aren’t using as many helping libraries since this will not really help you a lot in leveling up your problem-solving skills.
This one also goes without saying for all software engineers. To be able to debug your code to find potential errors or prevent them before they occur is also a very important skill to have and one that will often be tested in an interview. The best way to practice this is to aim to complete a feature without segmenting the work. Just write the feature in one go and compile it once. The fewer errors you get the better your debugging skill becomes.
- Work inside a team
Whether you freelance some work, go to game jams, or contribute to open-source games, working in a team of developers improves your soft skills like communications, meeting your deadlines, working under pressure, working with other people’s code, and the ability to integrate all of your efforts into one functional codebase.
- And finally … Documentation
Not all studios will be asking for this, so you can consider this optional. But having the skill to document your code in a simple way without writing paragraphs is a skill I personally look for in programmers we hire. It makes the job way easier in the long run for you and for the rest of the team when you work with a code that is well documented. Imagine a world where you don’t need to go through your friend’s code just to understand how to use a function he wrote! Now that’s heaven on Earth!
So, now that you know the practical steps to become a game programmer, you should start planning how you will improve each skill and how to optimize whatever free time you have to get the most out of it. There are countless tutorials on each step for different game engines and programming languages.
What are you waiting for? Let the games begin 😉