What’s the main difference between Lean software development and agile methods like Scrum? Until recently, that question has not bothered me at all because I didn’t really care. The principles of Lean software development has helped me to focus on value and waste in software development. Agile values, principles and practices are useful tools when developing software.
But, then it occurred to me that there is really another difference, I’ll try to describe my thought by raising the question to you and your development team: What are you actually selling to your customer, how do you create value?
I’ll give you three alternatives: 1) are you selling a plan, 2) are you selling a team or 3) are you selling a product.
Selling the plan
Selling a plan, to me, is not agile or lean at all. Let’s say that the customer would like to have some kind of software development, and the intentions, business case etc. are all valid and correct. The customer contacts development company MasterPlan.Net and they will create a plan describing how they are going to create the value needed.
The assumption here is that if we follow the plan, then something valualble will be created. Let’s look at the other part:
Selling a team
When selling a team; the customer can choose to use the team in any way he like, if it is to develop a piece of software, build a house etc. in theory it does not matter.
If the customer has a vision, a product backlog and uses agile methods such as Scrum, then there will most likely come something valuable out from the team every 2-4 weeks.
The cost for producing the software is based on the cost of the team and the number of iterations needed by the team to create a version that meets the need from the customer.
This scenario is much more agile and will respond to change much better than the scenario with the plan. On the other hand, what about…
Selling a product
Let’s assume that there is a software system, and we call it a product. Each feature in the system flows through a value creating process including actions such as development, testing, and deployment.
The challange here, is to transform business needs into business values as efficent as possible. And the development process is a description of the current best way of doing that.
To do this efficiently, a motivated, complete team is created. With the ability to move items through the process. The team uses the concept of Scrum to work in iterations. The team tries to minimize the number of things in process the size of the items in the process so that the speed is maximized.
In the perfect world, features are delivered just-in-time, and development teams pulls work from the input queue. Or even better, it can be seen as a Kanban system… where the order is added last in the process… that’s where the motivations for test-driven development is really clear.
So what’s the point?
Maybe, I’ll really need to describe this in a better way. But for me this states the real difference between Scrum and Lean. Do you see the difference?
Scrum is the framework for helping the team collaborating, to make things flow through the development process.
Lean Software Development, is about creating value, make things flow in the value stream from business need to business value.
It is possible to use waterfall project methods to push things thorugh the value stream, but what you’ll see then is a number of large queues between for example development and test etc. Ie. waste in the lean world… so that is something that we don’t like.
SO, again, what’s the point, Agile methods and Scrum are useful practices to enable Lean Software Developent. For me, that complements the perspective of Lean being a foundation of principles guiding software development.
So, is Lean Software Development applicable when you are developing software in a non-product line environment? Yes, I’ll believe so but more on that in another post. What do you think?
cheers!