Foreword
Before I wrote Working Effectively with Legacy Code [Feathers 2004] 20 years ago, I spent a lot of time looking for books on legacy code and legacy transformation. The few books that I found were centered around mainframe software. At that time, moving code from “the mainframe” to something else was seen as an urgent task. It still is.
Today, we move code from “the monolith” to microservices. Time will tell whether our major industry initiatives will continue to start with an “M.” Regardless, we will always need to modernize. Software goes stale when it falls out of sync with its environment—the business, the system’s users, and its technology. We will always need to move forward.
I was glad to see Carola and Henning start this book because I’ve long felt that Domain-Driven Design is one of the most valuable distillations of software design knowledge available to us. It gave us a set of organizing principles and a nomenclature that makes design conversation easier. Carola and Henning use it as a base, and they’ve added considerable knowledge of social-technical design to give us a guidebook that covers the breadth of transformation and the considerations that you must keep in mind when undertaking that task.
If you are starting a transformation project, I recommend that you read this book.