Programming Portfolio

Started by
2 comments, last by RinseWashRepeat 10 years, 10 months ago

Hi there GameDev!

I'm looking at moving out of the education sector and, you may already have guessed it, want to work in the games industry. I'm primarily a programmer, with most of my experience in Flash although I've dabbled in plenty of other languages (mainly Java and C++).

What I'd like some advice on is getting a portfolio together. I've chucked a couple of example games that I need to polish up on my site (www.rinsewashrepeat.co.uk) but I'm looking at how to present source code and ideas for what else people would want in an online portfolio.

I plan on going through my existing examples and tidying them up, but I'm wondering what it is that people would want to see in my code. I gather reusable and sensible functions and classes is a must, but what about commenting? How far do I go with commenting? Should I imagine that someone has taken over my game and needs to know what each var and function does?

With presenting my source code, what's the best way to go about doing this? Should I throw up the original files or paste them into a Word document first?

Also, what should I do for my next demo piece? I've got a couple of games that I'm working on, but would something more focused be beneficial? An example of shaders I've created, some physics demos? What would give me the edge in getting out of education and into the games world?

Any advice or links would be greatly appreciated, so thanks in advance!

Advertisement
[Full disclosure: I'm a hiring manager for my company. This is my personal opinion and may not reflect the industry at large, but it should hopefully give you a solid starting point.]


There are four things I typically look for when evaluating a portfolio:
  • Depth. Show me that you can engineer and implement a relatively non-trivial system by yourself.
  • Completeness. Demonstrate that you understand edge cases and have thought about how to handle them. Don't leave things unfinished or as "TO DO" comments, etc.
  • Cleanliness. Use consistent formatting, naming conventions, and commenting. I should be able to pick any random file in your code and feel like it's well-written.
  • Clarity. Self-documenting code is a good start, but document things that I may not know about or realize as a random newcomer to your code.
There are a few other bonuses that will make me much more likely to actually look at your code in depth:
  • I should be able to compile and run your code with minimal effort. I will not use precompiled binaries because of the risk of malware, but if I should definitely be able to open your project and run it without downloading external libraries, resolving dependencies, cleaning up hard-coded paths, etc. etc.
  • Orientation documents are gold. Don't assume that your shiny project has obvious worth to anyone else; explain what it's for, what it's good at, what it may not be good at, and why you wrote it. Tell me what to look at to get my bearings and figure out how to explore your code. I want to understand your thought processes as a potential coworker, not reverse engineer a ball of mud.
  • Version control is always a plus. Show me not just your current code but its complete revision history. Watching your development process over time is almost more valuable than seeing your best-effort work in a polished state.
In general, tiny snippets are less impressive. I'm much more drawn to completed projects that show off an ability to follow through and think out a large scale software system from start to finish.

Once you have some good large projects done (and by "large" I mean at least several thousand lines of code, but not necessarily like a shippable AAA game or anything huge) feel free to show off your other skills with small snippets. But if all you can demonstrate is an ability to write ten-line utility functions, I'm gonna pass ;-)

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]

In general, tiny snippets are less impressive. I'm much more drawn to completed projects that show off an ability to follow through and think out a large scale software system from start to finish.


Once you have some good large projects done (and by "large" I mean at least several thousand lines of code, but not necessarily like a shippable AAA game or anything huge) feel free to show off your other skills with small snippets.

When applying for a programming position, how important is it to have a source code of such a large project available? I have several completed and released non-AAA sized games I can point at and say "I did that on my own/in a team", but either the source is not something I can give out, or the project is very old and not representing my current abilities (you can read that as the code not being pretty, I can do much better now, but for the more current projects I don't have the authority to show the source around).

Would just pointing at complete games, without having the source for them available, be enough in a programmer's portfolio (maybe in addition to code snippets as opposed to large project sources) to land a job? I've also been wondering, how much worth such a portfolio would be when applying for a programming job outside of game development?

Thanks for the feedback.

I think I need to spend some time on my documentation skills, as at the moment I've not really got anything that explains my thought process at all.

This topic is closed to new replies.

Advertisement