Programmers, build a portfolio!

July 13, 2013

I have been interviewing a number of programmers lately. Based on it, there is one piece of advice I would give to every programmer out there:

Build a portfolio!

Resumes and interviews are only useful to find reasons not hire you, though my impressions from a page of bullet points or an hour of interrogation aren't something I care to rely on. A portfolio gives reasons to hire you.

Now, because of our hiring practices today, you do need a resume, but the second thing on it, after your name, should be the URL to your portfolio. This is true not only of programmers, but of artists, architects, dancers, and musicians. A scientist's list of publications is her portfolio. In a sensible world, all engineers would be submitting portfolios, but for irrational and purely historical reasons they don't. Programmers inherited that tendency, but over the past few years the field has started to switch to portfolios.

So how do you make a portfolio? Program! Later you might consider writing about programming as well, but it is programming that makes you a programmer, just as it is writing that makes you a writer. But here are some more specific steps:

  1. Open a GitHub account and learn to use git. It's not only a tool that will change the way you work drastically for the better, it gives everyone else confidence that you did what you said you did. GitHub is, by accident, a programmer's portfolio site.
  2. Start doing side projects. They needn't be large. Adjust your work habits so that what you produce is ready to show to the world, with adequate documentation and infrastructure.

What should you choose for side projects? Automate something that bugs you. Write a toy implementation of something. Write a plug-in for your favorite game or text editor. Write an interpreter for a very basic Lisp or implement a cryptographic algorithm that interests you. Half an hour with a piece of paper should generate a plethora of such ideas.

Then grab an idea and take some time to work on it. Commit regularly to your git repository so others can see how you went about the work (and so you can undo small bits of work that turn out to be bad ideas). This is not a place for all night hacking sessions unless you love them. A couple hours a week will, in a matter of months, build you a respectable portfolio that accurately reflects your abilities.

Did you enjoy that? Try one of my books:
Nonfiction Fiction
Into the Sciences Monologue: A Comedy of Telepathy