Kanban Model in Software Engineering
What is Kanban?
Kanban is a very popular framework for development in the agile software development methodology. It provides a transparent way of visualizing the tasks and work capacity of a team. It mainly uses physical and digital boards to allow the team members to visualize the current state of the project they are working on.
Kanban originated in Toyota in the 1940s. Kanban’s meaning in Japanese is “billboards.” The Kanban board has columns and story cards. The columns are nothing, but workflow states and cards are nothing but a demonstration of the actual task a team member is performing.
When to use Kanban?
Here are the reasons for using Kanban development method:
- Kanban can be used in any domain, and it can be used very effectively in software development. Kanban project management helps in improving the efficiency of the team.
- It is a pull-based system. Tasks are being pulled as soon as an individual is free.
- Kanban should be used when you want to release your work at any time. It requires git branching, but it is doable.
- Kanban should be used when you want to change the priorities on the fly. For that, all you need to do is to put this story on the top of the to-do queue.
- It should be used when you want to visualize your work, and you want to see the progress of your tasks visually.
Kanban Cards
The Kanban system recommends visualization of work. It suggests the use of the physical and the digital board.
The Kanban cards are essential pieces on the Kanban board as it represents the work that the team is working on. These cards will have
- Priority
- Owner
- Type
- Due date
A column in Kanban board represents the work stage, and you can place a WIP (Work in Progress) limit on the column. The WIP limit means the maximum number of cards that can stay on that column.
Since Kanban project management uses a pull-based system, as and when a developer is free, he/she can pull a card from the to-do column to the dev column.
Kanban Board
Kanban Board is an agile project management tool that helps implement Kanban to manage projects for personal and business purposes. It is a physical or digital (JIRA) board designed to help teams visualize their work at different stages and processes. It also helps represent the stages of work with columns using cards.
It has columns that represent the status of the work like
- To-do,
- Dev
- Testing
- Done.
Each of these columns can have cards <=the WIP limit. The cards represent the actual work.
You can use positive numbers to limit work-in-progress, and this limit number can be placed on the top of the columns in both physical and digital Kanban boards. Any individual of the team can manage the state of his card, and the entire team can visualize the workflow. Next in this Kanban tutorial, we will learn about Kanban Workflow.
Kanban Workflow
Kanban Workflow is a set of steps that helps teams to define explicit policies and principles in Kanban. It represents the rules and procedures while the work is going on across various stages of development and delivery cycles. Kanban workflow consists of step-by-step processes between starting and the delivery of a particular task.
The basic principal Kanban follows is, “stop starting, start finishing”. With the help of WIP limits, it gets more work done. There are customizable Kanban workflows and states available in any modern tool like JIRA.
Below are the basic states that many software teams follow for their workflow management.
States | Understanding of tasks |
---|---|
To-do | Tasks arrive here for the first time in this state. |
Ready for analysis | Analyze the task and add requirements completely. |
Ready for development | Analysis completed and development can start. |
In the development | Tasks are being developed. |
Ready for testing | Development completed, and now testing can start. |
In the testing | Tasks are being tested. |
Ready for release | Testing completed; release can happen. |
Released/Done | Released. |
The Four Principles of Kanban
Below are the main Four core principles of Kanban:
- Start with what you have now: Kanban system suggests working incrementally and start with what you have currently. Since one of its practice is to improve continuously, you must improve the system gradually.
- Agree to Pursue Incremental, Evolutionary Change: Kanban recommends an incremental change in the process, and you must not make a big change in the process in one go.
- Respect the Current Process, Roles & Responsibilities: Once again, start with what you have now and change the process, role, and responsibilities in an incremental manner.
- Encourage Acts of Leadership at All Levels: Every individual can act as a leader and provide ideas to improve the efficiency of the overall Kanban system. You should not think that this is a management level activity, and even the youngest member of the team can act as a leader.
The Six Kanban Core Practices
Following are the main Six core practices of Kanban:
- Visualize the workflow: This principle suggests having a Kanban board (physical or digital) to visualize the workflow. Each individual of a team must see his card and cards of other team members. You can move your cards in different columns as per the above image. It brings lots of transparency within the team and also makes it easier to resolve blockers
- Limit work in progress: Kanban is a pull-based system, and it improves the efficiency of a team to limit work in progress and have tasks that can be completed in the given time frame by the team. This WIP limit applies from the beginning to the end of the workflow. You can apply the limit on top of the column using a positive integer.
- Focus on flow: This principle focuses on flow and on any interruptions. If there are interruptions or blockers, they must be fixed permanently.
- Explicit Policies: Policies can be established in a team to reduce the rework and focus on the areas which require attention or where it is more effective.
- Feedback Loop: Feedback loops are very essential in Kanban. It is not just within the team but between multiple teams, coaches, etc. This helps in improving the overall health of the Kanban system.
- Continuous Improvement: This is the core principle of the Kanban system. It states that you can always improve the process, and that will result in better efficiency.
Pull Based System
Kanban is a pull-based method where tasks are being pulled rather being pushed. As soon as you have completed your current card, you can pull a new card from the previous column of the Kanban board.
With the WIP limit, Kanban helps in the improvement of Lead Time and Cycle Time. There should be the least possible gap between these two timings. For example, we have 5 developers and just 1 tester; what will happen in this case? There would always be many cards that require testing, and they will be sitting idle and waiting.
To overcome the issues mentioned above and improve efficiency, Kanban follows the pull-based approach with WIP limits, where there would be a limited number of cards to be pulled.
So, a tester will pull a task from the “ready for testing” stage when he has finished his current task in hand. With the WIP limit in Kanban columns (stages of development), you will not have many unattended cards in the Kanban workflow.
The pull-based system also helps in finding the correct velocity for the team. With the right velocity in place, the team will perform better.
Lead Time and Cycle Time
In Kanban method, lead time and cycle time are widely used, there is a difference between the two, and it is important to understand that to avoid the confusion.
Lead Time | Cycle Time |
---|---|
Lead time is measured as the time between the task’s arrival in your workflow and its departure from the workflow, meaning it has been released. | Cycle time is measured as the time between the task’s arrival in “in progress” state and the arrival of the task in “ready for release”. |
Here it is also important to understand not to include the time it takes between ready for release and actual release.
Cycle Time = Work in Progress/Throughput
In the ideal scenario, the gap between lead time and cycle time should be minimal, and Kanban uses a cumulative flow diagram (CFD) to measure lead and cycle time historical data.
Cumulative Flow Diagram (CFD)
CFD is a chart which is available in all leading workflow management tools like JIRA. This chart measures the total amount of work cards/tasks that entered the workflow and amassed completed cards/tasks over time.
It helps you to have an estimate of average lead time and cycle time for prespecified time.
CFD diagram will give you indicators or problem areas to fix. It will provide you with a clear picture, and based on this diagram. You can correct your team’s lead time and cycle time.
- Lead Time: It is the duration between a new card’s arrival in your workflow and its final departure from the workflow.
- Cycle Time: It is a duration between the card’s arrival in the working state and when the card is ready for release.
- WIP: Work in progress (WIP) limits the maximum amount of work items in the different stages of the workflow.
- Throughput: It is the actual performance, and it tells the actual number of cards delivered in a given timeframe.
Throughput = WIP/Cycle Time
Limiting WIP(Work-in-progress)
In Kanban development methodology, WIP limits the number of tasks/cards which can be worked on by a team member or entire at one time.
The WIP limits ensure that the team stabilizes their work and increases the predictive nature, which is essential in the pull-based system. Usually, the WIP limit decision is taken by the team itself.
Reason to set the WIP Limits
Here are reasons to set the WIP Limits:
- It shifts focus on getting things done as an individual focuses on a single task at a time.
- It helps teams to understand their capacity.
- It improves productivity lead and cycle time.
- It helps in avoiding the piling up tasks (in waiting mode).
- It helps in the movement of the workflow and tasks keep moving.
- It also helps to resolve blockers as an individual don’t switch between different tasks.
Scrum Vs. Kanban
Here are the important differences between Scrum Vs. Kanban
Scrum | Kanban |
---|---|
Scrum stresses on planning. It starts with sprint planning and ends up with sprint retrospective.There are many meetings held which help to assure that the team is aligned with the next steps, priorities, and learnings from previous sprints. | Kanban is open to making changes on the go. It means there is less rigidity and things can change frequently. |
It recommends collection of time measurements made during sprints | Kanban recommends graphs to get an overview of team’s progress over time. |
Scrum no longer asks for a commitment from teams. Instead, it is about the sprint goals and forecasts. | Kanban relies on time-boxing and forecasts. |
It stresses on planning, and so estimation has a very important role in Scrum | Kanban has no mandatory requirements for estimation. |
Every individual has their role and responsibilities. | No set roles so flexibility in term of individual responsibilities. |
The iterations/Sprints are fixed in duration. This duration varies from 2 weeks to 1 month. | Kanban is not based on duration. This thing is measured regarding Cycle times. |
Teams are required to commit a specific amount of work. | Commitment not necessary it is optional for teams. |
In this method, cross-functional teams are important as they can deal with any disruption that may cause a bottleneck in the software development. | Having specialized team is important. |
It is not possible to add items to ongoing iterations. | New items can easily add if the additional capacity is available. |
A sprint backlog is owned by only by a single team. | Multiple teams can share Kanban board. |
Deliverables are determined by sprints, which a set of work must be completed and ready for review. | Products and processes are delivered continuously on a needed basis. So testing and review process goes on simultaneously. |
Scrum software development method focuses on the backlog. | Kanban method entirely focuses on process dashboard. |
Every team member has a specific role in Scrum master decide timelines, product owner set goals and objectives, and team members conduct the development work. | There are no pre-defined roles for a team. However, there may still be a Project Manager; the team is encouraged to collaborate and works together. |
Best for projects with changing priorities. | Ideal for teams with stable priorities that unlikely to change over time. |
Measures production using velocity through sprints. | Measures production using cycle time or the exact time it takes to complete one full piece of a project. |
Scrum requires a complete shift from the traditional model to the Agile Scrum model that would be implemented the project. | Kanban doesn’t allow drastic changes in the project. |
It is an ideal method for projects with widely-varying priorities. | Best suitable for teams with stable priorities. |
In Scrum, the entire team focuses on to collaborate and complete the task to provide quality development work. | Teams work to achieve goals and reduce the time to complete the entire process. Thus, reduction in the time cycle is biggest indicators of success here. |
Scrum emphasis on its schedules; new items cannot be added to ongoing iterations. | Kanban is more iterative by nature as it does not have specific timeframes. So that, new items can be continually added whenever additional capacity is available. |
The total work is done in batches/Sprints. | The entire project is performed on the movement of single-threaded work item flows. |
Scrum master acts as a problem solver. | Kanban encourages every team member is a leader and sharing responsibility amongst them all. |
Scrum prescribes time-boxed iterations. | Kanban focuses on planning a different duration for individual iteration. |
Scrum helps firms to save time and money. | Kanban method focus on continuous improvement, productivity, and efficiency. |
Achieve stable and consistent communication of performance at all levels. | Team members are more likely to accomplish their goals much easier because of visual nature of Kanban boards. |
Project are coded and tested during the sprint review | Team members are more likely to accomplish their goals much easier because of visual nature of Kanban boards. |
It is easier to adapt to the constant changes because of the short sprints and regular feedback. | It is designed for a regular, steady output, major changes in customer demand can make Kanban fail. |
The total cost of the project is minimal which may lead to quicker and cheaper result. | If a task is not correctly estimated, the total project cost will never be accurate. In such cases, the task can be spread over several sprints. |
This methodology requires experienced team members only. So, If the team consists of people who are not an expert, the project cannot be completed in time. | No specific timeframes are allocated with each phase, so team members never get the idea how much time they can take in every phase. |
In this Agile Scrum method, it is easier to deliver a quality product at a scheduled time. | It is designed for a regular, steady output, major changes in customer demand can make Kanban fall. |
The project plan will never disturb even if a team member leaves the team. | If any of the team members exit during development, it can hurt the project development. |
Daily meetings sometimes frustrate team members. | Outdated Kanban board can lead to issues in the development process. |
Large projects can easily divided into easily manageable sprints. |
Summary
- Kanban definition: Kanban is defined as an agile development methodology to develop software, automobiles, goods, medicines, shoes, or any other manufacturing work.
- Kanban uses the Kanban board to visualize the work. It uses columns as stages (to-do, dev, testing, etc.) and cards as a work item.
- Kanban methodology supports the physical and digital board for visualization.
- Kanban is a pull-based system, and cards are pulled from the previous stage to the current stages by team members.
- Kanban method uses the CFD diagram to understand the team’s lead time and cycle time. This chart helps the teams to fix the gap between these two timings and improve efficiency.
- Kanban development methodology, WIP limits the number of tasks/cards which can be worked on by a team member or entire at one time.
- WIP limits shifts focus on getting things done as an individual focuses on a single task at a time.