Quentin Delcourt

Software engineering books to read and reread

In my opinion, the most useful books are not about specific technologies or programming languages. They're about timeless knowledge. Here are some books that I often come back to.

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: