I will start this blog post by giving a disclaimer. All the content of this post has been written to help junior programmers to get in the video game industry. To do so, I have asked a big amount of people from the industry. Including CEOs (Chief Executive Office), HR (Human Resources), TA (Talent Adquistion) and obviously both juniors and seniors programmers. All the information is going to be displayed objectively with some personal arguments and opinions about them.
1. Analyzing the video game industry and yourself to determine your path to follow
What is your goal?
When pursuing something, either be your dream job or whatever, you need to have a realistic goal to work towards. A goal must always be carefully thought about over the spawn of a few days or even weeks. It will define your future so dedicating the necessary amount of time is essential. If we are talking about the video game industry, it could be something like ending up working for an international renowed company like Nintendo or maybe take part in the development of an award winning-game.
If you do not have any goal on mind. Take a moment of your time to think clearly without any distractions and set your own personal goal to achieve. Maybe reading this whole blog post first can help you come with one easier. The choice is yours.
What are area of video game programming do you want to focus on?
As a junior programmer, you are very likely going to end up in a small company where you will do most of the programming if not all for a video game. However, that will change once you start getting hired by more important companies.
If you have performed any kind of video game programmer job offer searches. Then you will probably have seen the different programming areas that companies want and are high in demand. Those are mainly 3: Gameplay Programmer, Engine Programmer and AI (Artificial Intelligence) Programmer. Other fields like I/O (Input/Output) Programmer, Tools Programmer and more do exist but to a lesser scale.
This topic strongly relates to one of the most important sections which I talk about later, Specialization versus Generalization. Before end up making your decision, I recommend you to wait until you read everything.
What platform do you want to develop for?
Similar to what I explained before, apart from the need to choose an area of programming. At some point, you will end up developing for specific devices or platforms.
If you would like to go for the easiest and safest bet, it is by far, the mobile games market. It has been growing healthy each year and it will continue to do so. This is why there are lots of job offers for mobile development games and why there are lots of small or indie video game studios that exclusively only develop mobile games. Less complex and short games which generate more revenue than traditional platforms like consoles or PCs.
Flappy Bird, a mobile video game that you can program in under 100 lines of code, was making $50k per day.
Create a suitable curriculum vitae
After determining the path that you are willing to follow. It is time to create your curriculum vitae or adapt it if you already have one.
There are lots of tips from HR members themselves posted on the Internet on how to write a good curriculum. It is one of the most important steps in getting a job so take your time and make your research. The same applies to your portfolio since it is linked to your curriculum but we will talk about that later.
Make use of the many downloadable templates that you can find on the Internet. However, I would not recommend using a website to design your curriculum. As you will not be able to fully customize it or easily edit it later on. Sometimes the simpler solutions are the best, so I suggest sticking to a downloadable template for more efficiency.
Your curriculum should never be longer than one page. Try to fill as much useful and meaningful information as you can it. It might prove to be challenging but take your time as I said. It is 100% worth to spend a few days in creating a better and ideal curriculum. Once you believe that you are done, try and find people who can evaluate it. If it can be a HR person, perfect as they are the ideal individual for the task. If not, whoever you think that they are impartial and can give proper feedback. Reviewing a curriculum does not take too much time so most people should accept your proposition.
Create an online portfolio
Some people say that your portfolio is more important than your curriculum and I understand why. I would say that they are both equally important. Nobody will take a look at your portfolio if your curriculum is bad. Although your portfolio is usually the main factor in choosing a candidate over another one.
Creating a portfolio is not an easy task and will take way longer than building a curriculum vitae. A portfolio’s goal is to show your work and projects you have worked on, so others can evaluate it. For example, in my case, my portfolio is actually this website. It took me slightly over a month to finish it and you have to periodically update your portfolio of course.
Hosting and buying a domain is not exactly cheap so it might not be a viable choice for the majority. Luckily, there are infinite alternatives. As a junior programmer, you could simply post all your scripts in a GitHub repository. As an artist, you may post some of your art on Pixiv. You understand what I am trying to say. If you do not like having a public GitHub repository that everybody has access to. You only need to think about other options to find a solution to your problem. Uploading your scripts on a Google Drive folder might be a good option but it is questionable.
There are no established methods on how to create and display your portfolio. It greatly changes between work fields as you have seen. The general consensus regarding the video game industry, is to have a public website. This can either be an owned website just like mine or a third party website. A good combination is to create both a GitHub repository and an itch.io subdomain for your games.
2. Learning and acquiring the necessary skills to enter the video game industry
Which video game engine should you learn?
As the video game industry is right now, there exists two mainstream softwares. You probably know about them as a video game programmer, but those are Unity and Unreal Engine. We could argue whether or not you should try and learn a new upcoming video game engines like Godot. Although, nothing guarantees that video game companies will use it.
My recommendation which matches with most professionals is to either learn Unity or Unreal Engine. You can even learn both if you consider yourself capable enough. Keep in mind that it is always good to know at least the basics of both engines. If you wonder why it is not easy to learn both programs. This is because they are very complex programs which belong to different programming languages. Unity uses C# meanwhile Unreal Engine is based on C++.
Whilst those two game engines are the most used, bigger companies prefer to create their engine. This is where Engine Programmers and I/O Programmers jobs and a few more come from. The reason that I personally rate learning Unreal Engine higher than Unity, is because those custom engines use C++. If want to know the reason why, it is mainly due to better performance and customization. There is more to it, so for a further and detailed explanation, go look it up.
This means that by default, if your plan is to end up working on an important video game company. It is going to be more beneficial and time efficient for you to learn Unreal Engine. Also, the job offers for Unreal Engine are sligthly higher. However, focusing on just one engine makes it that you become skilled in one field. This is when the problem of Specialization versus Generalization makes its appearance.
Specialization versus Generalization
We are in a world where specialization is rated better than generalization. This is thanks to all the technology and other field advancements we have made in the last decades. If the answer is specialization, then why bring this topic?
As a junior in any field, you have very limited knowledge of the areas you will work on. To become specialized in a software, it means that you know and can implement almost everything that said software allows to do without any help. This process can take up to 5 years for an average program. Nonetheless, if we are talking about a complex software like a video game engine. I would personally move the threshold up to 10 years if not even more.
If you cannot grasp the situation, learning a complex software such as video game engines is like learning a language. It will take you relatively low time to learn the basics but good luck trying to master a language. The learning curve becomes exponential and so everytime you will learn less while needing to spend more hours. Oh and by the way, fluent speakers of a language are nowhere close in being specialized in it. They are simply above the average, so in reality it is a generalization. Does your average fluent person know like 75% of the available words in their language? Of course not. Also, as a matter of fact, being a senior does not automatically make you specialized in a software.
Even the most proficient people can only master one or two skills in their life. There is a reason why in a university degree you get taught generalized concepts while studying a specific work field. Being taughts the basic of lots of different but similar areas bring lots of more rewards in the beginning. That it is why I believe that for a junior, you should focus on generalization.
Generalization broadens your skills repertoire with multiple softwares allowing you to be able to apply for lots of differents jobs. It is true though, that as a junior, you may not be able to partake in specialized jobs. However, this is none of your concern. It should not matter or bother you at all since a junior will never be specialized to begin with. Later on in your life after you have settled, sure go ahead with the specialization of the software of your choice. At that point, you will have all the time you need which juniors certainly do not possess.
The only thing that you should avoid doing at all costs, is to divert all your efforts and time into learning a program that practically nobody uses it in the video game industry or in any other field.
How to improve at video game programming?
Well the typical answer would be to practice more but this sometimes can be misleading or not helpful. It is impossible to give a proper answer to this. It highly depends on each individual but general guidance can be provided.
An overall tip is that you should try to pay attention to your weaknesses or what you have trouble with. Once you know that, then you can focus on it and try to find the root of the problem. Programming in the end is just complex logic, so you can always try and train your brain to think in a methodical way, just like what a robot or a computer would do.
Some programmers suggest drawing on a paper the fundamentals of a problem to identify the issue easier and solve it. Actually, I do believe this is a really bad habit. You should make use of your brain to retain all the information and create the visualization on your mind. A program is a long composite flow chart so try to visualize the paths and combinations it can take.
For example, a very common problem in video game programming is the priority of actions. Imagine that your player can move with WASD and while the player is pressing W, they also press A. Will the player move north-west? Will the first input prevail over the other one? Or maybe the last one prevails over the first one? Will both actions cancel each other so the players stops? Always try to think about all possible behaviours even if they sound stupid or have a rare chance to happen. This will certainly help you in creating a bug free video game and make you a better programmer. The best point about this is that you can adopt this thinking style and apply it on anything. Basically, you could easily practice it all day if you wanted, but it is very tiring and taxing doing so.
Another important topic to discuss about are data structures and algorithms. Since video games can be completely different between each other. It is almost impossible to know which data structures or algorithms you will end up using. So therefore, it is essential that you learn them as much as possible as this will greatly boost your knowledge and logical skills. There are lots of online websites that let you practice your programming skills, data structures and algorithms, so use them.
Always remember that programming requires knowledge about other logical fields, usually being mathematics and physics. Depending on the type of programming you do, you may need to add additional areas like device architecture or similars. So, never neglect those as they are all necessary.
3. Getting a job in the video game industry and being efficient at job searching
Apply for suitable job offers and check regularly
This is an obvious step but it is always worth mentioning.
What is usually never mentioned is that you need to find the proper places to perform your job search. Video game programming jobs and similars are not available in the typical job portals you know about. Ask programmers inside the video game industry which are the main websites for your specific case. If have nobody to ask for, try to search a little bit by yourself and see what you find. There is always LinkedIn jobs section or visiting each video game company website and check if they their vacancies listed.
Job offers are intentionally scary to drive away candidates by putting lots of required experience and unnecessary requirements. Whenever you are suitable for a job offer, even if you do not meet the requirements, apply anyways for it. As a junior apply for the jobs with the lowest requirements or the ones that match your skills. Do not apply for offers that specifically want a senior candidate.
Job offers are not infinite so you will reach a point where there are no more offers or positions available. When this happens, you can use your free time to improve your skills and occasionally check them up again and see if something new has appeared. The frequency of your checkups should depend on your zone but usually doing a review weekly is enough.
Obtain referrals
How many times have you heard about referrals? Probably a lot and as a junior, you should have none. However, if you are a good and capable student or worker. You can always ask others that have seen your work or have worked with you to become referrals. Let it be family, teachers, students, entities, organizations, companies or even celebrities. It is by no chance a weird thing to ask for.
Referrals in terms of gaming are overpowered so you should abuse them whenever you have the chance. Somebody might have worse qualifications than you but will end up stealing a job because of referrals. Unfair? Absolutely so, but it happens a lot so get used to it. Getting a job can be extremely unfair and tedious so you are in for a wild ride.
Expand your network and influence to build a reputation
Referrals are amazing but getting them is really hard. This is how networking comes into play. Depending on your social skills and mainly luck, this might end up being more effective than referrals.
There are lots of ways to expand your network and influence to build your reputation. I am in no way an expert at this but the feedback I have gathered agrees that creating a LinkedIn and Twitter account is a step on the right direction. On those platforms, you keep being active posting and sharing content of the areas of your interest. In the meantime, you can contact and add important people from the video game industry and post about your projects and status. Your success will depend if the contents that you post about are interesting enough for others so that they share it. There exists lots of unaccounted external factors which I am going to address a few of them below.
Think of it as the following way. Right now, my influence is around 100 people judging by the number of contacts that I have in LinkedIn. I am writing long blog post for 100 people in theory. However, when I make my public announcement in LinkedIn, I might choose unluckily a very bad timeframe for my contacts, so only 75 see my post. Maybe I am little bit lucky and all my contacts view my post plus I gain 20 new followers. Then there is the extremely rare case where a LinkedIn user with millions of followers gets recommended my post. If this user ends up resharing my blog post or making a positive comment about it. I would have hit the jackpot and I will probably get a few hundreds of new people to interact with.
Send self-applications to video game companies
As a junior, you are a nobody. The video game industry does not know about you and will never do unless you are active in avoiding that. A great way to fight against this issue is as I have stated above, to build a network. Nonetheless, there is a more effective way which indirectly does not look like it. Judging by the header title you have already probably guessed, but it is sending self-applications or also called spontaneous application.
Self-applications as the name implies, is a way of contacting a company and telling them that you would like to work with them without specifically applying for a job offer. Since companies are out there always looking for new talents, they will read your self-application and they will acknowledge you. Even if this does not bring us any direct results, we have indeed gained a lot.
Maybe in the future when one of those companies, that we contacted voluntarily, has an open job position. They might remember about us and tell us in advance so we will have a better chance than others candidates. Of course this completely depends on the benevolance of the company. Although if you have contacted hundreds of them, I am quite sure that these occasions are bound to happen.
If you would like to learn a bit more about self-applications. I recently made a blog post about them so I would suggest you to read it if you have not. Keep in mind that the better your self-application is, the better your chances are. Some companies even encourage others to send their applications so it is in no ways a bad thing to do.
Join groups and communities with shared interests
This one is quite self-explanatory. Joining groups and communities with shared interests will help you overall in the long term. Plus, it is always nice meeting new people that may potentially become your work partners in the future.
The biggest problem with this point is that some of this groups or communities are private or hard to find. Therefore, you will need to know beforehand those groups and communities or people from them. Otherwise it might prove difficult to join them. In my case, when asking for feedback from various professionals of the video game industry. Very few of them actually mentioned this point to join groups and communities.
It might be nice to join public, bigger and international groups and communities. Instead, refrain from doing so and please give priority to the ones that are near your zone. For example, do not search up for global communities if you are from Catalonia (Spanish region). It will lead to better results if you try and find a Catalonian group or community. If that proves to be too difficult or impossible, then simply increase your search scope a little bit. Rather than searching now for Catalonian communities do it also for Spanish ones. If you are unlucky in your search, then do join global groups since joining one is better than none obviously.
4. Other minor but still important advice and suggestions that might help you
Give development engines a try
If you are skilled in maths and physics and interested in customs game engines. It might be a great idea to give development engines a try and see if it catches your interest. There are many development engines on the market. Right now, the most common ones are Cocos and Simple DirectMedia Layer.
As a warning, notice that we are currently in the minor suggestions advice. This means that all the methods listed here should have less priority than others from the sections above. I am simply listing all different available options, so feel free to do as you wish.
Try to finish all the projects that you start
A lot of people can start their own projects but very few actually manage to finish them. Avoid that behaviour and always try to finish yours. A great suggestion is to start with very simple video games or prototypes and increasing periodically their complexity and length. Keep doing this until you find the ideal project length you feel comfortable with.
I would not personally recommend going over a year long project since this will become counterproductive for your portfolio. If you still want to go ahead, at least make meaningful updates from time to time to inform people. The longer the project, the easier it is to abandon it.
A great tool to keep track of the development of your video games might be HacknPlan. I have not had the chance to try said program. But I have heard good things about it, so that is why I am sharing it with you.
Participate in game jams
A game jam is a contest where participants develop a video game from scratch abiding the given topic and rules. Depending on the format, participants might work independently, or in teams. The contest duration usually ranges from 24 to 72 hours. Participants are generally programmers, game designers, artists, writers, and others in game development-related fields.
If you place well enough in the rankings, you can earn prizes and even awards. It is a great initiative for any video game programmer overall either be it a junior or a senior. Getting an award from a game jam will surely boost your chances to get a job in the video game industry.
Fortunately, programmers can perfectly participate in game jams individually. However, it is usually a good idea to find an artist to work with. You will have plenty of chances to attend a game jam. They are quite short on duration plus they are usually on the weekends. Remember to keep track of them and good luck if you decide to participate in one.
Learn new technologies like VR or AR
New technologies like VR or AR might change video games forever. There exists a big number of video game studios that solely focus on creating games or experiences with said technologies. Moreover, this number will keep increasing as long as time goes.
Knowing how to program video games with new technologies like VR or AR will surely be beneficial for you. Unless they somehow become irrelevant which likely is not happening anytime soon. There is however, quite the disadvantageous feat if you are willing to achieve this.
You need to own said technology and right now VR and AR are not exactly cheap. In the future when this technology is more refined. It will become more accessible for everyone so their prices will drop. If you are in a favorable economy position, sure go for it and enjoy the experience.
Get language certificates
As the final and closing tip of this blog post, we have getting language certificates. Proving that you have a certain language level will help you not just in job searching but your life overall. It does not matter whatever the language it is, try to get a certificate that demonstrates it. This does not exclude native languages because having a native level simply means that you have average knowledge about them.
Also, if you are planning to become one of the very best video game programmers in the world. You might need to move to other countries and learn new languages. If this is the case, remember what was mentioned in the Specialization versus Generalization. Learning a language takes time so start as soon as possible. The younger you are, the easier is for your brain to retain knowledge.