Since I sometimes get asked about what I would recommend as reads to gain a deeper understanding about software engineering, I was thinking to just compile a list of my favourite books in this area, which I consider a very valuable read 🙂
By Gamma et. al.
I think this is one of the classics and a very recommended read (but with a pinch of salt), basically, one of the books starting the patterns movement in OOP. While one has to be careful to not blindly force those patterns into your own software design, it is critical knowledge and part of the cultural backbone of the software industry. Knowing those patterns and being able to quickly identify them helps tremendously in understanding unfamiliar code bases and when having architecture discussions with peers.
By McConnel
This is a very hands-on and detail-focused book, concentrating on the lower level aspects of software contruction, e.g. what are good variable names, how can you structure your methods, etc.. This contains a lot of pieces applicable for object oriented programming, but a lot of concepts hold true for other languages as well.
By Robert Martin
Where Code Complete focuses on the details, Clean Code zooms out a bit and thinks about how classes and object should be designed to effectively interact with each other. It still provides a lot of very hands on code-examples though and I think it has, as a whole, a higher information density than Code Complete (which has more details).
By Osherove
This book if where I really understood Unit testing and realized how to write good and useful unit tests.
By Simon Brown
Simon is the inventor of the C4 model and this book uses the C4 model to give a very pragmatic developer focused approach to understanding and documenting software architecture.
By Mancuso
This basically summarizes for me personally how a modern self-conception of yourself as a professional and responsible software developer should look like.
By Hunt & Thomas
Some recommendations are a little bit old-school, but if you consider the publication date, this contains a lot of wisdom about techniques we still didn't learn as an industry and that could our (work) life so much easier, especially with regards to extreme automation of tasks (e.g. automatic generation of documentation). and use of scripting languages.
By Robert Martin
Follow up book of Clean Code. Very hard, very white male, approach to work ethic and career as a software developer. Works well if you are a white male I suppose 😉