O que é um Desenvolvedor Ninja?

 

*Artigo traduzido do espanhol por Marua Salemi. Clique aqui para acessar o original. 

Os ninjas ou Shinobi (em japonês) eram um grupo militar do Japão, especialmente treinados em formas não tradicionais de fazer a arte da guerra. Hoje adotamos esse termo ancestral para aplicá-lo a um tipo específico de desenvolvedores de software: Ninja Developer.

Antes de falar sobre o que é um desenvolvedor Ninja, é necessário abordar certos conceitos.

Stack Tecnológico

É uma pilha ou um conjunto de tecnologias que, na maioria dos projetos, trabalham em conjunto para resolver um determinado problema. Essa Stack geralmente é composto de linguagens e/ou estruturas que atuam em diferentes camadas do aplicativo:

  • Front end
  • Back end
  • Base de dados
  • Sistema operacional

Como exemplos de Stacks podemos encontrar: LAMP (Linux, Apache, MySql, PHP), LEMP (Linux, Nginx, MySql, PHP), MEAN (Mongo, Express, Angular, Node), ELK (ElasticSearch, Logstash, Kibana), etc.

Programadores Full Stack

Basicamente, é um desenvolvedor que lida com algum dos Stacks tecnológicos conhecidos, assim que pode programar em qualquer uma das camadas de aplicação com as tecnologias que se aplicam ao Stack. Se quiser saber mais sobre este perfil, eu recomendo que você leia este post sobre os aspectos fundamentais que um desenvolvedor Fulls Tack deve saber.

O faz esse desenvolvedor para merecer o título de "Ninja"?

O Ninja Developer não está limitado a uma única linguagem ou a apenas um stack tecnológico, ele é o poliglota de desenvolvedores.

O Ninja sempre tem um idioma base, que possui um domínio avançado, mas se sente confortável usando qualquer um. Por sua vez, compreende e aproveita as estruturas para poder usar o conjunto que você considera necessário para o problema que deseja resolver.

Nós dissemos que os desenvolvedores do Ninja são poliglotas. Isso ocorre porque eles gerenciam efetivamente linguagens funcionais, como Lisp, Haskell, Scala ou Clojure, enquanto dominam outras linguagens, como as estáticas, entre as quais encontramos JAVA, Groovy, C ++.

Linguagens dinâmicas como JavaScript, Ruby, Python e PHP são usadas por esses tipos de desenvolvedores com praticamente o mesmo nível de habilidade que os mencionados acima. O mesmo vale para idiomas para desenvolvimento móvel (Android, Swift ou Objective-c), linguagens para desenvolvimento de jogos como Lua (c), linguagens assíncronas como Nodejs e aquelas usadas para estatísticas como R (amplamente usado com BigData ).

Com relação à persistência de dados, ela se alterna de forma intercambiável em bancos de dados relacionais, como NO-SQL (MongoDB, Cassandra, New SQL, etc.). Além disso, ele sabe como escolher a melhor tecnologia para o problema que precisa resolver.

Ninja Developer é uma maneira de se referir a um programador avançado e, portanto, muito desejável aos olhos do mercado de trabalho.

Ninja Developer no mundo do trabalho

É comum as empresas quererem incorporar os melhores profissionais em suas equipes, com o mínimo de dinheiro possível, mas devemos ter em mente que esse tipo de conhecimento não é trivial.

Embora se entenda que o Ninja Developer possui mais conhecimento do que especialização neles, devemos entender que a aquisição de conhecimento em todas essas questões exige muitos anos de prática. Sendo assim, não existe Ninja Developer Junior/Semi Sr.

Atualmente, os alunos concluem suas carreiras de ciência da computação ou engenharia de computação sem o conhecimento desses assuntos. Para que um aluno possa candidatar-se a um cargo de Desenvolvedor Ninja, é necessário ter 4 anos de estudos universitários e um mínimo de 5 a 10 de prática.

Um Desenvolvedor Ninja pode ser definido como um desenvolvedor Full Stack que pode ser programado em vários Stacks tecnológicos. É um perfil cada vez mais demandado e muito bem pago.

Se você é um desenvolvedor e ainda tem uma longa jornada para chegar a ser um Desenvolvedor Ninja, não se preocupe, ocupe-se!

Isso não é aprendido na faculdade e é bom que seja assim. A universidade é um gatilho. Ensina a pensar e aprender.

Hoje você pode saber tudo, mas em dois anos esse conhecimento será obsoleto. Na nossa profissão, devemos estar sempre atualizados porque somos eternos aprendizes.

Queremos saber a sua opinião. Conte-nos nos comentários!