Monday, September 02, 2019

Waterfall vs Lean vs Agile vs Scrum vs Kanban

If you work in software development, chances are, you've heard of all the terms above.

Over the years, all of these terms have turned into buzzwords, with people using them witout even understanding what they really stand for. So, its common to hear things like waterfall is bad, or asking that a scrum team adjust their changes for newer requirements, or use kanban boards to keep track of stories.

In this post, let's have a look at what all these terms stand for.

Waterfall:

This represents a unidirectional flow of development process, where various steps are taken one after the other, in order. So, first goal is to do requirement collection, next an analysis of those requirements, followed by designing of solution, which is finally coded, implemented and integrated, to be released to the customer.

Waterfall works great when the requirements are static. That is, they are the same on the day of delivery, as given on day of initiation. However, most business requirements and projects are not static. Each of the steps above take time by themselves. Businesses are today much more dynamic, and even the customers are lot more demanding. Which is why, taking feedback becomes a necessity, and this is what is the achilles' heel of waterfall model is.

Lean:

So people looked into other domains to find out what stands out in other industries to make the process more efficient, and the final product less defective. One existing mecahnism they found was the Six Sigma and Lean management.

Six Sigma is a disciplined, statistical, data-driven approach for continuous improvement and eliminating defects in a product. The six sigma method was inspired by happenings at Motorola. Soon, within the larger industry, most notably Japanese carmakers, lean management starting taking hold. Lean management stood for eliminating waste, and this principle got adopted to the software industry. (Just like how design patterns were originally inspired from construction industry, or how biology inspires many genetic algorithms).


Agile:

However, lean also did not fulfill all the aspirations. For, technology is ever changing, and in the technology world, the tools, the requirements, the customers, and the product, all change very quickly, as compared to other industries. So, the existing strategies started feeling heavy, with all the business requirement documents, technical requirement documents, technical specification, change management document, and a lot of other processes.

Many lightweight software development frameworks starting coming up to the fore, to counter such heavyweight methods, as, one size does not fit all. The result was an umbrella of methods, like Scrum, Extreme programming etc. Even later, newer methods such as Behavior Driven Development, Test Driven Development, Kanban etc kept coming up.

Agile gained popularity as this umbrella above, with the coming up of the Agile Manifesto.

Scrum:

Scrum is one of the agile methods. Scrum is a software development framework. By that, it means that Scrum provides a designated structure in which a Scrum team must function - it provides the roles (product owner, scrum master, scrum team), the meetings, and even what interactions should happen between the different members.

Today, scrum has come up as one of the popular agile framework for software development, with its focus on incremental delivery and constant iterations to deliver a requirement every spring end

Kanban:

Kanban is a lean management tool that got picked up from the car maker Toyota. Kanban is used to achive JIT (Just In Time), and the focus of Kanban is to keep Work in Progress (WIP) to the minimum. It is very useful in projects where the work can be heavliy broken down into equal sized tasks. However, many do not consider it to be a complete software development method.

No comments:

Post a Comment