Como é definido um programador Ninja? Se é apenas um desenvolvedor experiente, então não há realmente nenhuma maneira melhor de descrever isso? Ninja parece uma jogada de marketing infantil, criada para atrair desenvolvedores com ilusões de auto-grandeza. Ou eu estou esquecendo de alguma coisa? Em particular, quero saber quais qualidades de um Ninja são desejadas nos programadores que tornam a comparação válida (além do fator de frescura)?
Eu encontrei este artigo que faz algumas boas comparações entre as características do Ninja e o desenvolvimento Agile. No entanto, gostaria de ouvir pessoas que usaram a palavra Ninja para fins de contratação e qual era a motivação deles.
Atualização: Houve vários pontos positivos levantados em ambos os lados do argumento. Eu tentei resumir isso no meu blog . Eu escolhi a resposta de JB como a aceita, porque resume todas as razões válidas para fazer a comparação.
fonte
Respostas:
Na minha opinião, existem alguns paralelos entre um Ninja e um bom programador:
Armas ocultas / estilo pouco ortodoxo - Se você já viu o desenho GI Joe dos anos 80, deve se lembrar do personagem Storm Shadow . Ele tinha uma espada e algumas estrelas, mas com as seqüências certas de socos e pontapés conseguiu desmontar um tanque em um episódio. De maneira semelhante, os programadores podem ser chamados para realizar algum trabalho que exija que eles retirem armas que você pode não ter pensado. Este é o ponto "Hacker" que foi mencionado em alguns lugares.
Honra / respeito - É verdade que eu já vi isso mais nos retratos ocidentais de um ninja como GI Joe ou Teenage Mutant Ninja Turtles, mas parecia haver essa atitude de honrar o inimigo, possivelmente tirada de "Art of War". Bons programadores podem respeitar que pode haver melhores por aí. A humildade também está nesse sentido.
Domínio implícito - pode haver essa suposição de que todos os ninjas são mestres e, portanto, realmente aprimoraram suas habilidades para saber como lutar bem. Bons programadores podem ter dominado de maneira semelhante algumas habilidades que são bastante benéficas na realização do trabalho.
Essas são as poucas que estão além das implicações superficiais de "Oh, isso parece legal", pois era preciso haver um pouco de carne para grudar. Embora eu concorde que Samurai possa ser o título mais correto, uma vez que as coisas saem por um tempo de forma incorreta, é preciso reconciliar as coisas aqui, pois o TMNT não é realmente o que a maioria consideraria mercenários secretos, é isso que Ninjas tecnicamente são. No entanto, para aqueles de nós que crescemos com desenhos animados de Ninjas sob essa luz positiva, é isso que pode nos interessar e, portanto, também há um elemento de nostalgia aqui.
fonte
É praticamente como você diz - uma tentativa de implicar frieza e elegância (freqüentemente entre os que não são), fazendo comparações altamente tênues.
Pessoalmente, eu odeio a frase (junto com "Rockstar Programmer", que faz com que queremos espancar pessoas até a morte - você pode ser um programador rockstar quando tem um hábito de usar drogas e tem um problema com álcool e destruiu pelo menos um carro e um quarto de hotel )
Você é um programador, se tiver problemas em ser um programador porque deseja fazer algo que considera mais interessante, então lide com eles (ou saia para fazer algo que considera mais interessante). Se você não gosta da maneira como os outros veem os programadores, entenda que esse problema não é seu.
Você certamente não vai mudar de idéia com frases que levariam a média de 12 anos a pensar que estava tentando um pouco impressionar.
/ discurso retórico
Edit: Para ser claro, o discurso retórico não visa o interlocutor ...
fonte
Um conceito que especialistas em artes marciais e bons programadores têm em comum é essa economia de esforço. Especialistas em artes marciais evitam desperdício de movimento; bons programadores evitam código desnecessário.
O conceito de invisibilidade se traduz em transparência na escrita da biblioteca. Uma boa biblioteca possui uma interface intuitiva, e você pode conectá-la e não se preocupar com isso.
Edição: Eu esqueci a coisa mais importante: ninjas e bons programadores são altamente qualificados como resultado do treinamento e da prática.
fonte
No meu entendimento, nem todo programador bom ou excelente é um ninja. Ninjas são uma raça especial. Um programador Ninja é aquele que aparece em horários incomuns (por exemplo, 3 horas da manhã), faz algumas coisas perigosas com as quais as pessoas normais relutam (como usar um editor hexadecimal para corrigir um bug altamente crítico em um programa supostamente insustentável de uma década, diretamente no servidor de produção) e desaparece sem ser visto.
Obviamente, embora um Ninja precise de excelentes habilidades técnicas para realizar tais manobras regularmente e sobreviver, muitos programadores excelentes não se encaixam nessa descrição. Com métodos apropriados, não há necessidade do Ninja. Por outro lado, se o impossível acontecer, é bom ter um.
fonte
Além dos fatores "Frieza" e "Elite", os ninjas geralmente são furtivos e são conhecidos por fazer coisas como escapar da segurança para chegar a lugares que não deveriam. Como esse traço é compartilhado pelos hackers, acho que alguém pensou que "Ninja" seria um bom título para eles. Para uma pessoa que não é de TI, hackers e programadores são a mesma coisa, e eles acham que a palavra "ninja" é muito legal, por isso meio que ficou presa
Então a lógica é:
Ninja = Pessoa furtiva que pode esgueirar-se pela segurança passada para lugares onde não deveria estar
Pessoa furtiva que consegue passar pela segurança em lugares que não deveriam estar = Hacker
Hacker = Programador
Portanto, Ninja = Programador
fonte
Vou contra o sentimento popular aqui. Eu acho que há muito romantismo acontecendo e se estendendo demais para fazer a conexão entre ninjas e engenheiros. Eu simplificaria a maneira como os ninjas entram, fazem o trabalho e saem normalmente sem serem detectados . O único salto que eu daria é que na subcultura você pode ouvir piadas sobre Chuck Norris versus ninjas e, obviamente, todo programador quer ser Chuck Norris ou Jack Bauer, mas há apenas um Chuck Norris e Jack Bauer, para que cada um seja ( anônimo) ninja.
Em segundo lugar, ninja é um termo usado com freqüência no WoW e pode ter conotações negativas. Além disso, o ninja tradicional não é honrado em comparação com o samurai. Portanto, com todas as qualidades admiráveis de um samurai, você pensaria que veríamos "programadores de samurais" com mais frequência se fosse o caso das qualidades percebidas externas que estão sendo elogiadas. É por isso que subscrevo a ideia de que o uso de ninja é mais para enfatizar as habilidades misteriosas, de manto e adaga, sorrateiras. Para ser mais positivo, essas são as habilidades de estoque no comércio de espiões; bandidos, inteligência e agentes secretos, inclusive.
fonte