El programador ninja

El programador ninja

Lluis me pregunta: «Dani, ¿qué es un programador ninja?» Lluís había detectado que numerosas empresas de desarrollo software requieren programadores ninja para participar en sus proyectos. Movido por la curiosidad y después de unas búsquedas en Google, encontré información variopinta y publicaciones interesantes como Ninja Programmer that all the tech companies want to hire? o «Ninja programador: afilando la katana». Sintetizaría toda la información en las siguientes líneas:

  • Es un programador con amplia experiencia en diversos lenguajes de programación (java, php, javascript, c++, python, etc). Su experiencia ha sido adquirida con la práctica.
  • Puede participar en cualquier capa de desarrollo de un sistema: front-end, negocio, base de datos.
  • Fruto de su experiencia también domina diferentes frameworks de programación, patrones de programación, sistemas de bases de datos, conexiones entre sistemas (apis, webservices, etc),sistemas operativos diferentes, Plataforms as a services, microservicios, etc.
  • Tiene herramientas “ocultas” (foros, algoritmos, amigos, libros, artículos, aplicaciones, scripts, procesos batch, etc.) que le permiten solucionar casi cualquier problema dentro de un proyecto de desarrollo de software.
  • Saben usar la herramienta más adecuada en la situación que corresponde.
  • Arriesgan a usar estas herramientas como soluciones a problemas que otro tipo de programador no usaría. (como modificar un fichero mediante un editor hexadecimal en un sistema en producción). Adquieren riesgo.
  • Suelen dar respuesta a horas intempestivas. Cuando la cafeína predomina en su cuerpo.
  • Altamente eficientes, desarrollando en el menor tiempo y coste posible.
Interpreto pues que un programador ninja es requisito indispensable en un proyecto en dos tipos de escenarios:
  1. Que haya una falta de conocimiento en varios aspectos del proyecto y el equipo no sepa, pueda, o tenga tiempo para solucionar.
  2. Que el proyecto requiera de una figura que pueda moverse y desenvolverse bien en los diferentes módulos de desarrollo.
Si el escenario es el primero, puedes llegar a convertirte en lo que hace un tiempo llamaríamos «Browner eater» 🙂 . Si el escenario es el segundo, puede ser mucho más gratificante, dependiendo del tipo de reto que te guste. Si lo que te gusta es realizar arquitectura, optimizar procesos o abstraer conceptos para desarrollarlos, no es tu sitio. Si te gusta la acción, el reto a corto, encontrar el error, si que lo es. Todo y que no estoy de acuerdo en todo lo que se dice, te recomiendo el post «Programador ninja o programador zen» para ver ejemplos de lo que hablo. Ya en mi post “El diseñador programador” hablé de aquellas figuras que saben y pueden hacer de todo, pero no volveré al debate, por el bien de todos 🙂 Sigo pensando que en caso de tener que elegir, prefiero trabajar en un equipo dónde diferentes personas tengan experiencia y aporten de lo que saben para aprender, que en uno dónde exista un gurú que lo sabe todo.
No creo que las características de un programador ninja sean intrínsecas a una forma de ser o de hacer, sino la potencialidad que puede darse dentro de un equipo en un proyecto o a su estilo creativo de resolución de problemas. Un profesional que tiene capacidad de abstracción adquirida por la experiencia y por la forma en como se dan solución a los problemas.
Un buen programador sabrá entender el problema, verlo desde diferentes ángulos, dar razonamientos lógicos para buscar soluciones y aplicar las herramientas que dispone para solucionarlo. Al igual que un buen diseñador, redactor, guionista, cantante, médico, abogado o cualquier otro profesional que se dedique en cuerpo y alma a lo que hace. Para mi, al igual que para mucha otra gente, el término ninja es un término más marketiniano acuñado desde algún departamento de RRHH que ha ganado adeptos entre los desarrolladores. El término ha servido para hacer atractiva unas funciones de una empresa dentro de un equipo que realmente, puede que no lo sean tanto. Para contestar a Lluis, y desde mi punto de vista, el término «programador ninja» no deja de ser un término marketiniano que usan departamentos de RRHH para definir: programador experimentado en diversos proyectos con diversas tecnologías que tiene un estilo creativo de resolución de problemas tipo «implementador». Si te consideras un «programador ninja» o has trabajado en un proyecto en el que se explicitaba este rol, ¡estaríamos encantados de escuchar tu opinión!]]>

Leave A Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Déjate sorprender...

Gestionar el consentimiento de las cookies

Para ofrecerte la mejor experiencia de uso, utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. El consentimiento a estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.

Funcional

Siempre activo
El almacenamiento o acceso técnico es estrictamente necesario para el propósito legítimo de permitir el uso de un servicio específico explícitamente solicitado por el abonado o usuario, o con el único propósito de llevar a cabo la transmisión de una comunicación a través de una red de comunicaciones electrónicas.

Estadísticas

El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos. El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos anónimos. Sin una requerimiento, el cumplimiento voluntario por parte de su proveedor de servicios de Internet, o los registros adicionales de un tercero, la información almacenada o recuperada sólo para este propósito no se puede utilizar para identificarlo.

Marketing

El almacenamiento o acceso técnico es necesario para crear perfiles de usuario para enviar publicidad, o para rastrear al usuario en un sitio web o en varios sitios web con fines de marketing similares.