Comment définit-on un programmeur Ninja? S'il ne s'agit que d'un développeur expérimenté, n'y a-t-il vraiment pas de meilleure façon de décrire cela? Ninja ressemble à un stratagème marketing enfantin conçu pour attirer les développeurs avec des illusions de grandeur de soi. Ou est-ce que je manque quelque chose? En particulier, je veux savoir quelles qualités d'un Ninja sont souhaitées chez les programmeurs qui rendent la comparaison valide (en plus du facteur de fraîcheur)?
J'ai trouvé cet article qui fait de bonnes comparaisons entre les caractéristiques Ninja et le développement Agile. Cependant, j'aimerais entendre des personnes qui ont utilisé Word Ninja à des fins d'embauche et quelle était leur motivation derrière.
Mise à jour: Plusieurs bons points ont été soulevés des deux côtés de l'argument. J'ai essayé de les résumer dans mon article de blog . J'ai choisi la réponse de JB comme acceptée car elle résume toutes les raisons valables pour faire la comparaison.
À mon avis, il existe quelques parallèles entre un Ninja et un bon programmeur:
Armes cachées/style peu orthodoxe - Si vous avez déjà vu le G.I. Caricature de Joe des années 1980, vous vous souvenez peut-être du personnage de Storm Shadow . Il avait une épée et des étoiles lanceuses, mais avec juste les bonnes séquences de coups de poing et de pieds, il a réussi à démonter un tank dans un épisode. De la même manière, les programmeurs peuvent être appelés à faire un travail qui les oblige à retirer des armes que vous ne pensiez peut-être pas avoir. Il s'agit d'un parent du point "Hacker" qui a été mentionné à quelques endroits.
Honneur/respect - Accordé que j'ai vu cela plus dans les représentations occidentales d'un ninja tel que G.I. Joe ou Teenage Mutant Ninja Turtles, mais il semblait y avoir cette attitude d'honorer son ennemi, peut-être tirée de "Art of War". Les bons programmeurs peuvent respecter le fait qu'il peut y en avoir de meilleurs quelque part. L'humilité est aussi dans ce sens dans un sens.
Maîtrise implicite - Il peut y avoir cette hypothèse que tous les ninjas sont des maîtres et ont donc vraiment perfectionné leurs compétences pour savoir comment bien se battre. Les bons programmeurs peuvent également maîtriser certaines compétences qui sont très utiles pour faire le travail.
Ce sont les quelques-unes au-delà des implications superficielles, "Oh ça sonne cool", car il devait y avoir de la viande pour que ça colle. Bien que je convienne que Samurai est peut-être le titre le plus correct, une fois que les choses ont disparu pendant un certain temps sous une forme incorrecte, il faut réconcilier les choses ici, car le TMNT n'est pas vraiment ce que la plupart considéreraient comme des mercenaires secrets, c'est ce que Ninjas sont techniquement. Cependant, pour ceux d'entre nous qui ont grandi avec des représentations de dessins animés de Ninjas dans cette lumière positive, c'est ce qui peut rester pour nous et il y a donc aussi un élément de nostalgie ici.
C'est à peu près comme vous le dites - une tentative d'impliquer la fraîcheur et l'élite (souvent parmi ceux qui ne sont ni l'un ni l'autre) en faisant des comparaisons très ténues.
Personnellement, je déteste l'expression (ainsi que "Rockstar Programmer" qui donne envie de battre des gens à mort - vous pouvez être un programmeur rockstar lorsque vous avez une habitude de drogue un problème d'alcool et que vous avez saccagé au moins une voiture et une chambre d'hôtel ).
Vous êtes programmeur, si vous avez des problèmes avec le fait d'être programmeur parce que vous voulez faire quelque chose que vous pensez être plus cool, alors traitez-les (ou quittez pour faire quelque chose que vous pensez être plus cool). Si vous n'aimez pas la façon dont les autres voient les programmeurs, comprenez que c'est leur problème et non le vôtre.
Vous n'allez certainement pas changer d'avis avec des phrases qui inciteraient le jeune moyen de 12 ans à penser que vous tentiez un peu d'être impressionnant.
/ diatribe
Edit: Pour être clair, la diatribe n'est pas dirigée vers le questionneur ...
Un concept que les experts en arts martiaux et les bons programmeurs ont en commun est cette économie d'effort. Les experts en arts martiaux évitent les mouvements inutiles; les bons programmeurs évitent le code inutile.
Le concept d'invisibilité se traduit par la transparence dans l'écriture de bibliothèque. Une bonne bibliothèque possède une interface intuitive, et vous pouvez la brancher et ne pas vous en soucier.
EDIT: J'ai oublié la chose la plus importante: les ninjas et les bons programmeurs sont hautement qualifiés grâce à la formation et à la pratique.
À ma connaissance, tous les bons ou excellents programmeurs ne sont pas des Ninja. Les ninjas sont une race spéciale. Un programmeur Ninja est celui qui apparaît à des moments inhabituels (par exemple 3 heures du matin), fait des choses dangereuses auxquelles les gens normaux sont réticents (comme utiliser un éditeur hexadécimal pour corriger un bogue très critique dans un programme vieux de dix ans, prétendument impossible à gérer directement) sur le serveur de production) et disparaît invisible.
De toute évidence, bien qu'un Ninja ait besoin d'excellentes compétences techniques pour réussir régulièrement de telles cascades et survivre, de nombreux excellents programmeurs ne correspondent pas du tout à cette description. Avec des méthodes appropriées en place, il n'est pas nécessaire pour le Ninja. D'un autre côté, si l'impossible se produit, c'est une bonne chose d'en avoir un.
En plus des facteurs "Coolness" et "Elite", les ninjas sont souvent furtifs et sont connus pour faire des choses comme se faufiler au-delà de la sécurité pour entrer dans des endroits où ils ne devraient pas. Parce que ce trait est partagé par les hackers, je pense que quelqu'un pensait que "Ninja" serait un bon titre pour eux. Pour un non-informaticien, les hackers et les programmeurs sont la même chose, et ils pensent que le mot "ninja" est très cool, donc il est un peu coincé
La logique est donc:
Ninja = personne furtive qui peut se faufiler derrière la sécurité dans des endroits où elle ne devrait pas être
Personne furtive qui peut se faufiler derrière la sécurité dans des endroits où elle ne devrait pas être = pirate
Hacker = Programmeur
Par conséquent, Ninja = programmeur
Je vais aller à l'encontre du sentiment populaire ici. Je pense qu'il y a beaucoup de romantisme en cours et d'étirements pour faire le lien entre les ninjas et les ingénieurs. Je resterais simple: les ninjas entrent, font le travail et sortent généralement sans être détectés. Le seul bond que je ferais est que dans la sous-culture, vous pouvez entendre des blagues sur Chuck Norris contre les ninjas et, évidemment, chaque programmeur veut être Chuck Norris ou Jack Bauer, mais il n'y a qu'un seul Chuck Norris et Jack Bauer afin que nous puissions chacun être un ( anonyme) ninja.
Deuxièmement, ninja est un terme fréquemment utilisé dans WoW et peut avoir des connotations négatives. De plus, le ninja traditionnel n'est pas honorable par rapport aux samouraïs. Donc, avec toutes les qualités admirables d'un samouraï, on pourrait penser que nous verrions plus souvent "programmeur de samouraïs" s'il était vrai que ce sont les qualités perçues vers l'extérieur qui sont louées. C'est pourquoi je souscris à l'idée que l'utilisation de ninja est davantage pour souligner les compétences mystérieuses, cape et poignard, sournoises. Pour tourner plus positivement, ce sont les compétences en stock dans le commerce d'espionnage; voyous, renseignement et agents secrets inclus.