Una reflexión sobre Software Craftsmanship

Mashooq Badar, Sandro Mancuso

See author's bio and posts

Mucha gente, dentro y fuera de la comunidad del Software Craftsmanship, se refiere al Craftsmanship como una "metáfora" para el desarrollo de software. Nosotros mismos nos referimos a menudo al Software Craftsmanship como una metáfora sin pensar demasiado en lo que significa para nosotros. Si lo analizamos más a fondo, y observamos nuestros comportamientos y valores dentro de la comunidad, no consideramos al Craftsmanship como una metáfora del desarrollo de software. Decir que el Craftsmanship es una metáfora del desarrollo de software es decir que es como un craft pero no literalmente un craft. Esa no es nuestra perspectiva - creemos que el desarrollo de software es craft.

En primer lugar, veamos la definición de Craftsmanship. En el diccionario de inglés Oxford, Craftsmanship se define como: “Destreza en un oficio particular". Esto nos lleva a preguntarnos: "¿Qué es craft?". El mismo diccionario define craft como "una actividad que implica la habilidad para hacer cosas a mano". Entonces, ¿etiquetamos el desarrollo de software como un craft porque hacemos el software a mano? La frase "hacer cosas a mano" implica mucho más que lo inmediatamente obvio.

“Hacer las cosas a mano" es una característica innata. Forma parte de nuestra manera de trabajar. Implica manipular o dar forma a un material con un formato mental para conseguir un determinado resultado. Hay una retroalimentación sensorial constante, ya sea a través del tacto, la vista o una combinación de ellos. Se trata de una evolución constante del resultado deseado en nuestra mente, según nuestra comprensión cambiante del material y el objetivo que se persigue. Es una conexión continua entre la mano, los sentidos y la mente. Es un acto de creación. Entonces, podemos argumentar que el desarrollo de software es un acto de creación y que, por lo tanto, puede calificarse como craft. No se trata de una metáfora, sino de una etiqueta para las personas que ven el acto de diseñar software desde esta perspectiva.

Una vez que adoptamos el punto de vista de que el Software Craftsmanship no es una metáfora, también rompemos las restricciones que impone una metáfora. Las prácticas asociadas al desarrollo de software no tienen por qué estar vinculadas a otros crafts a lo largo de la historia. Podemos aprender de esos crafts y sus prácticas asociadas; adoptar y adaptar las que son relevantes e ignorar las que no lo son.  Podemos crear nuestras propias prácticas (por ejemplo, Agiles y XP) que son distintas porque nuestro craft es diferente de los demás, al igual que los demás crafts difieren entre sí. De hecho, ya hemos adoptado ese punto de vista y no seguimos ciegamente las prácticas arcaicas de los crafts del pasado. Sin embargo, estamos aprendiendo lecciones de esa historia para llevar nuestro craft al futuro.

Para nosotros, el Software Craftsmanship no consiste en una jerarquía de maestro a trabajador y a aprendiz. Nuestros aprendices no tienen maestros craftsmen que les den órdenes. De hecho, no tenemos maestros craftsmen. Nuestros aprendices tienen mentores que les ayudan en su viaje para aprender determinadas habilidades. También reconocemos que los mentores no son superiores a nuestros aprendices. De hecho, vemos que todos somos mentores en algunos aspectos y aprendices en otros. Nuestros aprendices pueden enseñarle varias cosas a los más senior de nuestra empresa. La razón por la que los llamamos aprendices es porque pensamos, junto con ellos, que éstos pueden beneficiarse de un período concentrado de aprendizaje, para estar seguros de que están preparados para trabajar con el conjunto de desafíos a los que nos enfrentamos con nuestros clientes.

Aprendemos de nuestra historia y entendemos que buscar la perfección frente a terminar un trabajo es un dilema al que se han enfrentado los crafts a lo largo de la historia. Valoramos el pragmatismo y reconocemos que el acto de crear software consiste en proporcionar valor a la empresa, a las personas directamente afectadas y al entorno en el que nuestro software vivirá y evolucionará. Entendemos que el acto de hacer software es un esfuerzo social y no sólo un esfuerzo técnico. De hecho, sabemos que sin un equipo cohesionado podemos olvidarnos de elaborar software de forma significativa.

Entendemos que nuestro craft es reciente pero también muy importante para nuestro futuro como humanidad.  Comprendemos que debemos aprender unos de otros y ayudarnos a avanzar en nuestro craft. Sabemos que, como en cualquier otra industria, algunos grupos están poco representados en nuestro craft. Como comunidad, estamos plenamente comprometidos con la diversidad y la inclusión. Éstas no son sólo palabras vacías. Nuestros miembros se implican activamente en fomentar y promover que personas de estos grupos se unan a nuestra industria. Nos enorgullecemos de ser amables, serviciales, abiertos y sensibles con todo el mundo.

Entendemos la importancia de la comunidad y la inclusión para garantizar que nuestro craft se nutra de la hermosa diversidad que nos ofrece la humanidad. Lo decimos porque lo vemos en las comunidades de Software Craftsmanship de las que hemos tenido el placer de formar parte. El espíritu de esa misma comunidad vive en nuestra empresa. Nos dedicamos a enseñar y aprender, ya sea dentro de nuestra comunidad o dentro de nuestros clientes, que invariablemente se sienten atraídos por nuestra comunidad una vez que la experimentan de primera mano.

Nuestro craft aún es reciente, pero nos gusta pensar que estamos marcando la diferencia para mejorar su futuro.