La mejor manera de aprender a diseñar, en cualquier campo, es mediante el estudio de ejemplos. Y qué mejor que hacerlo con ejemplos que provengan de las herramientas que los programadores usan en su propio trabajo. Este es justamente el objetivo del libro que os recomiendo hoy: Software Design by Example escrito por Greg Wilson.

Inspirado en iniciativas como la Arquitectura de las Aplicaciones de Software Libre, este libro os muestra como crear versiones minimalistas de herramientas como Git, Mocha, un comparador de expresiones regulares o la máquina virtual de JavaScript para desmitificarlas, enseñaros como funcionan y daros ideas de cómo piensan y qué patrones siguen los programadores experimentados para que después podáis aplicarlos a vuestros futuros diseños.

Este material se puede utilizar para el estudio a vuestro propio ritmo, en un curso de pregrado sobre diseño de software o como núcleo de un taller intensivo de una semana para programadores en activo. Cada capítulo tiene un conjunto de ejercicios que varían en tamaño y dificultad desde media docena de líneas hasta el trabajo de un día completo.

El libro es totalmente gratuito y se puede leer online pero si lo compras estarás contribuyendo a una buena causa ya que los beneficios se destinan a beneficencia.

Los lectores deben estar familiarizados con los conceptos básicos de JavaScript moderno, pero las características más avanzadas del lenguaje se explican e ilustran a medida que se presentan. Y si no sabes nada de JavaScript este otro libro del mismo autor, también disponible online, puede ser tu mejor introducción a JS.  El mismo autor está preparando una versión similar con Python.

En definitiva, un libro gratis que os enseñará los conceptos principales detrás de un buen número de herramientas que ahora mismo seguramente os parecerán “mágicas” y fuera de vuestro alcance pero que en realidad no lo son. No se me ocurre mejor manera de aprender a diseñar software “real”.