¿Cuáles son algunos buenos libros sobre refactorización / escritura de código mejor adecuados para principiantes?

Esta es una pregunta intrigante!

He estado programando profesionalmente durante 14 años y todavía estoy aprendiendo todos los días. Todos los días, mis pensamientos sobre cómo se ve un buen código cambian.

Mis 14 años de programación vienen con mucho equipaje (algunos podrían llamarlo experiencia) que el nuevo principiante aún no ha experimentado. Por ejemplo, ¿cuáles son las consecuencias del código mal factorizado en una base de código de un millón de líneas?

Tener que mantener ese tamaño de una base de código durante muchos años te cambia como programador. Te das cuenta de que, bajo fuego, preferirías tener menos código, código que puedes resolver en unos minutos. ¡Un código excesivamente complicado e inflado es una responsabilidad, una pesadilla de mantenimiento!

Hay tantos libros que podría recomendar sobre este tema, pero sin experiencia siento que esos libros no tendrían el mismo impacto. Design Patterns by the GoF es un buen ejemplo. Muchos principiantes leerían ese libro y comenzarían a aplicar ciegamente patrones de diseño en todas partes.

La refactorización de libros de Martin Fiwlers sería una buena recomendación, pero sin la experiencia de las diferencias reales entre el código bueno y el código malo, la refactorización no será de gran beneficio.

Clean Code por el tío Bob es una buena lectura, y me gustan los principios SÓLIDOS; en todo caso, el Principio de responsabilidad única le daría el mayor provecho. Pero para el principiante, siento que Clean Code podría ser demasiado absorbente.

Code Complete 2 de Steve McConnell es una buena referencia de escritorio para tener en su estante después de algunos años de experiencia, pero es un libro enorme y no creo que el principiante obtenga tanto de este libro como otros.

Mi favorito personal es El programador pragmático de Andy Hunt y Dave Thomas. Ese libro ofrece una visión general de los rasgos de los buenos programadores profesionales, que creo que sería bueno leer al principio de su carrera.

Pero quizás lo mejor para concentrarse como principiante es saber cómo se ve un buen código. El libro más simple y claro que conozco es Comprender las cuatro reglas del diseño simple

También agregaría libros sobre TDD. En particular, Explicación de la programación extrema y desarrollo guiado por pruebas con ejemplos, ambos de Kent Beck. No estoy seguro de que sean los primeros libros que recomendaría leer, pero tener un manejo temprano en su carrera con las pruebas le será de gran utilidad.