Work in Progress: Software Design X-Rays

Earlier this year I announced my new book project under the working title of Software (r)Evolution. The book starts to take shape and I now have 7 out of 10 chapters completed, and in the process we changed the book title to Software Design X-Rays: Fix Technical Debt with Behavioral Code Analysis.

I always look for early feedback on my content, in writing as well as coding. Some friends help me out by reading the early drafts and we are now ready to launch the official tech review of the book. This means that there's an opportunity to join in, get early access to the book, and provide feedback based on your expertise and experience.

Update: We have all the reviewers we need now and I want to say thanks to everyone who responded! I'm grateful that so many skilled people find my work interesting and want to be part of this.

Review the Book

I look for 10-15 people interested in reading the book and providing feedback on the content. You don't have to read all chapters, and everyone who contributes some feedback gets credits in the book and of course a copy of the completed work. While the book targets an advanced audience, I'm interested in getting in touch with people of all experience levels.

Most discussions in the book are on a conceptual level and since the techniques are technology-neutral, the book will apply no matter what programming language you work with. To get the most out of this book you should be a programmer, technical lead, or software architect. The most important thing is that you have worked on larger software projects and experienced the various pains and problems we try to solve in the book.

If you want to contribute, just drop me an e-mail and I forward the message to my editor at The Pragmatic Bookshelf.

What is the Book about?

The history of large scale software systems is a tale of cost overruns, death marches, and heroic fights with legacy code monsters. One prominent reason is technical debt, which represents code that's more expensive to maintain than it has to be. Repaying technical debt is a hard problem due to the scale of modern software projects; With hundreds of developers and a multitude of technologies, no one has a holistic overview. We're about to change that.

Software Design X-Rays offers a set of techniques that give you an easily accessible overview of your codebase, together with methods to prioritize improvements based on the expected return on investment. That means you will be comfortable with picking up any large-scale codebase, analyze it and suggest specific refactorings based on how the developers have worked with the code so far.

Good code is as much a social design as it is a technical design. We reflect that by learning to uncover organizational inefficiencies, resolve coordination bottlenecks amongst teams, and assess the consequences of knowledge loss in your organization.

The completed chapters go under the following working titles, which may give a good idea of the content:

  1. Introduction: The World of Social Code Analysis
  2. Why Technical Debt Isn't Technical
  3. Identify Code With High Interest Rate
  4. Explore Time -- The Hidden Dimension of Software Design
  5. Pay off your Technical Debt
  6. The Principles of Code Age
  7. Spot Your System's Tipping Point
  8. Beyond Conway's Law

The plan for the remaining chapters is to take those ideas and apply them to gain architectural insights on Microservices, Serverless, as well as our beloved monolithic systems.

Writing a book is a lot of work, and since my previous book Your Code as a Crime Scene received more praise than I could ever ask for, I definitely feel the pressure to deliver something truly novel and pragmatic.

I hope you find this interesting, and please get in touch if you have any feedback based on this quick summary or if you want to join in as a reviewer.

Adam Tornhill, August 2017