Waterfall to Agile — How Kanban can help move to Agile without causing disruptions?
Agile is the buzz word in the market and irrespective of whether someone knows well enough about Agile or not, there is a rush to move towards it. A major challenge in achieving this is the disruption and size of change it initiates in the organization. This also leads to friction while making this transition from waterfall to agile due to current mindsets. Here are some of the major challenges one has to face if an organization has to set up an agile competency:
✓ Agile training required for team members
✓Agile coach required to implement or make agile competency operative
✓ Mind-set changes required on customer side and senior management level
✓ Overcoming myths of implementing agile
✓ Lead time to make Agile effective/fruitful
Due to the above-said reasons, some organizations refrain to take up Agile itself and just manage with the current traditional approach. This is where organizations have to make a conscious call. At a time when agile is becoming the new norm, with 97 percent organizations using at least some agile principles into the management of their software development; you certainly do not want to be left out. If you don’t move to agile, you fail to stay in tune with changing market dynamics which compel the organization to move towards Agile approach. Most organizations understand the opportunities which can open up by moving towards agile and we shall discuss further how best this can be done without causing limited disruption.
What is the way out?
Kanban is one approach which is agile in nature and does minimal disruptions (if not any) to existing process, when implemented. Is this really possible? It’s just the nature of Kanban which makes it happen. Kanban doesn’t answers how the work should be done, it doesn’t matter what kind of process/methodology you are following. You can implement Kanban over it to manage the work. There are four basic principles of Kanban.
- Start with what you do now - Emphasis is on minimum changes to the existing setup
- Agree to pursue an evolutionary approach to change — Change for good
- Respect current roles, responsibilities and job titles
- Encourage acts of leadership at all levels
These principles in themselves are a boon as they speak about appreciation for what we have to start and gradually transition towards agility.
Kanban has 6 core practices which help in implementing Kanban:
- Visualize the flow of work
- Limit WIP — define as per your capacity
- Manage Flow
- Make management policies explicit
- Implement Feedback Loops
- Improve Collaboratively- using models and scientific methods
The transition from Waterfall model to Kanban
Let’s try to understand these practices when implemented into a waterfall model. Waterfall model has a Queue of stages where linear sequential phase transition happens. When the first stage is completed, the second one is picked up as shown below.
In Kanban, the focus is on making the work visible and limiting the WIP. Let’s try a step-by-step approach to implement Kanban over existing waterfall.
Step 1 — Visualize
By making all the stages visible as much as possible with the help of Kanban Board, the first practice can be made into reality very easily. The benefits of this approach are many which we shall discuss over the course of this article, but the disruption to existing flow is very minimal. Any manual board or a handy Kanban Software Tool is enough to do this. The entire requirements chunk will be at first stage as the “To Do” chunk, which will be taken by the team of designers. After Design is done, it will be followed by coding, testing and finally “Done” stage as Deploy. In Kanban, the items, be it Req, Des, Mod, Test Module (TM) will be pulled from previous stage as per the capacity available in the current stage. For example, if Designer has bandwidth, s/he will pull a requirement and complete the design, similarly if developer has bandwidth he will take a design item and create module.
Step 2 — Limiting WIP
Kanban defines limits in each bucket i.e. it’s defined how many items can run concurrently in different stages.
Traditionally we try to complete tasks in a sequence as per the overall process flow. With the implementation of limitation in WIP, the focus is to move items from “in door” to “out door” quickly by making the path smooth. Making the path smooth here is making resources available. To achieve this, we need to define how many items can be at design, code, test etc… as per the bandwidth of resources. It controls the cycle time of activities. This helps in getting flexibility and also adopting agility in the way of work. Work is happening in chunks of requirements/design/coding/testing, which is nothing but incrementally iterative nature of being agile. E.g. If we have 1 designer who can work on 3 related items in parallel, he will pull say Req1 , Req2 & Req3. Until s/he, move at least one of this design item into next stage i.e. coding, no further requirement can be pulled. Think of a “Box” which can handle only 3 items. Now after putting 3 items, box is full and to fit any further item, at least one of the items should be taken out. This limit on WIP is valid for all the stages of the Kanban and helps in controlling the flow.
Step 3 — Manage Flow
As we discussed in Step 2, Kanban focuses on item’s cycle time i.e. how much time item was there in the process of building. Kanban can be visualized as a pipe. It’s important to measure and optimize the flow in that pipe. To implement this in waterfall scenario doesn’t need much of extra effort as by making the things visible, it will become evident to the team. Bottlenecks will be easily highlighted. However if an item is staying at one place for a very long time, one has to check the reason and clear the flow to make space for next item. This kind of flow management will ensure that bottlenecks are identified and then optimizing the flow by setting the limits and sequencing/prioritizing ensures that bottlenecks are removed.
E.g. let’s assume Module 3 is at coding and stuck from 2 weeks there, Due to this testing of TM 1 & TM 2 is also struck as these 3 modules are related. Testing team need Mod 3 to complete testing of TM 1, TM 2 & TM 3 to kick off Rel 2. Now due to this one module, full flow is blocked and releases are not happening. In this scenario, a conscious effort to understand the situation and clearing the flow has to be done. Some teams use item card and mark a dot on it every week, so that items with more dots become evident to person looking at Kanban board and appropriate actions can be taken.
Step 4 — Make management policies explicit
In traditional project management, policies and other guidelines are kept in documents which are hardly referred religiously. For our transition, we need to make management policies for the project explicit and visible. There shouldn’t be considerable effort required to know those details, it should be available anytime widely visible. E.g. information like WIP limit numbers, criteria to mark the item as deploy ready, etc.
Step 5 — Improve collaboratively
There are many ways to collaborate and improve continuously which is the need of the hour. This practice is followed in waterfall as well, but it happens majorly towards the end of project, whereas Kanban, with its agile nature, makes it happen on the go. To do so, either the help of an easy tool/software can be taken or well experienced organizations that have Kanban in practice, use their own internal ways. While we migrate from waterfall to Kanban, this can be initiated by simply taking on the bottlenecks faced. These bottlenecks are generally due to limits imposed on the stages. There will be multiple occasions when teams will feel like taking short cuts and break the limits, but that is again the chance to improve collaboratively and solve the issues faced.
Agility is defined by Jim Highsmith as “ability to both create and respond to change in order to profit in a turbulent business environment”. Waterfall to agile is a transition that is needed to keep pace with the business demands and Kanban makes it possible with minimum disruptions. As you grow in your transition, more and more agility and maturity of using Kanban can be attained and evolved. Some organizations even use Kanban in combination with Scrum i.e. “ScrumBan” in their agile journey.
If you are looking to implement Kanban Solutions in your organization, checkout https://www.digite.com/swiftkanban/. SwiftKanban is a powerful, intuitive, Kanban software for helping you manage your Lean/ Agile initiatives. Try SwiftKanban 30 days for FREE!