A trend we have noticed lately with studios is the requirement of portfolios from prospective programmers for experienced as well as graduate roles.
While this does mean more work for you, submitting a good portfolio will mean you are far less likely to sit through tests.
So, here is a comprehensive guide on how to build the very best portfolio to advertise your skills and potential.
First let’s set the ground rules.
Rule 1 – Get it online
We now live in a world of overzealous spam filters and email security programs. Attaching your portfolio to an email is just simply too unreliable in the modern world - you might as well send a floppy disc in the mail.
Having a web page where recruiters can not only see your work now but can save as a permanent point of call to chart your progress can prove invaluable. Organising an online portfolio is extremely easy; with many free and simple solutions readily available.
Rule 2 – Keep it simple
We are looking for programming roles, not graphic design roles, so don’t try and make your portfolio too fancy.
It takes up valuable time – time that could be potentially spent coding! Keep it concise, easy to navigate and clear. A simple Wordpress or Github blog will do the trick.
Rule 3 – Your portfolio is only as strong as your weakest piece
We would rather see only one amazing piece of work on its own rather than see it accompanied by work that is not of the same standard.
No matter how amazing parts of your portfolio can be, if there is any mediocre content in it, this will leave a nasty aftertaste for the person reviewing it. This may even raise doubts as to whether you could replicate this amazing work consistently.
To quote Cliffy B: “Become your brand”. Your work is your brand and your portfolio is how you represent that brand.
Why advertise that brand as anything other than amazing? As a result, this will mean that you will need to maintain your portfolio every now and again, removing some of your past work as you progress in the industry.
Rule 4 – Have your own personal projects on the go
This one is for the students and graduates. You are fresh and young with loads of time in your hands, put those wasteful times into good use.
I too was a student studying Games Programming, so I know exactly how much work the lectures give you, and trust me you definitely have the time. Besides the fact that it will improve your programming skills, it will also help you stand-out in the fiercely competitive games industry.
Having your own personal projects demonstrates your true passion for games and technology; as well as demonstrating your willingness to go above and beyond.
I cannot tell you how many portfolios I have seen that look too identical from each other. Strive to be better than the best.
Rule 5 – Wherever possible, show your source code
I understand this isn’t always possible with NDAs and various other legal barriers, but displaying the actual source code of your online portfolio will prove to be beneficial as it will assist with the recruitment process (known to be notoriously slow in the games industry).
Most blog platforms and online storage services will allow you to password protect your work, so displaying the source code shouldn’t cause too much of a problem.
Whilst on the subject of source code, make sure it is well laid out and suitable for an OO development environment, correctly functioning and well commented (anyone can copy and paste code from Google, show us that you know what it actually does).
I cannot tell you how many times I have gone through to compile someone’s work and found it covered with errors.
Rule 6 – Never stop working on it
For those of you actively seeking employment, keeping your portfolio updated will mean your work is the most accurate representation of your abilities.
For those currently employed, updating your portfolio means that should you ever decide to change your situation, you will be ready to go without all the further hassle.
So ask yourself these questions; is the code as efficient as it could be? What else could I make that do? Where can I take this next?
Rule 7 – Keep your work consistent
This is for those of you who will be using blogs for your portfolios. When you are updating your old work, don’t create a new entry every time. Edit your old entries but make sure your work is consistently together, or else your portfolio will appear very messy and hard to follow.
Now that we’ve covered the ground rules, let us move on to Content.
What Languages should I use?
Now this is becoming an increasingly tricky question to answer. Only a few years ago this would have been easily answered with 3 characters, C++.
However with the explosion of social and mobile gaming, you now need to ask yourself; what do you want to work on?
Console Games - This is predominantly the home of C/C++ however this will depend on what route you wish to take. If you were to work on Tools Development, then it is well worth taking a good hard look at C#.
Mobile Development – Once again, still worth learning C/C++ as many tools and engines are based in these languages. However it is also worth looking at C# for the increasingly popular Unity Engine, Objective C (the main language for iPhone Developers) and Java (currently the weapon of choice for most Android developers).
Web Developers – As HTML is the base of the internet, it is obvious that a good understanding of it is required! PHP is also another key language, so once again a must.
If you’re planning to work on Facebook games, then knowledge of ActionScript 3 is most likely required.
What should I show?
Once again this depends on what you want to do.
Gameplay Programmers - Keep it simple and keep it fun. Remember the three core elements of gameplay: Camera, Control and Character (also scientifically known as the three C’s). Show us some Advanced Camera Tracking, intuitive controls and suitable characters who can interact with their surrounding environment.
Another quick note to mention is that it’s always worth adding your design documentation as well, since many studios tend to treat gameplay programmers as designers.
AI Programmers – Your work is vital to any game so you really need to demonstrate your skills with flair here.
The best way to show this is with your own custom algorithms. Ideally, have a playable character roam through the levels without any user interference.
Can the character plot their route through a maze? Can the character defeat enemies or does it need to run and hide? Can you have them solve puzzles along the way?
Graphics Programmers – Ideally, we would want to see your own custom built engine! I once had a graduate student who had his own graphics engine for an Indie project he was involved with, and almost instantly we had five interview requests for him within 24 hours and an offer within two weeks.
However, having seen impressive environments using OpenGL and DirectX - with custom terrains, complex texturing and believable VFX - then you’ll still be in with a very strong position.
Tools Programmers – Once again, ideally I will want to see your own tools pipelines created from scratch, but at the minimum, we will need to see custom plug-ins that could easily be scaled up so that it can be used by a big team on commercial projects.
Network and web backend – Here, security and scalability are king. Can you write matchmaking algorithms that keep several players safe? Will it work if hundreds are playing at any one time? What about thousands?
Web front end and UI – These fields often hold a bad reputation but they really shouldn’t; some of the most talented coders work in these fields. The key thing to remember is that it is now far more advanced than just clicking a button.
UI and HUD are now vital extensions of the gaming experience. Increasingly this is becoming the area of the game where it’s success is determined. Take a look at racing games as these tend to be the best examples.
Mobile Developers – Nothing is better than having completed games out there on the app store. Considering how easy these markets are to enter, there really is very little excuse not to have something functioning on devices.
Physics Programmers – The best examples for you to display are collision detections and reactions, taking into account damage as well movement and projectile modelling.
Once again are these scalable and efficient? It may be working perfectly when two objects are colliding, but what if there are 50? Will it slow the game down?