Code Monkeys vs. Code Ninjas
Software programmer Sara Chipps (yay! a woman!) has written an article titled Natural Programmers (Code Monkeys) vs. Career Programmers (Geeks in Suits). It’s probably the best non-techie explanation of the behaviors, habits, and beliefs of the “natural programmer” that I’ve read — and yes, I completely identified with much of what she wrote.
However, I have to take a step back and address an issue that I have with the two types of programmers she defines and the names she assigns to them.
First there’s the “career programmer (geek in a suit)”. These days I find that career programmers are not geeks, and they’re definitely not in suits (always business casual!). I’ve found that they’re in programming for the money; they learn enough to do their work — perhaps well, maybe even to get to the point of being perceived as geeky. But I also find that these people lack a true passion for the craft of writing code. Sara suggests that the career programmer is more of a business person, concerned with cost effective solutions, but I’m not even sure that’s true anymore. To me, this person’s work is just a job, and if flipping burgers paid as much as programming, they might be doing that instead.
Like Sara, I fall into her other category of “natural programmer”. But I am certainly not a code monkey — I am a code ninja! (Actually, with a nickname like “Obi-Wan Kimberly”, I’m probably a code jedi, but anyway…) I find the term “code monkey” to apply more to the previous category of programmer. Why? “Code monkey” implies that anyone can do what we do and that we work for bananas. “Code ninja”, on the other hand, says that we’re stealth and secretive, jumping out of the darkness when you least expect it. Our code takes you by surprise in its brilliance and our swiftness of execution is legendary. We could do no other job because we have trained for so long, perfecting our natural talent, and nothing else can satisfy our need for control over the systems we affect.
Sara closes her article with some OR logic about which type to hire, however I need to propose a more detailed and different solution. If you have only one programmer working for you, you probably don’t want either of these types — you need someone who really does fall into the gray area between the two extremes. (Yes, they are out there!) And if you have a team of programmers, you need a mix of these two types, and you need to put effort into getting them to communicate effectively with one another. Only then will you have both a killer team and killer code.