Some Books Were Read: 2021
Here are some notes on a few books I enjoyed and learned from in 2021, not all of which are books published that year.
American Icon, Bryce Hoffman. I enjoyed this well written, part business history part business case study. Much of the theme is on how difficult it is to graft customer centricity and a values based model, onto an operational one based on organisational fiefdoms. One negative in this regard is a slight over-emphasis on Mulally’s charisma, with perhaps not enough emphasis on being an intelligent, relentless operator. In that vein, one of the more revealing parts was how he negotiated terms with United Auto Works on healthcare and benefits. By 2010 Ford had started to turn around a dire situation it did well to survive, into profitable quarters, all in large part due to Mullaly, and his restructuring of operations and company values. Like The Goal, but based on true life events and with finer dramatisation.
Values, Mark Carney. In 2017 I covered the excellent yet stark The Retreat of Western Liberalism by Edward Luce, saying “the book outlines the case that the advance of western liberal and democratic programs are no longer givens”. It offered situational clarity, but few answers. Mark Carney in Values has some ideas. The main theme is about the importance of social values beyond transactional value. The deeper ideas are about the need for trust, fairness and resilience away from market fundamentalism. The book goes back into economic philosophy (Smith, Ricardo, Marx, even Hobbes) as well as the history of monetary standards to the present day, citing failures and lessons learned, including those applied in the decade since the financial crisis. He is quite critical of the idea that market pricing and commodification does not alter the nature of goods—“economics does not rest apart from the world”. As important as the north star the book outlines, is who is writing it Carney has the unusual privilege, and arguably, unique vantage point, of being a Central Bank Governor for two countries, as well as having to work through the debacle that was the financial crisis. How to get to what’s next is not outlined (this is not that book), nonetheless Values left me more optimistic than it found me. Book of the year.
Hands On Machine Learning 2nd ed, Aurélien Géron. The opening chapters provide an accessible (for software engineers) overview of machine learning techniques [1]. Coverage is good, going through techniques you’ll tend to use in practice, such as forests, and not just deep learning, although there is a tempting coverage of GANs at the end. A helpful element of the book are tips on how to get the most out of the frameworks and in particular tuning models. The parts covering testing/evaluation and loss functions are particularly good, as are the sections on trees, forests and the explanation on dimensionality reduction This is one of a handful of ML books that get the mix of theory and practice right, while retaining shelf life. I read this on Kindle and visually it held up: the code, graphs, architecture diagrams and equations rendered well. But the stand out is how the book’s exposition moves seamlessly between theory and practice, going from equations to code virtually in the same page. Hands On Machine Learning is highly recommended for any software engineer that’s curious about the field, or any researcher wanting to understand TensorFlow, Keras, and scikit-kearn better.
Software Design for Flexibility, Flexibility in the software industry is often associated with constructs like polymorphism (swapping), tests (modifying), or entrypoints (plugging). This is a different take that emphasises functional composition and combinators: combining hunks of code without rewriting them. For example, chapter 3 presents the idea of creating functions that discards or adds arguments for other functions, which then are generalised to the idea of adapters—“rather than rewriting a program to adapt it to a new purpose, it's preferable to start with a simple and general base program and wrap it to specialize it for a particular purpose”. The text associates composition with mathematical functions while steering clear of category theory. I found chapter six’ take on layering very interesting and am looking forward to going back to it The book, uses Scheme which may not not be familiar to everyone (and frankly, drastically narrows the potential audience), so a useful thing to help absorb the ideas is to try writing the code examples in your preferred language. The book’s core premise is unusual for its era—the idea of an additive approach that prefers recomposing rather than reworking code, is somewhat niche outside the use of libraries. Nonetheless, I think this, like SICP, which it echoes, from the cover to the cast of characters, is fundamental and one that will hold up to re-reading over the years.
Crafting Interpreters, Robert Nystrom. This is a wonderful book that succeeds on the intent of making the topic of interpreters accessible to the reader. I would have to go back over a decade, to Language Implementation Patterns for something comparable in technical quality. Also, even more delightful as the kind of topic that sees less and less coverage as the industry depends more and more on higher level abstractions and tools. The first half of the book covers a tree based implementation of a language in Java. That alone would have been a fine book, but Crafting Interpreters has much more to offer. The second half of the book, goes into performance using a stack based approach in C that touches on bytecode, memory management, virtual machines, and simply excellent chapters on garbage collection and closures. Like Software Design for Flexibility, this one I think will hold up, and I will very likely pick up a print edition [2]. Nystrom is a fine writer with a personable style that brings the reader through not just some complex topics, but also those of design choices (such as the implementation of peek(), or statement terminating semi-colons) and having to deal with special cases (such as the coverage of operator precedence in chapter six).
The Secret of Apollo, Stephen B. Johnson An eye opening book that goes practically all the way back to covering where roles like engineers, managers, scientists came from and how they were expected to be used. Today we take them as necessary givens and distinct specialisations, but this reminds us, at one point we made this stuff up, in order to solve complex problems and achieve ambitious goals. The book details how specialisations evolved and how they (not always successfully) interacted over successive military and space programs. It outlines Systems Management as the discipline that ‘bureaucratized the R&D process in the middle of the twentieth century’ to obtain more predictable outcomes, and Systems Engineering using John Small’s definition: the ‘coordination of several engineering disciplines in a single complex effort’. It does a good job outlining the tensions between specialists and the time and budget constrained nature of Apollo. The ending is a bit rushed, but interesting nonetheless how the models defined in the United States, had much less success in Europe. There’s a lot to learn here, especially for a generation raised on Agile.
Working Backwards, Colin Bryar, Bill Carr. Likely the best overview of how Amazon likely functions in print, as opposed to gleaning bits and pieces from online posts and articles. There is surprisingly little solid information about how Amazon operates and develops products, it’s mostly folklore or interpretation of Bezos’ shareholder letters. Much of the focus will be on the written document and the titular working backwards process (and hopefully in doing so, treating this book as a guide rather than a blueprint). But from the point of view of software development, the content around two-pizza teams and moving past that to single-threadedness in the chapter, was the most informative (the observation that the biggest predictor of team success ”was not whether it was small but whether it had a leader with the appropriate skills, authority, and experience to staff and manage a team” being one insight), along with the annual planning process.
The Pyramid Principle, Barbara Minto. A new edition of this classic was published in 2021. Unlike most books on writing or business books in general, this is best viewed going in as a textbook. It’s a dense read and may feel dry and dated to some—it’s also not available electronically. On the other hand, if applied, it will improve your ability to write clearly and persuasively. It breaks with the idea that writing is thinking and instead focuses on arranging narratives in a structured, reasoned way, that is optimised for the reader. Also useful for first, those who have to read a lot as you’ll be better equipped to analyse arguments and identify confused reasoning in text, and second, those who have to analyse a situation and identify a recommended path forward (hence it’s a been a go to for consultants for decades).
Rebecca, Daphne du Maurier. I was lucky enough to receive Folio Society edition as a gift [3[. Having somehow managed to get this far in life without reading this classic, I was surprised at how modern it felt in terms of pacing, interior narrative and dialog structure (if not the dialog itself). I had expected something more gothically gothic, but it often felt like reading a noir ghost story from Chandler or Hammett, as the nameless narrator becomes obsessed, then fearful then haunted by the (at the beginning) long dead Rebecca. Danvers ghoulish, suffocating presence was quite something.
[1] It helps a lot that my favourite definition of machine learning, from Tom Mitchell’s classic text, was cited: “A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.”
[2] I’ve seen plaudits for the typesetting and layout of the book. Personally I would have preferred foot or chapter notes to side notes, as first, less distracting, and second, avoiding having to switch orientation after every single page. I read this as a PDF and I imagine the layout works only in print.
[3] The Folio Society produce the most beautiful books. They’re a joy to hold and read.