El Manifiesto de la artesanía del software

"Agile está demasiado metido en el proceso y no en el oficio de la programación en sí misma" - Paul Pagel

La artesanía de software es un enfoque del desarrollo de software que enfatiza las habilidades de producir código de los propios desarrolladores de software, programadores o como se hacen llamar aspirantes a artesanos del software. Es una respuesta de estos profesionales a los males percibidos en las prácticas establecidas en la industria, entre las que destacan la priorización de las preocupaciones financieras sobre la responsabilidad del desarrollador y la calidad del código que produce.

El manifiesto de la Artesanía de software extiende y desafía las suposiciones del Manifiesto Ágil, haciendo una metáfora entre el desarrollo de software moderno y el modelo gremial de la Europa medieval.

El sitio web del Manifiesto parece un trozo de papel viejo, que puedes "firmar" digitalmente si crees firmemente en lo que en él se establece. El Manifiesto en sí es corto y se asemeja mucho a un manifiesto más conocido, el manifiesto por el desarrollo de software ágil y describe lo siguiente:

Como aspirantes a Artesanos del Software estamos elevando el listón de desarrollo de software profesional practicando 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 diseñado
No sólo responder al cambio, sino también agregar valor constantemente
No sólo individuos e interacciones, sino también una comunidad de profesionales
No sólo colaboración de clientes, sino también asociaciones productivas

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

- https://manifesto.softwarecraftsmanship.org/#/es versión en español.

Cuando leí detenidamente este manifiesto, comprendí por qué tanta gente lo había firmado y me decidí a firmarlo también. Si haces scroll hacia abajo en la página, es muy probable que te canses antes de llegar al final de ella. Por suerte tiene una opción de búsqueda y si después de firmar quieres ver tu nombre ahí, puedes buscarlo rápidamente.

Mi firma en el manifiesto por la artesanía del software

Para quienes desarrollan software, el concepto en sí es atractivo e interesante, ya que una de las razones por las que muchos desarrolladores no están contentos con lo que hacen es por que trabajan bajo la presión de plazos y requisitos creados por personas que no son desarrolladores.

…trabajan bajo la presión de plazos y requisitos creados por personas que no son desarrolladores.

El software que terminan entregando gracias a esos plazos y requisitos, se siente como si estuviera pegado con cinta adhesiva. Y cuando la cinta pierde su capacidad adhesiva, por una parte, son los desarrolladores los culpables a los ojos de la organización y por otra son ellos mismos quienes deben encontrar la forma de recoger las piezas y volverlas a poner en su lugar sin importar la hora que sea, porque en muchos de los casos, el negocio es más importante que la vida y el tiempo de ellos. No es de extrañar que la mayoría de los desarrolladores trabajan en proyectos a parte o colaboran con proyectos open source como pasatiempo, ya que les ayuda a mantener su amor por el arte de la programación vivo, además que les permite enfocarse en algo que les gustaría también poder tener presente en sus trabajos, la calidad del código que escriben.

La artesanía del software significa preocuparse no solo por lo que hace el software, sino también por cómo está construido. Es un estilo de creación de código en el que el desarrollador de software trabaja como parte y socio de una comunidad de prácticas de profesionales que busca mejorar la profesión del desarrollo de software.

La artesanía del software significa preocuparse no solo por lo que hace el software, sino también por cómo está construido.

Lo que se describe en el manifiesto de la artesanía del software deriva principalmente de las prácticas popularizadas por Extreme Programming (XP).

Un poco de historia

El Manifiesto de la artesanía del software puede verse como una extensión del Manifiesto de desarrollo de software ágil. Varios firmantes del Manifiesto de desarrollo de software ágil, como “Uncle Bob” Martin, también trabajaron en el Manifiesto de artesanía de software.

A fines de la década de 2000, los desarrolladores de software temían que Agile no se concentrara lo suficiente en la calidad. En 2008, Bob Martin, uno de los autores del Manifiesto por el desarrollo de software Ágil, propuso que se agregara "Craftsmanship over Crap" ("artesanía por encima de la basura") como el 5to valor en dicho manifiesto, pero no lo consiguió.

Desde ese momento intentaron promover el tema en la principal conferencia sobre agilidad del momento, pero fueron rechazados. Paul Pagel, un desarrollador de software que era un aprendiz de Bob Martin en aquel momento comentó "Agile está demasiado metido en el proceso y no en el oficio de la programación en sí misma".

"Agile está demasiado metido en el proceso y no en el oficio de la programación en sí misma" - Paul Pagel

Entonces decidieron celebrar una cumbre en Libertyville, Illinois para desarrollar su propio manifiesto. Después de la cumbre, la discusión continuó en una lista de correo que culminó con la puesta en línea del Manifiesto en 2009. Ese mismo año sus autores celebraron la primera Conferencia Software Craftsmanship North American Conference, al mismo tiempo y justo enfrente de la conferencia sobre agilidad.

El Manifiesto de desarrollo de software Ágil, con su énfasis en "individuos e interacciones sobre procesos y herramientas" cuestiona algunos de los aspectos planteados en el manifiesto por la artesanía del software.

En estos tiempos todavía es difícil convencer a empresarios o clientes de que el software de baja calidad cuesta dinero a largo plazo ya que lo que normalmente les mueve es el ahorro a corto plazo. Aunque siendo sincero, si las empresas se concentraran sólo en la "artesanía" y calidad del software, su enfoque estaría del mismo modo en el lugar equivocado. Como en todo, es necesario un balance, el código que creamos debería cumplir un mínimo de estándares de calidad, pero a su vez considerando las necesidades del negocio y lo que realmente necesitan los usuarios.

¿Qué opinas tú de este manifiesto? ¿Consideras el desarrollo de software como un trabajo artesanal? ¿Se considera la importancia de la calidad del software en tu organización? Agradezco tus respuestas a estas preguntas y comentarios.

i'marv.in