In this lesson, we're going to learn about,
what are some of those methods that are bringing the lean ideas or lean way of thinking
into software development world and which
of these method are getting traction in recent years.
So in 2003, Mary and Tom Poppendieck wrote this book called "Lean Software Development,
An Agile Toolkit" that outlines lean principles for the Software Development world.
And they also outline lots of tools that you can use to apply these methods.
And after that book,
there were two more books that further enhances your understanding of how do you
apply these principles and
these tools or these ideas into the software development process.
Let's look at the seven principles of lean software development outlined in this book.
So first one, is eliminate waste.
And waste could be defect,
waste could be extra features.
Extra features means users didn't need those features,
or they don't use it,
or it could be context switching and many other type of
ways that exist in software development.
The second one, is amplify learning.
So how can we increase learning or fast learning so you can do continuous integration,
or automated test, or sometimes exploring multiple options?
They can enhance your learning.
The next one, and this is also called create knowledge.
The next principle is defer commitment.
So a lot of times we make commitments when we have the least knowledge.
And so, according to this principle,
try to defer a commitment if you don't have all the information and if it is
possible to defer the commitment to specific technology or a specific architecture.
The next one is deliver fast.
It's also called deliver as fast as possible.
And so, this basically means deliver the software,
the cycle time for your software.
Can you decrease that cycle time?
How fast can you deliver it?
The fifth principle is empower the team.
So empower the team to make the decisions.
Let them make the decision they are close to the work.
The sixth principle is build quality in all the way through.
So sometimes we make the quality as one of the step in the software development process.
And according to this principle,
quality should always be in this core or in your software always present.
And the last one is optimize the whole.
Which means, instead of optimizing unusual steps of your software development process,
try to optimize the complete flow of your software development process.
So along with these seven principles,
the book also outlines 22 tools and these are all tools
that help you apply or implement these principles in software development process.
The next concept that is gaining traction or has gained lot of traction is Kanban and
that was made popular by David Anderson by his book, "Kanban".
And this basically forces or encourages the team to optimize the whole flow,
the current flow that they have.
So it doesn't say that this is a new process that you need to follow.
Whatever process you have,
it encourages you to optimize that flow by
putting work in progress limits on each of the process steps.
And so, it outlines five properties and three principles.
The properties are visualize the overflow,
limit the work in progress,
manage the flow, make process policies explicit, improve collaboratively.
And the principles are,
start with what you do know,
agree to pursue incremental and evolutionary change and respect the current process,
rules, responsibility and titles.
The third concept that is gaining traction is lean startup.
And in this concept,
you're not talking about,
can the solution be built,
but it is about, should the solution be built.
So Eric Ries with his book, "The Lean Startup",
made this concept popular in 2011 and it has four principles validated learning.
So you try to validate your assumptions through actual data,
entrepreneurs are everywhere, entrepreneurship is management and innovative accounting.
So with these four principles,
it helps you quickly find out if your idea is something that is needed by users or not.
And in addition to these ideas,
here are some of the other ideas that are gaining traction in software development world,
value stream mapping, Kaizen,
theory of constraints, cost of delay and many other.