The following blog post, unless otherwise noted, was written by a member of Gamasutras community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.
It doesn't happen the same way to everyone, but at some point every programmer made the conscious decision to learn how to code. For me, it was wanting to build a game with my husband and since he was an established artist, that meant I needed to learn how to code. Making that descision is only the first step, from there you actually have to well, um, learn to do it. This is one of those articles I wish I could give to my younger self to help understand how to get started, what languages are the right ones for the final product, and how to use all that to maybe make a living.
The best way to find your path (no we aren't talking A* pathfinding here), is to dig deep about why you want to get into programming. Was it your passion for gaming, or your love for a mobile or desktop application? Was it a really cool website, or even a really bad website? Maybe you are interested in how to defeat our robot overlords in the nearing dystopian future. Or maybe you just feel like you understand the logic of how something should work, but no one is creating it the way you want. Depending on which one of these you aligned with most, you can visit the idea of being a back-end developer, a front end developer, a machine learning expert, a web developer, a mobile developer, a game developer….well the list goes on.
In my case, I've traveled the route of game and application developer and I deploy to mobile, desktop and console. While that may sound like a lot of different platforms, there are actually a handful of great engines to choose from, like Unity, Unreal or even a smaller one like Cocos2d-x. Engines will typically allow you to write your code in just one language, then it will compile for your target platforms, doing all the major lifting for you. They also have amazing features built in, so that you do not have to write (for example) your own animation or lighting tools. Along with having the right engine, you'll also want to find a source code editor that works with your engine and that has all the features you need. There is a pretty lengthy list of editors you can find here
, but my two favorite have been Visual Studio
. They both have great intelligent code completion and the (forever useful) syntax highlighting. Again, the ones available to you will depend on the platform you choose.
Tutorials, tutorials, tutorials...
At this point you have the type of project that you want to work on, the engine that will support this, and you've decided on a language and code editor, but what next? Well, now is the time to start learning how to use all of these tools! There are some incredibly useful resources out there to learning the fundamentals of programming, as well as diving deeper in to the languages and tools. From my experience, it is best to buy a book or two and read through some of the tutorials to understand what is going on in each line of code. The next best step (or an alternate first step) is to take an online course. It doesn’t have to be an expensive course at your local University or college, but maybe simply a course from Lynda.com
. These are all websites full of different courses, lead by different instructors that have been in their respective fields, so you will learn a lot and by the end of the course you have a project that you've worked through line by line.
After understanding the fundamentals of the coding language and the engine, but you still run into errors or get stumped on how to do something, then the next best place is reading through the specific documentation relating to your engine or targeted operating system. The documents are out there to help you and it took several people tons of effort to write it, so please at least skim through it. After that, if you are still stumped, then there are so many forums full of willing people that are ready to help you out. The primary forum, and almost everyone's go to is StackOverflow.com
. This site has been around for a long time, so a big chunk of questions that can be asked, have been asked on there. If not on Stackoverflow, then it's possible your engine has a forum with active members and experienced moderators. Taking the effort to write a detailed post goes a long way with people that are active on the forums, so don’t just ask for some one to write your code for you. You will get stumped and you will need help, because, as I said before, this is not an easy field you chose.
Write Something, Deploy It
Now that you feel like you have a basic understanding, you can start writing that program that caught your interest in the field to way back at the beginning of all this. Just kidding! Start with a much, mush smaller subtask or version of that big project that you envisioned from the beginning. If you wanted to make a game, well then make a Arkanoid clone. The point being, you do not want to overwhelm yourself, that will only lead to defeat.
Your first program isn't going to be amazing, or original... it is going to be basic and most likely a clone or something already published. Creating this first project will give you the understanding you need to make the bigger program that you aspired to do in the first place. But go through all the motions with this first one, delpoy it to the platform that you chose, make friends and family test it for bugs and quality, and finally publish it and make it public. All of this will give you the experiences you need to do it better next time when you want to launch something original.
Take small steps and create something that you are proud to put your name to and even more importantly, something that you can show at your interview. Which brings me to the next point of finding a job in the field, after all you want to make a living right?
The Job Prep
The whole job search charade is such a grueling process, and finding the right company to interview at is a process in it's own. There are (once again) several online resources to search for a job, and with this being such a large industry you will likely find several places to interview with. Start with searching sites like Monster, Indeed, Hired, and even Stackoverflow. If that doesn't work out, try joining a local group of other developers like yourself through a site like Meetup.com and search their bulletin board. While doing all of this it is also important to continue working on your portfolio.
Keeping all these small projects to yourself will not be of any use, so create a website that show cases each one and most importantly get on LinkedIn. Do not underestimate the value of LinkedIn, as head hunters are constantly scouring it for talent. Now that you've also gained more experience with these small projects, try to make time to create a Stackoverflow account and start gaining reputation points there by answering the noob questions that get posted all day, every day.
Like I mentioned, the job search is a grueling process and preparing for the interview is just as important as learning the language. The interview will be a three, five or even eight hour long day at your prospective company. They will put you through the ringer. You will code on a whiteboard, complete coding tests, and just talk experiences. Start taking online coding interview test (Codility
is a good resource for this), and make sure you have a basic understanding of the concepts, and know the lingo. You'll go through this process a few times, but you will eventually find a company that fits you and one where you fit in to it's culture.
After all is said and done, you may find that this wasn't what you wanted after all….or you might just absolutely love it, like I do. If the latter is the case, then keep at it and you will find the right position at the right company. The best advice I can offer is that coding/programming/software engineering it isn't easy; but if you love a challenge, you read this whole article and are still in the game, well, then maybe it is the right path for you. Either way, good luck in your newly found hobby! May it consume your time and leave you broke, fat, hairy and living in your parent's dark basement, like most people envision us.