Software artesanal (Craftsmanship): la apuesta por el trabajo bien hecho

El software no sólo debe funcionar, sino que debe estar bien hecho. Esa es la premisa con la que nació la filosofía Software Craftsmanship.

Vivimos en una época de aceleración constante y de urgencias. En este contexto, estamos acostumbrados a ver soluciones estandarizadas, respuestas rápidas, parches, etc. Lo necesario para resolver problemas de manera inmediata. El resultado suele funcionar… hasta que deja de hacerlo.

Sin embargo, hacer las cosas rápido no siempre significa hacerlas bien. Y esto es precisamente lo que defiende el enfoque ‘artesanal’ de la programación, el denominado Software Craftsmanship: hacer las cosas bien, pero sin descuidar la agilidad.

“Es una filosofía de trabajo que nos impulsa a desarrollar software que no sólo funcione, sino que esté bien diseñado. Es decir, entendemos que el acto de hacer software es un esfuerzo social y no sólo un esfuerzo técnico, porque crear software debe tener como objetivo proporcionar valor a la organización a la que lo entregamos, a las personas que van a verse directamente afectadas y al entorno en el que nuestro software vivirá y evolucionará. Por eso, lo basamos en dos pilares: profesionalidad y pragmatismo”, declara José Enrique Rodríguez Huerta, managing director de Codurance Spain, consultora de software especializada en Software Craftsmanship.

Manifiesto fundador

Esta preocupación por la calidad no está reñida con la agilidad. Sin embargo, sí que está en sus orígenes. A finales de la primera década de este siglo, algunos desarrolladores comenzaron a preocuparse ante la posibilidad de que las metodologías ágiles pudieran menoscabar la calidad. De este modo, unos años después de la creación del manifiesto Agile, un grupo de desarrolladores promovió el manifiesto para el Software Craftsmanship.

“Esta filosofía complementa al enfoque Agile, que está centrado en metodologías y procesos. De hecho, igual que hay un manifiesto Agile, también se creó un manifiesto de software craftsmanship. Y uno de los que firmaron el de Agile, Robert Martin, fue después uno de los promotores del manifiesto de Software Craftsmanship”, precisa Rodríguez Huerta.

El manifiesto dice así:

“Como aspirantes a artesanos del software, estamos elevando el nivel del desarrollo de software profesional practicándolo y ayudando a otros a aprender el oficio. A través de este trabajo hemos llegado a valorar:

No sólo software que funciona, sino también software bien elaborado.
No sólo responder al cambio, sino también agregar valor constantemente.
No sólo los individuos y las interacciones, sino también una comunidad de profesionales.
No sólo la colaboración con el cliente, sino también asociaciones productivas.

Es decir, en la búsqueda de los elementos de la izquierda, hemos encontrado que los elementos de la derecha son indispensables”.

Es una respuesta ante la creciente sensación de frustración de los desarrolladores, que trabajan bajo la presión de los plazos y las exigencias fijadas por responsables que no suelen ser desarrolladores, por lo que no siempre comprenden bien las dificultades que comportan esos requerimientos. En muchos casos, esta tiranía de los plazos obliga a lanzar soluciones demasiado apresuradas, que luego pueden generar problemas que hay que arreglar, de nuevo, con prisas.

El responsable de Codurance especifica que el Software Craftmanship parte de los principios ágiles, pero “añade la capa de capacitación técnica y buenas prácticas de programación, lo que facilita y hace viable la innovación y la transformación exitosa en los negocios, elevando el nivel de calidad en la industria a través del profesionalismo y la excelencia técnica y empujando nuestros límites en busca de la maestría”.

Además, esta filosofía entiende que el desarrollo de software es un oficio, no sólo un proceso. Y como tal, hace hincapié en el valor de la comunidad y el aprendizaje compartido, rememorando el antiguo papel de los gremios de artesanos. “Este enfoque nació con la intención de los desarrolladores de destacar que el desarrollo de software es más un arte que una disciplina de ingeniería. Y como arte, la intención era emular los gremios de artesanos de la Edad Media, donde antes de llegar a ser maestro, uno pasaba por un viaje de aprendizaje guiado por maestros artesanos. Este viaje consistía en varias etapas, donde empezabas como aprendiz y, una vez alcanzado cierto nivel, te convertías en ‘journeyman’, un aprendiz errante, trabajando bajo la tutela de otros maestros hasta alcanzar la maestría y establecer tu propio taller”, relata el responsable de Codurance.

Este enfoque ha cristalizado en varias comunidades de Software Craftsmanship en todo el mundo. “En 2010, los cofundadores de Codurance iniciaron la London Software Craftsmanship Community, la primera y más grande comunidad de Software Craftsmanship en Europa. De ese modo, abrieron el camino para inspirar y ayudar a la creación de muchas otras comunidades en todo el mundo”, especifica.

Ventajas respecto al desarrollo tradicional

La apuesta por un trabajo cuidado y bien hecho se traduce en una serie de ventajas respecto al desarrollo tradicional. “Ofrecemos un desarrollo mejor diseñado y elaborado, más rápido, robusto, estable y flexible, con menos errores y sin interrupciones. Además, es más simple, generando un código claro, comprensible y fácilmente modificable, y con procesos de evolución iterativos incrementales. También minimiza el desperdicio y reduce costes y tiempos de entrega, gracias a los dos pilares de la cultura del Software Craftsmanship: el profesionalismo y el pragmatismo”, asegura el managing director de Codurance.

De este modo, explica que la cultura de Software Craftsmanship, partiendo de formas de trabajo ágiles y colaborativas, “aporta a los procesos pragmatismo y simplicidad, y unos procesos de feedback continuos y rápidos que ayudan a que la solución sea flexible y responda a las necesidades del cliente de una forma personalizada”. De hecho, remarca que “una parte clave de esta filosofía es establecer relaciones de asociación (‘partnership’) de confianza con los clientes, basadas en la transparencia y la colaboración, para evitar caer en la ‘kakoeconomía’”.

Por otro lado, parece que, a priori, el Software Craftmanship, choca con las soluciones no-code y low-code que están irrumpiendo en los últimos años, buscando que cualquier usuario pueda crear aplicaciones sin conocimientos previos de programación. Pero no tiene por qué ser así, ya que pueden ser aproximaciones complementarias a la hora de resolver las necesidades de las empresas.

“Nuestra filosofía es muy diferente a este tipo de enfoques que son tendencia, porque resuelven determinadas necesidades de forma sencilla y pragmática. Sin embargo, nuestra labor se centra en la consultoría, en un análisis profundo y exhaustivo de los retos que nuestros clientes tienen por delante y que, habitualmente, son de alta complejidad e implican a diferentes áreas del negocio. Por eso, impulsados por nuestra cultura Software Craftsmanship, no sólo escribimos buen código, sino que buscamos aportar al cliente las mejoras que le permitan evolucionar y escalar según las necesidades del negocio. Por ejemplo, si como resultado de este análisis se ve que hay herramientas no-code que permiten lograr ese equilibrio entre alcanzar el objetivo y satisfacer las restricciones del contexto, las recomendamos”, comenta Rodríguez Huerta.