One of the things about doing a PhD is that you read a lot. A lot. Here, in no particular order, are a few of the books I’ve read recently that have impressed me for one reason or another. You’ll probably note that most of them relate in some way to Agile or Lean philosophies – that hasn’t been intentional, its just that of the vast pile of NPD literature I’ve read, those philosophies have tended to be the ones that have drawn me.
Slack, by Tom DeMarco
DeMarco argues that efficiency and flexibility are in nature mutually exclusive goals, and that flexibility is becoming the dominant necessity in the modern business environment. He claims that to have flexibility the organisation needs to have unused capacity, or slack. This allows for opportunities to be taken as they arise, and more importantly for the people who are paid to think – knowledge workers and managers – to have time to do so. He addresses dozens of areas where organisational effectiveness is hampered by the quest for “efficiency”, and postulates that working smarter rather than harder can solve many organisational problems.
It’s something of a rant, but entertainingly written. Personally I, along I suspect with pretty much every knowledge worker and competent middle manager, buy totally into this argument, so I didn’t learn a lot from it, but had a lot of “yes, exactly” moments. It is, however, the sort of book that could potentially change your life if you could persuade your CEO to read it.
Balancing Agility & Discipline, by Barry Boehm & Richard Turner
Boehm and Turner give a high-level overview of the Agile and BPUF (big plan up front) approaches to software development, describe the pros and cons of each camp, dissect some of of the insults the adherents of each throw at the other and offer some guidance as to which criteria and situations might make which approach appropriate. An index gives summaries of many of the methodologies which fit within each camp.
It’s a dispassionate analysis of a debate which has all too many fervent partisans. I found it extremely useful in seeing how the alternatives fit into the big picture of software development, and it’s pitched well for those who are technically aware but not steeped in the lore.
Managing the Design Factory, by Don Reinertsen
Reinertsen uses the analogy in the title to look at the lessons manufacturing – and in particular just-in-time and other lean techniques (though this book predates lean PD as a craze, and the term lean isn’t used) – have for product development. He focusses on the simple implications of tools such as financial analysis, queuing, information, and control theory to show how product developers can raise their game by focussing on what actually matters.
Well written, and avoiding buzzwords and “best practices”, this is easily the single most useful NPD book I’ve read. A followup to Smith & Reinertsen’s Developing Products in Half the Time, I like this one better (though admittedly I read it first). The ground covered is mostly the same, but this one focusses on the (to me) more useful part of it and covers it more thoroughly. I can’t recommend it enough.
Lean Software Strategies, by Peter Middleton & James Sutton
In an interesting contrast to Lean Software Development, Middleton & Sutton look at the application of lean philosophies primarily from the perspective of large scale, mission-critical software, which is – and will probably remain – upfront-design based. They do a decent job of the obligatory “why your current process doesn’t work” section, and then get into how the lean principles “translate” to software, explicitly separating out design-focussed and production-focussed “streams” of the development process. They then discuss a range of tools – both the usual suspects such as QFD and some more obscure ones – for identifying value and waste in the software environment, and close with a few (good) case studies.
It’s a fairly technical book (and the writing style reflects that, which doesn’t help) and as someone unfamiliar with large-scale software I struggled in places. The latter part of the book seems a bit inconsistent with the earlier – perhaps one of the risks of co-operative authorship – and there’s irritatingly excessive reliance on one project (the 382J) for examples. But for an in-depth look at the hows – and more importantly, whys – of applying lean to software, this is a must-read.
One caveat: they don’t spend a lot of time looking at the basics of lean – if you’re new to it read some of the basic lean literature like Womack, Liker, or Ohno, before getting into this.
Flexible Product Development, by Preston Smith
“Innovation is vital to business success, but contemporary businesses are losing the innovation battle. Why is this?”.
Smith answers his own question by arguing that short-termism and the desire for predictability and sure-thing returns are causing companies to shun novelty, and thus miss out on the rewards it can bring. He believes that the solution is to embrace uncertainty, and to do that we must be prepared to change our plans as ambiguities resolve themselves – in short, to be flexible. In this book he looks at what can be done to make NPD more flexible. Drawing heavily on the philosophies and techniques of the Agile software community and on aspects of Lean, Smith advocates flexible scoping, highly iterative design, rapid prototyping, modular architectures, set-based engineering and deferred decisionmaking among other techniques. He looks at how project management can learn to live with emergent projects and at the increased importance of teams and individuals as reliance on plans decreases. A few tools, such as Decision Tree Analysis and Ole Jepsen’s Project Analyzer are discussed, but mostly the book is about ideas rather than specifics.
Most of the value in this book is in translating the lessons of Agile to the non-software community. As an introduction for the non-software engineer to Agile and what it can mean for you, this book is excellent. If you’ve read and absorbed a few of the core Agile and Lean texts there probably won’t be much you haven’t seen before, but as an integration of the lessons and (hopefully) a rallying cry for a new direction in NPD, it has a lot going for it.
Lean Software Development, by Tom & Mary Poppendieck
It doesn’t take much squinting for Agile philosophies and Lean ones to start looking pretty similar. In this book the Poppendiecks build on that similarity, looking at how Agile fits in as a subset of Lean, and how an Agile process can be strengthened by the application of Lean thinking, and by the application of methods derived from Lean Manufacturing and Lean Product Development (i.e. from Toyota). The book starts from the premise that Agile is a Good Thing(TM), so if you don’t buy that you’d do better with Lean Software Strategies, but if you’re an Agile fan then this is a must-read into to Lean. Although little of the content will be new to you if you’re moderately familiar with Agile and have read Reinertsen and Womack or Liker, they do a good job of showing how it all hangs together, and manage to cover a remarkable amount of ground in a fairly short book while still remaining readable. The book is intended as a Lean primer for Agilists, but in my view would work pretty well also as an introduction to Agile for those already familiar with Lean.
And a few more I’m going to comment on when I get around to it……
The Toyota Way, by Jeffrey Liker
The Toyota Product Development System, by Morgan & Liker
Leading Geeks, by Paul Glen
Rules for Revolutionaries, by Guy Kawasaki & Michele Moreno