Software Craftsmanship: una visión distinta de nuestra profesión

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)

2 thoughts on “Software Craftsmanship: una visión distinta de nuestra profesión

  1. Nico,
    Creo qué hay una confusión. Yo entiendo que la Ingeniería de Software abarca todas las técnicas, métodos, y prácticas que nos permiten resolver problemas por medio del diseño y construcción de Software. Las prácticas descritas por los”métodos ágiles”, no son más que otras herramientas dentro de la Ingeniería del Software. Las prácticas ágiles son una rama de ella. Lo único contrario a la Ingeniería de Software es el método Jedi: “Luck, usa la fuerza”.

    1. Hola Carlos, coincido contigo. Lo que intenté explicar en mi artículo es la visión de libro en cuestión, que fue escrito hace 20 años cuando las propuestas del cuerpo de conocimiento denominado “Ingeniería de Software” eran bastante distintas a lo propuesto por los método ágiles. Pero hay cosas que para mi siguen aplicando. La ingeniería de software (como está definida en los libros, conferencia, swebow, etc), a pesar de haberse modificado muchas cuestiones en 20 años, es sigue siendo a mi entender un enfoque no ve al individuo y que apuesta a “la formación en masa”. Esto es radicalmente distinto a lo que propone la propuesta de craftsmanship.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.