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.