Programador Ninja o Programador Zen

Hoy día las empresas se han vuelto adictas a implementar una u otra forma de “desarrollo ágil” de software, que en la gran mayoría de las veces termina convirtiéndose o traduciéndose en una forma degenerada y poco saludable de proceso de “construye-y-despliega”.

Esta deformación de los procesos ágiles de desarrollo de software en las empresas ha hecho que muchos desarrolladores de alta profesionalidad hayan adquirido características más propias de guerreros míticos.

Y de todos los guerreros, no se les ocurrió ninguno mejor que el Ninja. ¿Pero qué es exactamente un programador Ninja?

El Programador Ninja

Ninja Básicamente son programadores con un nivel de experiencia y una pasión efervescente, siempre encendida por nuestra disciplina. No sólo son ágiles, sino también disciplinados y centrados en su trabajo.

Paradójicamente, una de las primeras características que resalta en un programador Ninja no es su agilidad, disciplina o conocimientos, sino su confianza en sus habilidades y el resultado de su trabajo. No sueles escuchar que digan “Yo se hacer esto o lo otro…” sino más bien “Yo puedo hacerlo y se como lograrlo…”

Los programadores Ninja tienen movimientos secretos, fuentes Open Source y oscuros blogs con conocimientos prohibidos que utilizan para llevar con éxito su tarea. Y por ello parte de las características propias de un programador Ninja es que está constantemente buscando fuentes de información, el programador Ninja sabe como ser un buen estudiante.

El conocimiento de los programadores Ninja no sólo reside en los aspectos técnicos que dominan, sino también en las particularidades de sus enemigos (los requisitos con tiempos de entrega muy estrechos) y sus aliados (los clientes y usuarios). Los programadores Ninja saben como romper con los requisitos para satisfacer a sus clientes.

Los programadores Ninja participan activamente en dojos de programación y en hackatomes de todo tipo. Sin embargo son cerrados y sólo interactúan con reducidos grupos sociales, tanto en las oficinas como en los eventos.

Sin embargo, los programadores Ninja (contrario a lo que ellos mismos puedan pensar) no están orientados a la calidad, al detalle fino o a los acabados pulidos. Una organización sólo puede esperar del programador Ninja que entregue un producto con calidades good enough en el corto tiempo que se tiene para obtenerlo. Ahora, no se mal interprete, el producto de software entregado no tendrá errores ni defectos, pero será un FIAT comparado a un FERRARI. Por ejemplo, es muy común ver código de programador Ninja con ninguna documentación o arquitectura de software definida.

Por otro lado, aunque los programadores Ninja son muy buenos estudiantes, son pésimos profesores. No tienen dotes pedagógicas, carecen de los soft skills que les permiten convencer a otros de que lo que hacen es lo mejor, o simplemente no desean comunicar sus secretos.

Y entonces… ¿son los programadores Ninja la única alternativa en una organización?

Introduciendo al Programador Zen

zenEl programador Zen comparte algunas características con el programador Ninja, pero su principal diferencia es que, aunque son ágiles, no están orientados a entregar software de forma rápida. Se toman su tiempo, meditan y vuelven a meditar antes de tomar alguna acción.

El programador Zen sólo sabe y sólo domina la tecnología base a la cual está orientado, es su dogma y su filosofía; la base de su ciencia y religión que es la programación. Y difícilmente se moverá de esta tecnología. Mientras un programador Ninja no tiene problemas en pasarse de .NET a Java a Rails a PHP… el programador Zen permanecerá inalterable fiel a la tecnología que a elegido para si.

Mientras el programador Ninja lo sabe todo, el programador Zen no sabe nada. Su mente está vacía, con lo cual cada nuevo reto y cada nuevo proyecto es un lienzo blanco sobre el cual diseñar el mandala de su solución de software. El programador Zen no tiene el conocimiento, pero si la sabiduría para encontrarlo y reconocer dicha solución dentro del kōan de los requerimientos.

Para el programador Zen, los requerimientos no son enemigos, y los usuarios no son aliados; ambos son elementos del camino como las piedras sobre el suelo o las flores a los lados. No los dividen ni los categorizan, simplemente los aprecian como parte de su meditación.

Un programador Zen es un excelente estudiante, y aun más un excelente maestro. Siempre esta dispuesto a compartir lo que sabe para vaciarse y así llenarse de nuevas experiencias y de nuevas tecnologías. Busca constantemente que otros sepan lo que él o ella saben para poder dedicarse a cultivar nuevos frutos.

Finalemente, debido a que no están motivados a entregar de forma acelerada el producto de software, están muy orientados a la calidad y a la belleza del mismo. Su software está exquisitamente documentado, diseñado e integrado a un todo. Y ese es su secreto… no vuelven a hacer una cosa dos veces porque no tiene sentido, con lo cual al presentar productos apropiadamente arquitecturados, integrados y construidos son capaces de crear cosas nuevas sobre éstos reduciendo tiempos (sobre todo si hay que cambiar funcionalidades) y esfuerzos.

Pero entonces… ¿qué es mejor, Ninja o Zen?

Ni lo uno ni lo otro. Ambos son necesarios. El Ninja puede sacar de un aprieto a su señor feudal, pero el Zen es el que al final le dará la paz y la sabiduría para el éxito.

Quizás algún día veamos el punto intermedio, el Ninja que abraza el Zen, o el Zen que despierta para actuar como el Ninja. Quizás se escriba el bushido de la programación, y empecemos a hablar de programadores Samurai.

Anuncios
Entrada siguiente
Deja un comentario

6 comentarios

  1. Me encantaron las analogías. Tengo que preguntar: ¿con cuál te identificas?
    Buen artículo!

    Responder
    • Pues me identifico más con el Programador Zen, ya que estoy más orientado a la calidad, a una tecnología en particular (en mi caso Microsoft .NET) y porque me encanta compartir mis conocimientos y “secretos” de programación.

      Responder
  2. Pues fíjate que aunque me idenifico más con el Zen, tengo la sospecha de que es más por ganas de serlo que por serlo realmente. Creo que todos tenemos aspectos de ambos etereotipos. Me gusta sentirme orgulloso de mi trabajo. Y lo intento a través de la especialización y la profundización, ya que creo que realmente hay una diferencia notable entre alguien competente y alguien realmente bueno. Tanta como la que hay entre alguien incompetente y alguien competente.
    También creo que los requisitos no son los enemigos. O no los míos. Porque entiendo que quien enarbola la bandera de los requistos maneja una espada de doble filo. Al final puede hacer exactamente lo que estaba pactado, y eso puede no servir a nadie. Pasa más fecuentemente de lo que crees.
    De modo que, como a mi lo que me encanta es que mi trabajo sea de utlidad, creo que hay que dejar de usar los requisitos como un corsé. Y hay que cambiar el paradigma de colaboración a uno más ágil. Embrace changes… You know.

    Responder
    • Hola,

      Al igual que por Twitter, permíteme agradecerte por comentar, compartir y más importante aún, contribuir con tus experiencias y visión.

      Responder
  3. James K.

     /  mayo 8, 2014

    Excelente articulo, muy bien redactado y justo con las palabras que quería ver, últimamente me encuentro con estos términos, ninja y me pregunte el ¿Porqué? catalogar una profesión con estos adjetivos, en términos filosóficos, y realmente me dejas con una idea más estimulante de lo que mi profesión como desarrollador de software puede llegar a ser, algunas películas de programadores que recomienden, que no sean MATRIX saludos

    Responder
  4. Excelente articulo, sigue con las buenas ideas

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s