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» sin parar.
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
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
El 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.
Y entonces… ¿qué es mejor, Programador Ninja o Programador 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.
Si quieres saber más… ¡COMENTA!