Hace un tiempo un amigo me pidió que le recomendara algunas lecturas apropiadas ahora que se iba a dedicar oficialmente a ejercer como arquitecto de software (¿todavía alguien quiere ser arquitecto de software?). Al final, nunca le envié la lista pese a que me pareció una pregunta de lo más interesante. Ahí van mis diez lecturas recomendadas para cualquier ingeniero de software, en ningún orden en particular:
- Zen and the Art of Motorcycle Maintenance. Quizá no era lo que esperabas pero te aseguro que este libro cambió radicalmente mi visión acerca del desarrollo de software. Absolutamente imprescindible.
- Design Patterns: Elements of Reusable Object-Oriented Software. Creo que no es ninguna sorpresa que recomiende la lectura de este libro. Completa. De principio a fin. Por favor.
- Analysis Patterns: Reusable Object Models. Un clásico que te ayuda a pensar en sistemas orientados a objetos que nunca deja de estar de actualidad pese a la fecha de su publicación.
- Clean Code: A Handbook of Agile Software Craftsmanship. Ahora que está tan de moda el moviento de software craftsmanship se hace más necesaria que nunca la lectura del mejor libro de uno de sus más firmes impulsores.
- Extreme Programming Explained: Embrace Change. Para los que piensan que la programación extrema es algo que ha pasado a la historia y que son otras metodologías ágiles están más de moda, me gustaría recomendarles una lectura rápida. Después de eso, no hay mucho más que decir.
- Writing Effective Use Cases. Y para los que lo piensen, no, los casos de uso no han pasado de moda. Ni tampoco están reñidos con las metodologías ágiles, sólo hay que echarle un ojo a la biografía del autor para verlo.
- Domain-Driven Design: Tackling Complexity in the Heart of Software. Organiza tu software entorno a lo realmente importante: el dominio.
- Refactoring: Improving the Design of Existing Code. Porque las cosas nunca salen bien a la primera.
- Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Le tengo un especial cariño a este libro por haberme salvado tantas y tantas veces en las que he tenido que pelearme con las integraciones más raras, complejas y, en ocasiones, absurdas, que tenido que hacer en mi vida.
- Patterns of Enterprise Application Architecture. Este libro te introduce los bloques básicos para poder construir software de verdad basado en principios sólidos de diseño.
No es una lista exhaustiva ni son todos los libros que te recomendaría. Podría haber incluido en la lista xUnit Test Patterns: Refactoring Test Code o The Pragmatic Programmer: From Journeyman to Master. O tantos y tantos grandes libros que hay. Pero, sinceramente, creo que si llegas a leerte todos estos libros y te dedicas de forma habitual al desarrollo de software siguiendo lo que en ellos se dice, habrás alcanzado el punto en que te convendría mucho más leer cosas no relacionadas tan directamente con el desarrollo del software. Aunque ése es otro tema del que hablaremos en el futuro.
Notas finales
Para que no sirva de excusa el tema del idioma, os dejo los siguientes con sus enlaces a la edición en español: