I’ve been asked to do some presentations and workshops around lean and software development, which gives rise to some reflections on what’s currently going on around ‘lean’ (thanks to Willem for the good conversations on this topic and for pushing me to publish this blog entry )
Lean is becoming more and more of a hype, see people talking about lean methodology, lean certification, religiously implementing practices and tools like Value Stream Mapping, A3, Removing Waste (hey, I don’t like you you don’t add value, you’re waste!)
Lean is however not about practices & tools. It is primarily a philosophy, a way of looking at your organisation. Lean is about continuous improvement and developing the capability of the organisation and the people capability for improvement (see the Toyota Kata for more about this system that underlies lean).
Lean is inherently empirical, focusing on learning to see things as they are, not as they ought to be. Lean manifests itself in different contexts with different sets of principles and associated practices and tools. Lean works out differently for production processes, for services, for startups, for product development, even for software development there are different interpretations (listen e.g. to the Devnology interview with Mary and Tom Poppendieck)
I notice that a lot of conversations take place at the level of practices and tools, which are the most concrete manifestations. It is much easier to talk about tools, lean ‘methodology’ or even having a check list of observable lean practices. There is no general lean methodology, although different organizations can have a situated, continuously evolving methodology of their own, guided by lean principles.
Practices and tools are manifestations of principles and philosophy in a specific context – they’re specific solutions to specific problems in a specific context. They might or might not work in another context, even if that context is similar. But you won’t know if something works until you’ve applied it and got actual feedback from practice. This is related to what Dave Snowden writes about innovation diffusion:
Context is everything and often neglected. Something that works in one context may not work in another even if they are very similar. Ideas and practices need to have enough flexibility to adapt and ideally to combine with existing practice and other ideas. It means that pilot approaches have an inherent problem in that the initial success results in a specific context with a lot of effort. It won’t necessarily scale.
…and even when things worked out when you applied a practice or tool in your context, then you should be wary of confusing correlation with causation (doing the practice and having success does not imply a causal relation, it could be just correlation or even coincidence) and the retrospective coherence trap (everything looks logical and explainable in retrospect, but this does not help in predicting how things are going to work out).
Practices and tools are most concrete and easier to talk about, but they are the least important part of lean. They are highly situational, almost random in a sense. To quote Dave Snowden again:
There is a paradox in that highly codified, highly abstracted material diffuses best (…), but is the least likely to be innovative or novel.
So people get stuck in tools, practices, methodologies, instead of focusing on philosophy and principles. The philosophy and principles are generative, setting up conditions that let a lean system emerge. Kanban for Software Development as presented by David Anderson and others is a good example of this.