Agile development methodology has been developing rapidly over the last several years. Accordingly, with the growing body of agile philosophy and awareness it has become evident that various approaches exist within the agile development concept, and there are different methods of applying the agile philosophy. Advantages of the most popular agile development approaches have become the subject of discussions recently, giving the audience a more clear view on how to apply agile methodology in practice. There are two popular approaches that are often discussed and compared to each other: Scrum and Kanban. To decide which approach is the best it’s necessary to briefly observe each approach’s differences.
With Scrum a big project is split into a set of smaller parts, and the work is divided into time-limited iterations or sprints. The working team is split into smaller working teams. In the case of a larger organization with several teams working on the same project, it’s necessary to make sure that all the teams know each other’s goals.
This is why it is important for every team to have a representative from another team on it. Plans, or backlogs and current workflow statuses are shared between the teams to provide better communication. There is a person who represents the interest of the buyer, and who is called product owner. Product owner prioritizes the tasks listed in backlog. The workflow is managed on meetings, where the team defines the length of sprints and decides to deliver a ready part of the product after the end of each sprint.
To understand the idea of Kanban it is important to observe the roots of this approach. It was invented by Toyota as an approach to manage production and delivery of parts to their plants. Kanban itself was a card, which was attached to the part. As soon as the part was used, the card was sent back to the plant as a request for a new part. The cards were reused in the cycle and the idea was not to add new cards into circulation, thus avoiding abundance of parts in stock. Applied to software development Kanban encompasses a defined scope. The work is split into small pieces, and the workflow is limited baseding upon the amount of pieces that can be in progress at each workflow stage. The average completion time for every piece of work (or “lead time”) is defined, and the aim is to define lead time as accurately as possible.
There are certain similarities between Kanban and Scrum, namely:
- Prioritization of the tasks
- Self-organization of the teams
- Workflow transparency
- Flexibility and adaptability
- Pulling tasks (instead of being pushed)
- Active collaboration and communication
Here is the list of major differences between Scrum and Kanban:
- While Scrum is based upon iterations, Kanban sees the process of development as an ongoing flow.
- With Scrum the team makes a commitment to what they are going to deliver with every sprint.
- Scrum relies on estimation as a pledge of velocity.
- Cross-functionality of team is required by Scrum. Kanban focuses on time-to-market.