Reading List

Below you’ll find the books that I’ve found interesting or useful. I’ve tried to categorise them to save you some time.

DevOps

DevOps is the meeting point of software development and software operations. These two business areas were previously very separate but, due to changing technologies and observed benefits to bringing these disciplines closer together DevOps has seen an explosion in interest and resultant value.

Accelerate – Nicole Forsgren, Jez Humble, Gene Kim

Accelerate is one of those singular books that so completely changes how you approach your job you can’t help but evangelise it to everyone you meet.

Through surveys of thousands of IT organisations over several years, the authors have identified attributes, processes and attitudes that can reliably determine whether that organisation will be a high, medium or low performer.

While some will not come as a surprise (e.g. empowered teams are less prone to burn-out) others will come as a shock (e.g. there is no significant correlation between the type of system – e.g. monolith or services-based architecture – and delivery performance).

A fascinating and highly recommended read for anyone working in IT.

Release It! – Michael T. Nygard

Release It looks at several case studies in which the author has been involved. These cases are failures of complex and large-scale software systems. Nygard journals how the problems were diagnosed, attempts to understand why the issue came to be there in the first place (far more often circumstance rather than incompetence) and discusses measures you can take to avoid or mitigate those issues.

The patterns and antipatterns detailed in Release It should be in the minds of anyone architecting software systems of any significant size or importance.

Software Design

“Software design is inevitable”, it’s important to ensure that design is explicit, rather than accidental. Accidental software design can lead to incoherence, inconsistency and reduced quality.

Implementing Domain Driven Design – Vaughn Vernon

I had the pleasure of attending a Vaughn Vernon DDD training course in London in 2018 and it massively helped the group of delegates from my company to objectively assess the design decisions we had made in our distributed platform.

This book is easier to read (due to being less abstract) than Eric Evans’ original DDD book and is structured in such a way that it’s great to have on your desk for reference while modelling software.

Software Architecture

Building Microservices – Sam Newman

The book that every architect of distributed systems needs on their bookshelf. Sam describes the technical, organisational and (most important) cultural changes required to improve your chances of microservices success.

Monolith to Microservices – Sam Newman

The inimitable Sam Newman (of Building Microservices fame – see above!) details how to take a monolithic application and break it down into microservices. Crucially, Sam also discusses the trade-offs and alternatives to microservices that will help you decide if you really need to take that path.

People Leadership

Five Dysfunctions of a Team, The – Patrick Lencioni

This is mandatory reading for anyone in my teams. The Five Dysfunctions of a Team is told as an easily-relatable parable about a floundering company with a turbulent leadership team.

The story follows the new CEO as she identifies, calls out and resolves five key negative attributes in her leaders. You’ll recognise the constructive and destructive behaviours of the characters in your colleagues and maybe even yourself.

By the end of the book, you’ll have new awareness of interpersonal dysfunction and mental tools for resolving it. Common feedback a few weeks after reading this is “I was in a situation and I just knew how to do handle it.” – the mental toolkit this book gives you is subtle but powerful.

Peopleware – Tom DeMarco and Timothy Lister

Peopleware focuses on the human aspects of IT delivery – how to make teams feel cared for (by caring for them!), productive (by giving them clear objectives and priorities) and deliver high quality work (by training them and giving them the tools they need).

A unique and fascinating perspective on IT delivery.

Technical Leadership

Mythical Man Month, The – Frederick Brooks Jr.

A must read. A rare compendium of timeless and deeply useful advice for anyone in a team of people (or team of teams!) working together on a common goal.

Brooks imparts wise suggestions around communicating effectively, forming teams and avoiding devastating pitfalls. Brooks backs up all his suggestions with case studies and examples.

Managing Work

The Goal – Eliyahu M. Goldratt

A game-changing novel following the trials of a factory manager learning and internalising the principles of Lean, the Theory of Constraints and realising what the goal of each business truly is.

Project to Product – Mik Kersten

Mik Kersten presents a framework for identifying how your organisation generates value, the flow it takes through your business from raw materials to completed product and how to maximise the efficient delivery of this value.

Miscellaneous

Steve Yegge’s Platform Rant

Steve was an engineer at Amazon in the early 2000s when CEO Jeff Bezos suddenly mandated a complete change of the entire services architecture. It’s a passionate, venty rant and most of it is shockingly applicable to today.