How is a Ninja programmer defined? If it is just an experienced developer, then is there really no better way to describe that? Ninja sounds like a childish marketing ploy designed to attract developers with delusions of self-grandeur. Or am I missing something? In particular I want to know what qualities of a Ninja are desired in programmers that makes the comparison valid (besides the coolness factor)?

I did find this article which makes some good comparisons between Ninja characteristics and Agile development. However, I would like to hear from people who have used the word Ninja for hiring purposes and what their motivation was behind it.

Update: There were several good points raised on both sides of the argument. I've tried to summarize these in my blog post. I've chosen JB's answer as the accepted one because it summarizes all the valid reasons for making the comparison.

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.
If this question can be reworded to fit the rules in the help center, please edit the question.

2

Ninja are experts in martial arts. Good programmers are expert in programming.
–
user2567Dec 2 '10 at 14:30

5

Never been called a Ninja. Guru or Master on the other hand...
–
nooneDec 2 '10 at 14:34

28

This reminds me of the 'Ninja method' when working with pointers: Just throw stars (*) around until it works. ^^
–
gablinDec 2 '10 at 16:01

6 Answers
6

To my mind there are a few parallels between a Ninja and a good programmer:

Hidden weapons/unorthodox style - If you ever saw the G.I. Joe cartoon from the 1980s you may remember the character of Storm Shadow. He had a sword and some throwing stars but with just the right sequences of punches and kicks managed to take apart a tank in an episode. In a similar manner, programmers can get called in to do some work that requires them to pull out weapons you may not have thought they had. This is a kin the "Hacker" point that has been mentioned in a few places.

Honor/respect - Granted that I've seen this more in the Western portrayals of a ninja such as G.I. Joe or Teenage Mutant Ninja Turtles, but there seemed to be this attitude of honoring one's enemy, possibly taken from "Art of War." Good programmers can respect that there may be better ones out there somewhere. Humility is also in this in a sense.

Implied mastery - There may be this assumption that all ninjas are masters and thus have really honed their skills to know how to fight well. Good programmers may have similarly mastered some skills that are quite beneficial in getting the job done.

Those are the few beyond the superficial, "Oh that sounds cool," implications as there had to be some meat for it to stick. While I'd agree that Samurai may be the more correct title, once things have been out for a while in an incorrect form one has to reconcile things here as the TMNT aren't really what most would consider as covert mercenaries that is what Ninjas technically are. However, for those of us that grew up with cartoon depictions of Ninjas in this positive light this is what may stick for us and so there is also an element of nostalgia here too.

It's pretty much as you say - an attempt to imply coolness and eliteness (frequently among those who are neither) by making highly tenuous comparisons.

Personally I hate the phrase (along with "Rockstar Programmer" which makes we want to batter people to death - you can be a rockstar programmer when you've got a drug habit an alcohol problem and have trashed at least one car and one hotel room).

You're a programmer, if you have issues with being a programmer because you want to do something you think is cooler then deal with them (or quit to do something you think is cooler). If you don't like the way others view programmers then understand that's their issue not yours.

You're certainly not going to change their minds with phrases that would make the average 12 year old think you were trying a bit hard to be impressive.

@Larry - Most of the comparisons could equally be applied to really good professionals in other fields but you don't get ninja lawyers, ninja doctors or ninja accounts receivable staff (except maybe Herbert Kornfeld). Isn't the interesting question why programmers feel the need to do this?
–
Jon HopkinsDec 2 '10 at 15:09

7

@Jom Hopkins, the NHS in the UK is full of ninja doctors... you certainly never see them.
–
Kevin DDec 2 '10 at 15:17

@Jon Hopkins: Programming culture encourages subculture-level bonding and humour. Many programmers view ninjas as cool and want to be cool and so being called a ninja is pretty awesome. Naturally, this doesn't apply across the board and there are programmers who hate that sort of thing. It depends on the person. But in general, programming evolved to become a mainstream profession like doctor, lawyer, etc. and brought with it subculture references (rockstars, ninjas, etc.)
–
Anna Lear♦Dec 2 '10 at 16:22

2

@Anna Lear, if this is supposed to be an essential part of "programming culture", I want nothing to do with such "culture". The deepest bonding I've ever experienced with other developers was based on ability and merit.
–
jonathanconwayFeb 25 '11 at 7:08

1. It depends on the martial art. Are you sure they avoid wasted motion in kung fu or capoeira? 2. You can be a ninja and/or a programmer and being very bad at it. That said, I appreciate your answer anyway ;) +1
–
user2567Dec 2 '10 at 15:18

@Pierre: thanks. My answer could use some fine-tuning, but I wanted to put something out there to help demonstrate that the question was valid. As you can see, there's already one vote to close.
–
Larry ColemanDec 2 '10 at 15:21

In my understanding, not every good or excellent programmer is a Ninja. Ninjas are a special breed. A Ninja programmer is the one who appears at unusual times (e.g. 3 a.m.), does some hazardous stuff that normal people are reluctant to (like using a hex-editor to fix a highly critical bug in a decade-old, allegedly unmaintainable program directly on the production server) and vanishes unseen.

Obviously, though a Ninja needs excellent technical skills to pull off such stunts regulary and survive, many excellent programmers do not at all fit into that description. With proper methods in place, there is no need for the Ninja. On the other hand, if the impossible happens, it's a good thing to have one.

In addition to the "Coolness" and "Elite" factors, ninjas are often stealthy and are known to do things like sneak past security to get into places they shouldn't. Because this trait is shared by Hackers, I think someone thought that "Ninja" would be a good title for them. To a non-IT person, Hackers and Programmers are the same thing, and they think the word "ninja" is very cool, so it kind of stuck

So the logic is:

Ninja = Stealthy Person Who Can Sneak Past Security Into Places They Shouldn't Be

Stealthy Person Who Can Sneak Past Security Into Places They Shouldn't Be = Hacker

I'm going to go counter to popular sentiment here. I think there is a lot of romanticizing taking place and over stretching to make the connection between ninjas and engineers. I would keep it simple as ninjas get in, do the job, and get out usually without being detected. The only leap I would make is that in the subculture you can hear jokes about Chuck Norris versus ninjas and obviously every programmer wants to be Chuck Norris or Jack Bauer, but there is only one Chuck Norris and Jack Bauer so we can each be a (anonymous) ninja.

Secondly, ninja is a term used frequently in WoW and can have negative connotations. In addition, the traditional ninja is not honorable in comparison to samurai. So with all the admirable qualities of a samurai, you would think we would see "samurai programmer" more often if it were the case that it's the outward perceived qualities that is being praised. This is why I subscribe to the idea that the use of ninja is more to emphasize the mysterious, cloak and dagger, sneaky skills. To spin it more positively, these are the stock skills in the spy trade; rogues, intelligence, and secret agents inclusive.