Books I read in November 2024
A new issue of the monthly segment about books I read. November was a good mix of fiction and non-fiction books. Find your next read in the article!
Here is the monthly segment on the books I read the previous month. November was almost entirely dedicated to nonfiction, with one excellent fiction book to complete the set.
As usual, I cover the books in the order I finished them during the month, and you'll find affiliate links in case you'd like to get a copy of one of them.
Happy reading!
📘 Actionable Agile Metrics for Predictability by Daniel S. Vacanti
Actionable Agile Metrics for Predictability by Daniel S. Vacanti
291 pages, First Published: March 4, 2015
I need to start with a confession: this book was published in 2015, almost ten years ago, and many people have recommended it to me over the past years.
Yet, for some reason, I ignored it until recently and regret it. But since it's better late than never, here I am reminding you that it's never too late to pick up a good book.
The truth is that standing the test of time is a marker of a great book, and Actionable Agile Metrics for Predictability falls in that category without any doubt. I loved every single page of it.
This book is about understanding how to achieve predictability in software engineering teams that use Agile methodologies to plan and execute their work. I am a big believer in making predictability one of the goals of every engineering manager. It helps answer annoying yet fundamental questions such as: When will it be done? While managing a sustainable workload for your team.
In an era when everybody seems to get so worked up about the DORA metrics—for many good reasons and some bad ones—this book reminds us that DORA focuses mainly on the software delivery component of a much broader product development process.
Vacanti illustrates a simple yet powerful framework built on a handful of metrics and tools. Simple doesn't mean easy, though, as maximizing its potential will require much work and discipline.
The book covers the following main components:
Little's Law, and particularly how it relates to software development in the form:
Average Cycle Time = Average Work In Progress / Average Throughput
Little's Law has two main caveats: It applies to a steady system, and work cannot flow backward. Hence, it is essential to build predictability in your system to leverage the law successfully in your project.
Building Predictability using two main artifacts:
Cumulative Flow Charts help you understand whether or not your system is operating in a steady state. The more variability in your system, the lesser Little's Law can be applied accurately.
Cycle Time Scatterplots to help you understand historical performance and the importance of looking at those values from a statistical confidence perspective.
Finally, how to do forecasts that don't require estimates:
This is probably the most potent aspect, as it solves the eternal problem of expensive yet inaccurate estimates.
Vacanti advocates using Montecarlo simulations - through existing tools - to generate forecasts with high confidence and accuracy.
This will only be possible if you've done the work to create predictability in your team first.
I highly recommend this book to anyone running engineering teams looking for better ways to improve predictability in their systems.
The good news is that a second volume covering more advanced techniques came out in 2023.
I'm sure I'll not let 10 years pass before reading that one!
Tidy First? by Kent Beck
Tidy First? by Kent Beck
122 pages, First Published: November 28, 2023
I've followed Kent Beck since early 2007 when I discovered his first books on eXtreme Programming (XP), one of the many incarnations of Agile methodologies.
Even though I do much less hands-on software development today than I used to almost two decades ago, I thought it was worth reading it for several reasons.
On the one hand, I've seen praise pop up in a few places in my online streams. On the other hand, I've always been interested in refactoring and keeping code manageable over time.
Tidy First? is the first of four books that covers multiple aspects of building high-quality software over time. The first book in the series is probably the one I'm least interested in, as it focuses mainly on the individual dimension of software craftsmanship. As I'm naturally more interested in the collective dimension, I look forward to the following three books in the series.
That said, I enjoyed the read. It is a relatively short book that reads quickly, broken down into two sections.
The first section focuses on the tactics and techniques for tidying the code you're working on. There is a lot of common wisdom, but it is always supported by insightful reasoning about why a particular approach should be considered. This section reads more like a reference manual and aligns with much literature on patterns. You will likely want to return to it regularly until the techniques and approaches become second nature.
I was initially confused at why Beck decided to start with the nitty-gritty details without a significant theoretical context to connect them with. Still, I understood the reasons for that as I progressed in the reading.
The second section provides the theoretical framework to help you decide when, why, and how to tidy first and make similar interventions in refactoring to make the code easier to manage in the future. It puts all the pieces of the first half of the book into context.
I particularly enjoyed the reflections on building optionality, how software enables that on a scale never achievable in the physical world, and how software development should always consider NPV in deciding what to do now versus what to do later.
One list of bullet points in particular resonated with me, as I kept thinking about it in the following days:
“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 (as per the previous chapter). I wasn’t. I was mostly getting paid for what I could do next.
“What behavior can I implement next?” is more valuable the more behaviors are in the portfolio. If I can increase the size of the portfolio, I have created value.
“What behavior can I implement next?” is more valuable the more the behaviors in that portfolio are valuable. I can’t predict which behavior will be most valuable, nor how valuable it will be, but…
I don’t have to care which item will be most valuable, as long as I keep open the option of implementing it.
(This is the best one.) The more uncertain my predictions of value are, the greater the value of the option is (versus just implementing it). If I embrace change, I maximize the value I create in exactly those situations where (then) conventional software development fails most spectacularly.
The book's theoretical section contains much more than I can genuinely summarize here without oversimplifying. It's packed with concepts and thought-provoking reflections on the economic value of software.
As I mentioned earlier, I understood the concept of starting with practice before introducing theory better as I progressed.
It follows the top-down approach to learning that has gained popularity in the past decade. I first encountered this approach while following the work of the folks at fast.ai1 — way before LLMs became cool), and immediately realized it better aligned with my learning style.
I learn better when I can first experiment with something concrete, see how it works, and then zoom out to examine the theoretical framework and its underlying concepts. I do not know whether Kent Beck deliberately took this approach, whether it followed a more intuitive approach, or something else entirely.
Or maybe it's an homage to the tradition of recursive jokes, which has been a constant in the Unix/OSS world. You start a book titled Tidy First? by tidying first, explaining the techniques on how to do it, and then exploring the theoretical framework.
Regardless, this book helped me realize how much we've been trained to expect information to be delivered in a particular order and the benefit of exploring alternative approaches more regularly to experiment with different learning methods.
I highly recommend Tidy First? to anyone involved with software development, whether hands-on coding or leading teams producing software artifacts.
I'm looking forward to getting my hands on the follow-up book in the series.
M Il Figlio del Secolo by Antonio Scurati
M Il Figlio del Secolo by Antonio Scurati
841 pages, First Published: September 12, 2018
This is the only fiction book I read in November, and it's been an intellectual pleasure from beginning to end.
Scurati has already published four books covering Benito Mussolini's political trajectory, from his early exclusion from the Italian Socialist Party to his ascent to power and demise.
These are all historical novels. They fall in the category of fiction books, but — similarly to some work from Neil Stephenson — they are obsessively researched and documented to stay as close as possible to reality as it unfolded. This intention is very clearly stated in a disclaimer tht opens the book, where Scurati says:
The facts and characters in this documentary novel are not the product of the author's imagination. On the contrary, every single event, character, dialogue, or speech narrated here is historically documented and/or authoritatively witnessed by more than one source. That being said, it remains true that history is an invention for which reality provides its own materials. Not arbitrary, however.
Summarizing such a massive opus in a few paragraphs would be complicated and pretentious. I'll provide just some high-level information, followed by my comments.
This first book covers 1919 and 1924, shortly after Mussolini was kicked out of the Socialist Party, of which he used to be a loud voice. His rebuttal from the party was mainly due to his embracing Italy's entrance into the First World Conflict.
He then created the Fascist party, a formation that struggled to find its own identity for a few years, hesitating between the origins in the left-wing space and the temptation of teaming up with the right-wing class of agrarians and entrepreneurs who needed an ally to push back against the growing influence of the socialist party in Italy.
The fascist party quickly adopted violence as their primary growth strategy, unfortunately, with great success. Fear and violence were instrumental to his eventually being nominated prime minister in a political context dominated by inaction and lack of courage.
The few who tried to oppose Mussolini ended up paying with their own life, as was the case of Giacomo Matteotti, who was brutally assassinated by a group of squadristi.
The book is wonderfully written and obsessively researched. At the end of most chapters, Scurati included excerpts from the official documents used to reconstruct the story. It's incredibly well-written and a pleasant read. It invites the reader to reflect on the parallelism with what we're witnessing today, almost a century later, which is both fascinating and frightening.
One of the best moments in the book is when Scurati describes Mussolini ascending to power for the first time:
At 11:05 on October 30, 1922, at the moment when he had climbed the stairs of the Quirinal Palace to receive from the King of Italy the mandate to govern her, Benito Mussolini, of plebeian origins, a gypsy of politics, self-taught in power, at only thirty-nine years old was the youngest of all world leaders at the time of his rise, had no experience in government or public administration, had entered the Chamber of Deputies only sixteen months earlier and was wearing a black shirt, the uniform of an armed party unprecedented in history. With all this, the blacksmith's son - son of the century - had climbed the stairs of power. At that moment, the new century had opened and, at the same time, had closed in on its own steps.
During his ascent and many years afterward, Mussolini was praised by most public opinion both in Italy and worldwide. He was seen as the person who would bring prosperity and renew an aging political class to benefit the nation. He'd elevate Italy to new Imperial recognition through his campaigns in Northern Africa. He was given plenty of latitude to not simply reform but literally destroy institutions and instances of the country built on the foundations of preserving democracy as the most just, though maybe not the most efficient, way of running a modern country.
Any parallel with similar trends in today's political landscape is left to the reader.
As I write this, I'm halfway through the second book in the series. These are long books, and reading them takes time. It's an investment.
They remind us to dedicate more time to such endeavors and reduce our overexposure to mentally numbing and emotionally arousing online content.
Creating Software with Modern Diagramming Techniques by Ashley Peacock
Creating Software with Modern Diagramming Techniques by Ashley Peacock
264 pages, First Published: February 8. 2023
A final book to lighten up the mood after the gloomy historical and political reflections.
I need to make a second shameful confession in today's article. I only started using MermaidJS for diagramming recently, despite hearing about it for a long time, and I fell in love with its simplicity and effectiveness.
Therefore, I've been looking for books that will help me explore the tool's full potential. I encountered Creating Software with Modern Diagramming Techniques in the O'Reilly media catalog.
I found the book easy to read and very helpful in my journey. These are a few of the things I appreciated:
All examples start with concrete software examples, making understanding the tool's full potential much easier.
It explores the most common types of Diagrams involved at various stages of software architecture work, from high-level to details, such as C4 and Sequence Diagrams.
It provides a good understanding of the underlying tool — MermaidJS — without making it tedious or too detail-oriented. It's not a reference manual; it's more a list of recipes that help you discover what the tool can do for you while leaving it to the official documentation to be comprehensive.
It balances strategic approaches and diagramming techniques well. It covers a lot of ground regarding communication and conveying the correct information through diagrams.
The author resisted the urge to make it a book about all aspects of software architecture. The content contained so many potential rabbit holes that I almost felt the author's struggle as they let go of the itch instead of being carried away in endless side quests.
If anything, I could have lived without the last chapters on deploying MermaidJS markdown to GitHub pages and dedicated more space to exploring other types of Mermaid diagrams. I guess different people will find them more interesting than I did, as it often goes with such books. You can hardly please everyone with all the content.
I still want to complete some of the recommended exercises for a project I'm working on, which will force me to return to it in the future.
This book could be a valuable addition to your library if you're using MermaidJS or are interested in getting started.
If you found this valuable
If you found this valuable, here are other ways I can help you and your company:
Follow me on LinkedIn for regular posts on tech leadership throughout the week.
Contact me if you're interested in a Fractional CTO, Technical Advisor, or Board Member for your company.
Work with me 1:1 as your mentor and coach. I love working with driven and competent people in their specific situations and providing personalized guidance, insights, perspectives, and support.
For more on this, you can check out this interview with Rachel Thomas, co-founder of fast.ai: https://hackernoon.com/interview-with-the-co-founder-and-researcher-at-fast-ai-dr-rachel-thomas-b00e1702a28a
I love mermaid and use it often. Mermaid has a very good documentation in their website. What is the added value of the book compared to their documentation in your opinion?