A student at Fullerton University in California e-mailed a lot of people on the Lean Software Development mailing list with some questions for his masters thesis. Since I had a little time on my hands I wrote him some lengthy answers. Having done that I though I would share them here. I’ve removed a few questions because I don’t think the question or answer are particularly interesting.
1. How would you define lean development?
The strictest definition of Lean Development would be to say it is a methodology proposed by the Poppendiecks (Lean Software Development)based on lean manufacturing and product development. This definition is useful for deciding who is doing lean and who is not but is probably too strict.
Another definition of Lean (Software) Development is that it is the application of the principles of Lean Manufacturing ( The Machine That Changed the World, Womack, Jones & Roo ) and "Knowledge Based Product Development" (Product Development for the Lean Enterprise, Kennedy).
Personally my definition is:
- Lean Software Development is one application of the principles of Organizational Learning to the software development environment.
- Learning Organizations may come up with a different development way of thinking but I am not aware of any others.
- Agile Software Development is a further refinement from principles of Lean to practices.
- The various Agile development methodologies are further refinements of these with further practises.
- Underlying everything is the idea of a Learning Organization (Senge, Argyris, etc.)
So you can create a pyramid, more general at the bottom, more specific at the top:
- XP -
|-> ||Specific practices|
-- Agile --
|-> ||General practices|
---- Lean ----
|-> ||Ways of thinking|
To put it another way:
- XP (or SCRUM, or DSDM, etc) are a specific set of practices for doing Agile software development
- Agile software development is set of principles and a specific set of lean practices
- Lean is a set of principles and a specific set of learning practices
- Organizational Learning is a set of principles to which some authors have added some practices
Note that you can, in theory, adopt an Agile methodology with very little learning. You could simply adopt, say, SCRUM practices and through focus and authority make people use these. You probably would see some benefits however the team would not be learning and future change would not come naturally.
I examined Software Development as Organizational Learning for my own Masters dissertation
2. What percentage of developers do you think are using Lean Development approach?
Very difficult to say, I think some ( less than 10%) will have picked a few practices, I think few will be working in a Poppendieck or Kennedy like way - maybe less than 1% on this definition.
On the other hand, I think many are undertaking some organizational learning and using some agile practises but progress is very slow.
3. How has the usage increased from previous years?
4. Why do you think the usage has increased?
- The term is now commonplace thanks to Poppendiecks and others.
- Lean (and Agile) tell a very good story, developers want to work like this. Managers see the parallels with lean manufacturing so also hear a good story. It is an aspiration change.
- Natural selection: those who "get it" will out compete competitors.
5. How do you expect the usage to be in the next five years?
Slowly. I see an Agile backlash building, I hope lean will not be caught in it too but I think it will.
6. Have you found resistance or pessimistic thinking towards Lean usage?
Yes - "Idealistic", "Will not work here"
7. What kind of unintended results have you seen by using Lean?
Lean relies on exposing problems so they can be fixed. (Removing "camouflage" to use Argyris term and rolling back what Senge would call "shifting the burden.")
As such it looks like things are getting worse to start with. Problems that were hidden are now apparent, problems that could be ignored before need fixing now. Therefore, Lean looks like it is making things worse before things get better.
When developers or junior managers get it but senior managers don't there is a mismatch. Junior managers pay a heavy emotional toll and sometimes pay with their jobs.
8. What suggestions do you have for a shop considering Lean?
- Emphasis the learning.
- Take it from both ends: senior managers down and shop floor up.
- Get help, specifically coaching.
10. Can Lean development be applied to non-Agile (i.e. waterfall) methodologies?
You could make a waterfall leaner but I doubt we would ever call it lean.
In suggesting a lean waterfall you are saying: "We want to improve X but we don't want to change Y". You have put boundaries on the problem. In doing so you are putting some things out of bounds. This means you can't engage in Systems Thinking properly and are likely to come up with sub-optimal processes.
11. How difficult is for a team become Agile and Lean after being non-Agile?
Very difficult. You can start in a small way but you need to break with the past.
13. What are the key indicators to tell if a team will succeed in becoming Lean?
The presence of a learning culture:
- Is the team holding retrospectives?
- Is the team changing their process?
- Is the team improving?
14. Is it better to be Lean and then Agile or Agile and then Lean?
Given my definition above this question does not make sense. There is no temporal relationship.
If you are Agile then you are (to some degree) Lean. If you are Lean then you are Agile.
15. What did I forget to ask you about lean? Is there something about lean that you consider very important that we did not discuss?
The "change question". We know how to be Lean and Agile but how so you change the organization?
Then, when you have become Lean how do you carry on changing?
Organizational change is more important than the practices. The practices support learning and change but change is not a rational thing. You don't do a value stream map and solve everything.