Empower the Team

…or why sometimes 1 + 1 > 2

Posts Tagged ‘principle

Lean Software Development = Better Agile

with one comment

There is a growing interest today in Agile ways to develop software. There are many approaches that gather some principles under a label and then try to prove the new approach is better than the Rational Unified Process (RUP). I think that any approach that includes some of Lean Software Development principles is better than RUP. However, it is hard to say which Agile approach is better than the others.

I know there is no silver bullet and each organisation should find its way in being agile. Only principles that make sense for an organisation should be employed. But which principles ? Lean or Agile ? To answer this question, I have grouped in one table both Lean and Agile principles, as they are described on Poppendieck’s site and in the Agile Manifesto.

Lean Agile
Meet Customer Requirements
(Now and in the Future)
Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
Deliver Fast
- rapid delivery, high quality, and low cost are fully compatible
- drive down cycle time with small batches and fewer things-in-process
- establish a reliable, repeatable velocity with iterative development
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Eliminate Waste
- eliminate organisational boundaries
- eliminate extra-features
- eliminate churn
Business people and developers must work together daily throughout the project.
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Simplicity – the art of maximizing the amount of work not done – is essential.
Empower the Team
- teams thrive on pride, commitment, trust and applause
- provide effective leadership
- respect partners
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
The best architectures, requirements, and designs emerge from self-organizing teams.
Create Knowledge
Planning is useful. Learning is essential.
- use scientific method
- challenge and improve standards
- predictable performance driven by feedback
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.
Build Quality In
- write executable specifications with Test-Driven Development
- stop building legacy code
- use continuous integration
Continuous attention to technical excellence and good design enhances agility.
Improve the System
- focus on the entire value stream
- deliver a complete product
- measure process capability with cycle time
- measure team performance with delivered business value
Working software is the primary measure of progress.
Defer Commitment
- break architectural dependencies
- maintain options
- schedule irreversible decisions at the last responsible moment

Analysing the table above, I have noticed that the set of Lean principles includes the set of Agile principles. What I find interesting is the form these principles are expressed in:

- Lean: very schematic, using just key concepts

- Agile: more detailed, sentence based.

It reminds me of university years when you go to courses and take very detailed notes because everything seems important. At the end of a semester, with an overall picture of what you learned, you could draw a comprehensive and compact schema containing everything worth knowing.

Agile principles look like my student notes, while Lean principles look like that schema you can draw after you get the overall picture. There is a difference in maturity. Lean has been successfully applied in manufacturing since the 80s. Its principles have been refined over the years to retain only what is worth knowing. Agile is still young and looking for an identity.

Agile emerged as a movement to improve software development. Agile approaches proved to be better than waterfall approaches by applying a subset of Lean principles to software development. However, all Lean principles can be applied to software development, as the Poppendiecks are explaining in their books. Therefore, Lean Software Development seems to be a better Agile approach, because it brings into play everything that proved to work in manufacturing.

Written by Maria Bortes

January 15, 2008 at 1:54 pm

Posted in agile

Tagged with , ,