Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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.

share|improve this question

closed as primarily opinion-based by Martijn Pieters, gbjbaanb, Bart van Ingen Schenau, amon, Dan Pichelman May 9 at 13:18

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. –  user2567 Dec 2 '10 at 14:30
5  
Never been called a Ninja. Guru or Master on the other hand... –  noone Dec 2 '10 at 14:34
26  
This reminds me of the 'Ninja method' when working with pointers: Just throw stars (*) around until it works. ^^ –  gablin Dec 2 '10 at 16:01
6  
The correct term is "killer coding ninja monkey guru handsome hero sexmachine." –  Maxpm Dec 16 '10 at 4:51
2  
@maxpm, hopefully the "sexmachine" label is not relevant while programming? –  user1249 Feb 20 '11 at 0:28
show 9 more comments

6 Answers

up vote 20 down vote accepted

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.

share|improve this answer
11  
What about dark clothing and not talking much? :-P –  JBRWilkinson Dec 7 '10 at 0:01
    
Ssshhh... stealth is among those hidden weapons. :) –  JB King Dec 7 '10 at 0:10
3  
"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..." –  Timothy Baldridge Feb 23 '11 at 15:59
    
You are thinking of samurai. Ninjas are just bloody killers. No honor with ninjas. –  BЈовић May 9 at 7:50
    
Ever see "Teenage Mutant Ninja Turtles" in either cartoon or movie form? –  JB King May 9 at 17:41
add comment

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.

share|improve this answer
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 Dec 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 Coleman Dec 2 '10 at 15:21
add comment

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

share|improve this answer
3  
@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 Hopkins Dec 2 '10 at 15:09
6  
@Jom Hopkins, the NHS in the UK is full of ninja doctors... you certainly never see them. –  Kevin D Dec 2 '10 at 15:17
1  
@Kevin D - I do, I'm married to one... #soofftopicitsnottrue –  Jon Hopkins Dec 2 '10 at 15:18
5  
@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. –  jonathanconway Feb 25 '11 at 7:08
show 5 more comments

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

share|improve this answer
    
Another theorem proven through the commutative property of dubious comparisons! –  qualidafial Dec 16 '10 at 20:22
    
@qualidafial, I'm pretty sure you mean transitive. –  dan_waterworth Feb 26 '12 at 17:26
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
    
+1 "get in, do the job, and get out" –  Nick T Dec 16 '10 at 19:06
add comment

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