Software engineering books to read and reread
Advanced Web Application Architecture, by Matthias Noback
Advanced Web Application Architecture allows you to spot what kind of code you're dealing with:
"Pure" code that you can test in isolation
Code that relies on external systems.
It then provides an extensive amount of techniques to avoid coupling those two types of code. This leads you to create software that is much more flexible.
I also highly recommends Matthias Noback's blog, which is full of software engineering gems.
Living Documentation, by Cyrille Martraire
Documentation comes in various flavours, and Cyrille Martraire explains it wonderfully. Living Documentation goes beyond documentation, it's really about how to communicate properly with other people in a team.
Domain Driven Design, by Eric Evans
I started to learn about DDD around the early 2010s. When I discovered it I untangled a web of people, tools, theories, literature around it. Domain Driven Design, aka "The Blue Book", is probably THE most important book about software engineering in the 21st century so far. I know it sounds a bit dramatic but I think it's true :) If you don't know what DDD is, the easiest to get started is to read Mathias Verraes' definition of it.
Refactoring, by Martin Fowler
Thanks to Martin Fowler I know about so many patterns and techniques that I use almost every day at my job. In Refactoring, he shares the most fundamental technique to allow code to be moved and reshaped effortlessly. The technique names such as extract, inline are very important if refactoring is part of your daily work.
Thinking in Systems, by Donnella Meadows
Although this is not a book about software engineering per se, it provides to the reader a very simple and powerful set of tools to analyse problems by looking at interactions. I wish I had a course about that in school. Thinking in Systems allows you to see the bigger pictures. Not only seeing the software, but the system that surrounds it, the flow of information and communication in an organisation.
Continuous Delivery Pipelines, by Dave Farley
If you don't know Dave Farley, be sure to check his Youtube channel which contains lots of very interesting videos about various software engineering subjects. In Continuous Delivery Pipelines, he explains how to build a deployment pipeline for fast delivery. If you think you know everything about continuous delivery, think again!
That's all... for now
These are the books that I could think of right away, because I often read them. I'll probably add some more books to this list soon. Currently reading:
- Team Topologies, by Matthew Skelton and Manuel Pais
- Accelerate, by Nicole Forsgren, Jez Humble, and Gene Kim