Skip to content

Book Review : Adaptive Code

Adaptive Code

Agile coding with design patterns and SOLID principles (2nd Edition)

Why I Read this book?

Every couple of months I like to do what I call deep dives in some aspects of software development practices. This usually involves me spending some of my evening time, just working through or reading a book. I usually pick a topic I really want to learn in detail. This may be areas I have plenty of exposure too but may not get enough time during the working day too really master.

As a software developer, you will inevitably find yourself moving between technology stacks, environments, code bases and even companies going from emergency to emergency! Mastering, one key aspect of something but not having the opportunity to understand everything.

A book like Clean Code: A Handbook of Agile Software Craftsmanship really helps you to learn the principles of clean code from a platform agnostic point of view, despite all the code samples being in Java. However, I really wanted something that would cover the principles a bit more from a C# point of view and that is when I noticed Adaptive Code: Agile coding with design patterns and SOLID principles

Clean Code

A Handbook of Agile Software Craftsmanship

software developers irrespective of programming language or discipline should read this book

What I learned from this book

What I really liked about this book is that it went into a lot detail when the author discusses the SOLID Principles. However, he managed to keep the example code quite simple, with just enough detail to get the point across. Which in my opinion is perfect, because it makes reading and coding along really easy thus not inducing a cognitive overload.

The other plus side, which is often quite unusual for books about code, is that the samples actually work!

The book begins with an overview of Scrum and Kanban, but I have to admit that I conveniently skipped those two chapters. The author could probably have saved himself the effort. It is my experience, that absolutely no company I have ever worked with, actually implements agile practices that are remotely identifiable to any agile practices.

Once that is out of the way, the book adds indispensable practical insights dependency inversion and creating reusable abstractions. It also has deeper coverage of unit testing, refactoring, pure dependency injection, and more.

What I like about this book

What I liked about this book, is actually contrary to what some other reviewers have said they disliked about the book. I actually found the code samples to be quite intuitive and actually helped to explain exactly what the author had intended. They were simple to follow and entirely focused on the point they were addressing.

This is not often the case the with books about code, in a lot of cases the authors tend to add a lot more information than is actually needed.

The other big plus for me, is the authors style of writing. It very much felt like he was talking to me and guiding me along. Instead of at me and trying to be too clever.

Who Should Read this book ?

Every serious programmer has to read this book.

I have a lot of books that are really great for references on how to most effectively use certain technologies. That is what sets this book apart.

It teaches you how to write code that is future-proof in that allows you to make changes to existing code without breaking other code that depends on the modified code. The importance cannot be overemphasized.

This enables you to make changes and write unit tests much easier but it also makes things so much easier for the users of your code, be it fellow programmers that base their code on your code, customers that use your libraries, etc.

Why I recommend this book

This is a really terrific book about architecture and design patterns. I would highly recommend this for software engineers and developers from intermediate to advanced.

This is one of the most helpful software engineering books I've ever read. It is most useful for people who have some real-world experience in .NET development.

Gary Woodfine
Latest posts by Gary Woodfine (see all)