All that glitters
Programmer Productivity & Hiring

It all started in 2005.  I had just joined Eliot Horowitz (now of 10gen/MongoDB) and Dwight Merriman at ShopWiki’s new closet-sized office in SOS in NYC (funnily, I write this post from GameChanger’s digs a couple of hallways down: same floor, better light).  Eliot had been hacking for 6 months in Starbucks and his apartment (with an XServe on the coffee table, back in that brief window when they were both awesome and economical), and it was time to build more of an engineering team.

Eliot is as much a math guy as a programmer, and he wanted to lay out the formula for hiring the ideal programmer.  Literally, like, in equation-form.  So he first wrote the following on our whiteboard:

L

T

Eliot was most interested in pure productivity, but I immediately wondered about how quality fit in here.  He agreed, and quickly changed the formula to:

L
—-
T*B3

Bugs are really really really bad, he opined.  Like, exponential bad.  Why?  One bug, and it’s pretty obvious what’s wrong.  Two bugs, and they might interact, so it becomes quite a bit more difficult (and time-consuming) to track them down & squash them.  Three bugs or more (in one code module), and it quickly becomes totally non-obvious what’s wrong with your code.

Great, I say, but this is a recipe for short-term productivity only, isn’t it?  Where’s maintainability?  After some discussion, the equation becomes:

L*M2
——
T*B3

Now we had something we liked, and we wrote it on the top corner of our whiteboard in permanent marker.  (Ironically, you might notice that L/T, speed, is now just a multiplier on quality).  It lived on ShopWiki’s whiteboards for my entire tenure there, and I later took that same equation and another permanent marker and wrote in on a whiteboard at Conductor during my stint as engineering director.

But in our new GameChanger offices, after scrawling it again (this time in dry-erase), I’ve erased it.  I’ve come to think that while productivity is at the core of what programmers do, that Pragmatism, Communication, and Culture are equally important.  I still tell every engineer I hire about this equation, and it’s been a great tool for making discussions of individual productivity sufficiently geeky and abstract to ease them a lot.

And while I’m on the topic, we’re hiring (Python/Obj-C, pragmatic, nice people). :)

Thoughts?  Hit me in the comments.  Resumes?  jobs@gamechanger.io

  1. aurum posted this
blog comments powered by Disqus
blog comments powered by Disqus