Personal Projects as a Programmer for Hire
Sometimes the greatest thing about being a programmer for hire is you have virtually unlimited access to a very useful class of service provider.
The employee discount is pretty nice, too.
The notion that software is eating the world is fast becoming a commonplace quotation and is well on it’s way to Cliché Town.
Correspondingly, it’s not that hard to think up any number of sexy and interesting (if not downright useful and/or profitable) projects that might be pursued. This holds doubly true for those of us well immersed in the craft: we dabble in this stuff all the time, seeing countless examples of what the other smart monkeys are dreaming up this week which affords limitless opportunities for ideas to cross-pollinate.
If you love the programming craft, I think personal projects are pretty natural to pursue, bounded primarily by bandwidth1. Conversely if you’re only in it for a paycheck, personal projects are never going to be a priority because when free time comes about, well, fuck this programming stuff–I’m on break.
One of the highly instructive things about doing a personal project is that it allows a programmer to experience being completely at the source of a project. By that I mean: completely in tune with the purpose and vision of why do the project at all, and thus able to effectively navigate the countless micro-decisions about how to create a fits-like-a-glove solution. It is the complete absence of a Creator/User Gap, and, put into crude terms: it’s a matter of being keenly aware of when something sucks and when it is great.
Why is this instructive? Because one of the key ways for a programmer for hire to be fantastic is to fully own whatever vision and purpose of the project they are hired for. If you do, and then you create something you think is great, your client will likely agree. Dabbling in personal projects gives you the experience of fully owning the vision, and cultivates your ability to do that with other people’s projects.
It’s also a unique opportunity to create and showcase something that you’re really proud of. Assuming you can muster the whole “doing a substantial chunk of work without a tidy paycheck as reward”, a personal project can be the shining beacon of your ability, with nothing external to detract from it. Often as servants to the vision of others, our proud work is sometimes blended into projects based on problems which are uninteresting, design which is unflattering, or direction which is lackluster.
By contrast, a personal project need not be compromised any such excuse. It’s the ultimate act of putting your money where your mouth is insomuch as “Well, if it were up to me…” speak is concerned: it’s all up to you.
All of these properties of personal projects suggest they’re a really good predictor of talent that is worth hiring. Though this approach may suffer from the occasional false negative (even the greats now and again bang out quick-and-dirty personal projects don’t necessarily impress), a false positive probably never does: you’ll probably never find someone with a great personal project who also turns out to be rubbish.
There’s something great about the notion of personal projects serving as resume pieces: as far as credentials go, they have a much stronger connection to reality than more abstract indicators like, say, certifications or a 4-year degree. I don’t mean to imply some need to create personal projects as yet another barrier to entry of the field, but when trying to discern talent they make a really nice basis on which to differentiate.
Note:
- To be clear, I’m not saying that this is not a trivial bounding by any means: some months the time for personal projects feels strictly like a luxury. I would never take the absence of personal projects to imply the absence of love of programming. The presence of personal projects, however, I take always to be an indication of that love. ↩
Next: Advice to a CS Grad: Ego vs. Pride in Programming
This is Programmer for Hire, a series of essays and explorations on the art of being a great programmer doing on-demand custom software development.
So, how do you go about deciding if a personal project is great or not?
I make small projects like 2D games and some robotics apps when I have the time, but am not sure if it’s useful to get hired? I mean, most of the jobs I held (and currently hold) are for web development.