Libro: Refactoring, Improving the Design of Existing Code

Recientemente terminé de leer este libro. Había leído algunos fragmentos sueltos, algunos refactorings del catálogo, pero resulta que el libro es mucho más que el catálogo. Toda la primera parte del libro explica diversos conceptos de refactoring y diseño orientado a objetos en general.

Entre lo que más me gustó del libro (más allá de algunos refactorings) están el capítulo 2 (Principles) y el capítulo 3 (Bad Smells in Code).

El autor del libro es Martin Fowler pero hay capítulos en los que colaboraron otros autores. Destacan las colaboraciones de Kent Beck, en esos capítulos se evidencia el mismo tono de «charla de café» que en los libros Beck (TDD by Example, Extreme Programming Explained, etc)

Dada la época en que se escribió el libro (2001), los ejemplos y las menciones a lenguajes de programación están en torno a Smalltalk, C++ y Java (versión 1.2).

Importante aclaración: hay 3 ediciones de este libro una de 2001 y otras 2 de 2018 (una es la actualización de la versión 2001 y la otra es una versión ajustada a Ruby). Yo leí la versión 2001 porque me interesaba entender el tema desde la raíz, sin embargo si alguien está interesado en leer este libro le recomiendo leer la versión 2018.

Libros de Ingeniería de Software que 2022 merecen una mirada

En los últimos años han sido publicados algunos libros sobre ingeniería de software que a mi parecer son de consideración obligada para todo docente de esta temática.

Software Engineering at Google: publicado por O’Reilly en 2020 y con versión digital (pdf) fue liberada gratuitamente hace un par de día. Cubre cuestiones de cultura, procesos y herramientas. Un punto para destacar de este libro es que tiene varios capítulos dedicados exclusivamente al tema testing. Paso a comentar. Curiosidad: el primer capítulo comienza con una cita de Borges.

The Art of Agile Development (segunda edición) escrito por James Shore y con colaboración de varios referentes. Es básicamente un libro de Extreme Programming. Su primera edición fue en 2007 y me pareció de lo mejor. El año pasado James decidió hacer una nueva edición cuyos borradores fue compartiendo en forma temprana para obtener feedback y refinarlos. Tuve la oportunidad de participar de esa iniciativa y me pareció un idea excelente. Esta nueva edición no solo actualiza algunos contenidos sino que en un punto es un «major update» ya que también incluye algunos nuevos capítulos en los que trata temas como «DevOps» y «Scaling».

Modern Software Engineering: escrito por Dave Farley(autor del ya clásico Continuous Delivery) y publicado a comienzos de 2022. A diferencia de los dos libros anteriores, este me resultó un más conceptual/filosófico. Propone un enfoque muy pragmático y contrastante con los libros clásicos de la temática como los de Pressman y Sommerville.