One of my areas for improvement for this year is to learn about software design, software architecture. I keep that in mind when I choose my next books. That’s why I read recently Clean Architecture by Uncle Bob and that’s why I’ve just read Patterns of Enterprise Application Architecture by Martin Fowler.

Fowler likes puns, so do I. Luckily he hid quite a few in the book. Still, this is not the book that you will read in order to entertain yourself. In fact, it’s quite difficult to read. The book is well-written, but the topic is complex.

Even the author proclaims in the preface that he doesn’t expect the readers to consume the book cover to cover. I did, but he’s right.

The book is organised in two big parts. In the first part, he writes about the topics that you should understand, that you should know about in order to design your software’s architecture the right way. Those topics include layering, domain logic, database mapping and concurrency among others. That’s definitely a must read part.

The second part is about how to address these questions of your architecture and gives possible patterns to follow. You’ll also find some example code among the lines. This second part although is very interesting, is a bit difficult to read. And you might not need to read. But a better approach is to read it just-in-time, use this part of the book as an encyclopaedia.

All-in-all, I’m glad that I read the book and I’d definitely recommend it, but it’s not the junior level, and I think I’d need some deeper experience in order to properly use the content of this book. I think whenever I’ll reread the books or at least some specific chapters, it will show new values of itself and that’s definitely a sign of a great book.