¿Qué es un Ninja Developer?


Por Damián Wajser, Technical Team Lead Softtek


Los Ninjas o Shinobi (en japonés) fueron un grupo militar de Japón, entrenados especialmente de maneras no tradicionales para hacer el arte de la guerra. Hoy adoptamos este término ancestral para aplicarlo a un tipo particular de desarrolladores de software: Ninja Developer.

Que-es-un-Ninja-Developer.png

Previamente a hablar de qué es un Ninja Developer, es necesario describir ciertos conceptos.

Stack Tecnológico

Es una pila o conjunto de tecnologías que en la mayoría de los proyectos trabajan de forma conjunta para resolver una determinada problemática. Este Stack normalmente está conformado por lenguajes y/o Frameworks que actúan en diferentes capas de la aplicación:

  • Front-End
  • Back-End
  • Base de Datos
  • Sistema Operativo

Como ejemplos 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

Básicamente es un desarrollador que maneja alguno de los stacks tecnológicos conocidos, por lo cual puede programar en cualquiera de las capas de la aplicación con las tecnologías que aplican a su stack. Si quieres conocer más sobre este perfil, te recomiendo leer este post sobre los aspectos fundamentales que debería conocer un Fulls Tack Developer.


¿Qué hace que este tipo de desarrollador sea merecedor del título "Ninja"

El Ninja Developer no se limita a un solo lenguaje ni a un solo stack tecnológico, es el políglota de los desarrolladores.

El Ninja siempre tiene un lenguaje base, del cual tiene un dominio avanzado pero se siente cómodo utilizando cualquiera. A su vez, entiende y aprovecha los frameworks para poder usar el conjunto que considere necesario para la problemática que desea resolver.

Dijimos que los Ninja Developers son políglotas. Esto se debe a que manejan de manera eficaz lenguajes funcionales como Lisp, Haskell, Scala o Clojure al mismo tiempo que dominan otros lenguajes como los estáticos entre los cuales encontramos JAVA, Groovy, C++.

Los lenguajes dinámicos como JavaScript, Ruby, Python y PHP son utilizados por este tipo de desarrolladores con prácticamente el mismo nivel de destreza que los mencionados anteriormente. Lo mismo ocurre con los lenguajes para desarrollos mobile (Android, Swift u Objective-c), lenguajes para el desarrollo de juegos como lo es Lua (c), lenguajes asíncronos como Nodejs y los utilizados para estadísticas como R (de gran uso con BigData).

Con respecto a la persistencia de datos, se mueve indistintamente en base de datos relacionales como NO-SQL (MongoDB, Cassandra, New SQL, etc). Además, sabe elegir la mejor tecnología para el problema que debe resolver.

Ninja Developer es una forma de referirse a un programador avanzado y por lo tanto, muy deseable ante los ojos del mercado laboral.


Ninja Developer en el mundo laboral

Es frecuente que las empresas quieran incorporar a sus equipos los mejores profesionales, por la menor cantidad de dinero posible, pero hay que tener en cuenta que este tipo de conocimientos no es trivial.

Si bien se entiende que el Ninja Developer tiene más amplitud de conocimiento que expertise en los mismos, hay entender que adquirir conocimientos en todos estos temas demora de muchos años de práctica. Así, no existe ni existirá algo así como Ninja Developer Junior/ Semi Sr.

Actualmente, los alumnos finalizan sus carreras de ciencias de la computación o ingeniería informática sin conocimientos de estos temas. Para que un alumno pueda aplicar a un puesto de Ninja Developer, es necesario tener 4 años de estudios universitarios y un mínimo 5 a 10 de práctica.

Un Ninja Developer podría definirse como un desarrollador Full Stack que puede programar en varios Stacks tecnologicos. Se trata de un perfil cada vez más demandado y muy bien remunerado.

Si eres desarrollador y aún te falta mucho por recorrer en el camino de ser un Ninja Developer, no te preocupes, ¡ocúpate!

Esto no se aprende en la universidad y está bien que así sea. La universidad es un disparador. Enseña a pensar y a aprender.

Hoy puedes saber todo pero en dos años este conocimiento será obsoleto. En nuestra profesión hay que estar siempre actualizados porque somos eternos aprendices.

Te invito a dejar tu opinión.

 Vive el Softtek Life! Ver el video