Tidy first? (book review)
Tidy First? sets a new standard for software design books. The author, Kent Beck, proves that itâs possible to write about software design in a concise and practical style. Reading it was a pure joy, and Iâm looking forward to the next parts.
Below are a few highlights from my reading. For a more comprehensive review and three full chapters from the book, check out this article by Gergely Orosz.
Human-centred
Throughout the book, Kent offers several definitions of software design, with the following being reiterated a few times:
Software design is an exercise in human relationships.
The first book in the series focuses on the programmerâs relationship with themself. We all can afford 30 min for tidying up between the tasks to make our own coding experience more pleasant.
Start with yourself.
Leave the code a little better than you found it.
The book presents 15 types of tidyings and explains how these can be integrated into a programmerâs day-to-day without much hassle.
The next books in the series promise an even stronger emphasis on human relationships as Kent plans to zoom out to team-level and organization-level software design activities.
âAll problems are interpersonal relationship problemsâ from âThe Courage to Be Dislikedâ applies to software too.
A Philosophy of Software Design
It has become a tradition to mention John Ousterhoutâs book in every software design article on this blog. Below is an excerpt I found in the annotated reading list at the end of âTidy First?â:
Ousterhout, John, A Philosophy of Software Design, Palo Alto: Yakmyam Press, 2018
This is the book that got me off my butt writing. Johnâs points are well taken about making design better, but they are presented dogmatically â always keep your code as clean as you possibly can. The question mark in Tidy first? is a direct response.
In a way, âA Philosophy of Software Designâ is more beginner-friendly precisely because of its dogmatic approach.
âTidy First?â reminds me of a teacherâs textbook. It provides a basic foundation for an imaginary software design class, leaving it up to the âteacherâ to expand on the bookâs ideas. In practice, senior and staff engineers often play roles of teachers and mentors. For them, âTidy First?â could serve as an excellent inspiration.
Economics of options
In the final part of the book, Kent Beck draws an interesting analogy between the economics of options and the ever-changing nature of software:
âWhat behavior can I implement next?â has value all on its own, even before I implement it. This surprised me. I thought I was getting paid for what I had done. I wasnât. I was mostly getting paid for what I could do next.
As Kent explains, software design has to reconcile the economic imperatives of âearn sooner/spend laterâ and âcreate options, not thingsâ. On one hand, we want to sell more now, on the other hand, we want to prepare for future change, i.e. create more options.
As money directly affects how we build software, clarifying the relationship between money and software design is a wise idea.
To summarise
Kent Beck, who is famous for inventing Extreme Programming and (re)inventing Test-Driven-Development, has authored a beautiful little book on the daily practice of software design.
The book didnât waste a single minute of my time. Even the introductory sections were packed with useful ideas. For instance, the intro to the Theory part explained how the theory might be actually useful in practice.
Last but not least, it has a beautiful cover. Highly recommended!