37

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.

15
  • 3
    Ninja are experts in martial arts. Good programmers are expert in programming.
    – user2567
    Commented Dec 2, 2010 at 14:30
  • 5
    Never been called a Ninja. Guru or Master on the other hand...
    – noone
    Commented Dec 2, 2010 at 14:34
  • 42
    This reminds me of the 'Ninja method' when working with pointers: Just throw stars (*) around until it works. ^^
    – gablin
    Commented Dec 2, 2010 at 16:01
  • 10
    The correct term is "killer coding ninja monkey guru handsome hero sexmachine."
    – Maxpm
    Commented Dec 16, 2010 at 4:51
  • 2
    @maxpm, hopefully the "sexmachine" label is not relevant while programming?
    – user1249
    Commented Feb 20, 2011 at 0:28

6 Answers 6

34

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

  1. 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.

  2. 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.

  3. 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.

7
  • 20
    What about dark clothing and not talking much? :-P Commented Dec 7, 2010 at 0:01
  • Ssshhh... stealth is among those hidden weapons. :)
    – JB King
    Commented Dec 7, 2010 at 0:10
  • 4
    "Amongst their weaponry are stealth, hidden weapons, and an almost fanatical devotion to good coding styles....also less talking...bah! I'll come in again..." Commented Feb 23, 2011 at 15:59
  • You are thinking of samurai. Ninjas are just bloody killers. No honor with ninjas. Commented May 9, 2014 at 7:50
  • Ever see "Teenage Mutant Ninja Turtles" in either cartoon or movie form?
    – JB King
    Commented May 9, 2014 at 17:41
42

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.

/rant

Edit: To be clear, the rant is not aimed at the questioner...

11
  • 6
    @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? Commented Dec 2, 2010 at 15:09
  • 9
    @Jom Hopkins, the NHS in the UK is full of ninja doctors... you certainly never see them.
    – Kevin D
    Commented Dec 2, 2010 at 15:17
  • 7
    @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.)
    – Adam Lear
    Commented Dec 2, 2010 at 16:22
  • 3
    @Adam 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. Commented Feb 25, 2011 at 7:08
  • 3
    @Adam - I understand the background, I just find the whole thing a bit teenage and I think it denigrates programmers as serious professionals once we're into our 20s and 30s (and older). I'm not saying that programmers should abandon programmer culture but there's a difference between, say, reading XKCD and Neal Stephenson or spending our weekends learning about cryptography (which may be geeky but are also smart), and this which is just a bit childish and in reality about as far from cool as you can get. Commented Feb 25, 2011 at 9:31
16

One concept that martial arts experts and good programmers have in common is that economy of effort. Martial arts experts avoid wasted motion; good programmers avoid unnecessary code.

The concept of invisibility translates to transparency in library writing. A good library has an intuitive interface, and you can plug it in and not worry about it.

EDIT: I forgot the most important thing: both ninjas and good programmers are highly skilled as a result of training and practice.

2
  • 1
    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
    – user2567
    Commented Dec 2, 2010 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. Commented Dec 2, 2010 at 15:21
16

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.

11

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

Hacker = Programmer

Therefore, Ninja = Programmer

2
  • Another theorem proven through the commutative property of dubious comparisons! Commented Dec 16, 2010 at 20:22
  • 1
    @qualidafial, I'm pretty sure you mean transitive. Commented Feb 26, 2012 at 17:26
3

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.

0

Not the answer you're looking for? Browse other questions tagged or ask your own question.