Incorporating Kanban Principles In Software Development
/Kanban is an agile framework that involves constant communication amongst team members to ensure obstacles are minimized, especially while projects are ongoing. It also involves matching the amount of work in progress to the team’s capacity.
The kanban board is a tool used to visualize work and optimize the flow of work among team members. The team’s work is visualized and any blockers and dependencies are promptly identified. The workflow is clearly displayed on the Kanban board with markers for To-Do, In Progress & Done. Kanban places a huge emphasis on the transparency of work and real-time communication of capacity.
Every work item is represented using a card on the Kanban board and the progress of work is tracked from To-Do, In progress to Done. The Kanban card typically contains information such as the work item, who is responsible, description of work and how long it will take.
Some benefits of Kanban
- Planning flexibility: Any changes outside current work items are not expected to have an impact on the team.
- Shortened cycle times: Overlapping skill sets amongst team members leads to smaller/shorter cycle times. Teams typically employ best practices such as code review & mentoring to share knowledge. Cross-functional teams are thus able to back each other up to ensure projects are not delayed.
There are some basic differences between scrum and kanban, however. While the scrum framework defines roles for the product owner, scrum master and development team, kanban has no pre-defined roles. Also, scrum emphasizes releases at the end of each sprint, if approved by the product owner, while kanban emphasizes continuous delivery at the team’s discretion.
Some key points have been highlighted below for kanban implementation:
In software development, the team or organization can use a kanban board to gain more insights into the workflow, engage the team members and manage project tasks.
The kanban board illustrates the work process from left to right. Each swimlane or column represents a major stage within the work process. The team may design each column based on their requirements.
An important feature of kanban is its work-in-progress limit. This implies that each swimlane should only contain a limited amount of work tasks, thus allowing team members to focus and identify the problem areas that cause delay. Limit the amount of work in progress and never exceed the limit. Proper allocation of resources and team members aids the creation of realistic work-in-progress items.
The kanban framework relies on just-in-time production concepts when scheduling work. The main idea is to do the right tasks at the right time. This implies that while tasks are not expected to be done earlier, neither are they supposed to be done later. In software development, this means the team should only begin tasks when they have the resources to start new projects. This makes sense since there is no point in starting new tasks if the work-in-progress list is already full and you do not have the time to get new tasks done.
User story maps are an interesting and collaborative way of eliciting user requirements. One of the reasons why I find it so powerful is because it provides a unique approach for aligning discussions relating to the user, their goals, the process that supports the accomplishment of their predefined goals; and the requirements that need to be addressed to solve business problems.