Below you’ll find the books (and a few videos) 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.
You can read the latest State of Devops report here.
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.
Enterprise Integration Patterns – Gregor Hohpe, Bobby Woolf
Even more relevant now in the cloud / microservices / serverless world we live in today, EIP is mandatory reading for all software engineers.
Working Effectively with Legacy Code – Michael C. Feathers
The best guide for anyone working in a system with significant levels of technical debt and legacy code.
Imagining the worst possible system – one which nobody is an expert on, no documentation exists, and with unreadable code – this book provides tools and heuristics for finding ways to break the problem down into smaller chunks. One of those most powerful concepts is “seams” – natural boundaries within the system, like the seam of a piece of clothing – which can be carefully teased apart into separate subsystems.
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.
Turn the Ship Around – Captain L. David Marquet
Simply one of the most impactful books I’ve ever read.
Not your average theoretical people management books but a real-life journal of taking a dysfunctional nuclear submarine crew with the worst performance scores in the entire fleet and transforming it to the highest scoring vessel in the US Navy in only 18 months using techniques that conventional wisdom says shouldn’t work. But they do, and I’ve even tried them successfully myself.
An overview:
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.
Organisational Design
Team Topologies – Matthew Skelton and Manuel Pais
Another must-have book on the shelf of any leader responsible for organisational design.
Matthew Skelton and Manuel Pais have produced the canonical text summarising the last 15-20 years of collective learning about building effective socio-technical teams. Team topologies goes beyond just saying “break down siloes!” and “more cross-functional teams!” to diving into generalist teams vs. specialist, long-running teams and embedded experts. And most insightfully, provides a set of powerful but simple interaction models between them.
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.
Random fact: I bought my copy at Powell’s, the world’s largest independent book store in Portland, Oregon.
Cynefin – Dave Snowden and Friends
Cynefin provides a framework for thinking about the complexity of organisations and systems. You can get an overview of Cynefin at the video below:
Business Transformation
Whether you’re looking to remove waste by adopting Lean, maximise flexibility and time to market with Cloud or embracing iterative ways of working and fast feedback cycles with Agile, businesses need to transform and these books have helped me lead and contribute to large transformation programmes.
Cloud Strategy – Gregor Hohpe
A wonderful book, written in Gregor’s unmistakable tone of voice, as a series of problems that are posed to the reader and how to use Cloud features and capabilities to solve them.
Lean Enterprise – Humble, Molesky, O’Reilly
A practical, problem-solving-based guide to rethinking large complicated organisations.
This book is essential reference material for anyone tasked with revolutionising culture, ways of working and moving beyond traditional project-based, waterfall thinking.
Humble Consulting – Edgar H. Schein
Edgar H. Schein brings together lessons learned from a lifetime of business, management and technical consulting into this easy-to-read book about a new way of working between consultants and clients based on authenticity and empathy.
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
An enlightening read demonstrating why changing from project to product thinking is so important for growth and competitiveness.
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
Thinking in Systems – Donella H. Meadows
A delightful read providing a set of mental tools for making sense of the world.
Donella’s masterpiece will leave you with a new take on the world’s most complex systems, from the economy to groups of people.
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.
Blogs I Read
If I’ve missed your blog, or a great blog you read, please let me know at readinglist@richstokoe.com
- Gardeviance – Simon Wardley’s Blog
https://blog.gardeviance.org/
The personal blog of Simon Wardley, self-proclaimed Thought Lord and inventor of Wardley Maps