Recientemente terminé de leer el libro Software Craftsmanship: The New Imperative de Pete McBreen. Es un libro que trata conceptualmente, o incluso podría decir filosóficamente, sobre la profesión del desarrollador de software. Creo que no hay muchos libros sobre esta temática, rápidamente se me vienen a la mente los tres que tengo en mi biblioteca: The Pragmatic Programmer (Thomas & Hunt), Soft Skills(Sonmez) y The Software Craftsman (Mancuso). Pero ninguno de estos libros tiene un enfoque filosófica tan profunda.
Es un libro que tiene casi 20 años y tal vez por ello hay cuestiones que hoy en día suenan como obvias pero que sin duda en su momento resultaron innovadoras y/o polémicas. El libro fue publicado en agosto de 2001, esto es apenas un par de meses después de la publicación del manifiesto ágil. Muchos de los puntos planteados en el libro suenan muy alineados con el manifiesto, cosa muy común hoy en día pero posiblemente muy llamativa en aquel momento.
Hace un par de semanas escribí sobre la idea de Good Enough Software que se expone en este libro. En línea con esa idea el autor hace una fuerte crítica al modelo de desarrollo propuesto por la ingeniería de software. A mi parecer algunas de esas críticas han quedado sin efecto en la actualidad por el simple hecho de que la ingeniería de software ha «evolucionado» incorporando, entre otras cosas, muchas ideas de los métodos ágiles. Sin embargo, hay algunas críticas que me parece siguen vigentes. En la visión del autor, la ingeniería de software propone una forma de trabajo basada en «hordas de programadores promedio» en contraposición con la propuesta de craftsmanship que sostiene «equipos pequeños de programadores muy buenos». Y no termina ahí, dice que muchos de esos «programadores promedio» están «sobre remunerados». Ante esto cree que las organizaciones, en lugar de contratar 15 programadores promedio sobre remunerados, deberían utilizar ese mismo presupuesto pero para contratar 3 programadores muy buenos (craftsmen). Esto haría que estos 3 programadores estuvieran muy bien remunerados y colateralmente esto ayudaría a elevar el nivel y de la profesión y la calidad del software generado.
EL libro me encantó y creo que es una lectura muy recomendada para aquellos profesionales de sistemas (no solo desarrolladores) que tengan ganas de reflexionar sobre el desarrollo de software.
Les dejo aquí algunos títulos/frases del libro:
- Good developers are more valuable than their managers
(totalmente de acuerdo, pero pocas veces reflejado en las remuneraciones) - Software Engineering forces us to Forget the individual
(este planteo parece muy bueno, pero creo que en la actualidad es más preciso decir «software factories forces us to forget the individual») - Craftsmanship is personal
(de acuerdo) - Mastery implies taking responsibility for passing on the craft
(esta idea me pareció muy buena) - Let your Software Craftsman pick the rest of the development team
(esto me parece conceptualmente fantástico aunque nunca lo viví) - Avoid bleeding-edge technology is at all posible
(muy de acuerdo, aunque dependiendo del contexto no siempre es posible) - Think applications, not projects
(me gusta, muy en linea con ideas de equipos de producto y #noProjects)