Today’s customers expect instant gratification, especially when it comes to technology products. Software development is one of those extremely dynamic industries, in which continuous delivery has become a standard. These are the sort of environments that benefit most from agile methodologies and practices. And today, I would like to talk about Kanban practices for software development teams.
You’ve likely already heard about Kanban practices and their role in software development, but you might be wondering how it fits into the contemporary demands to software releases. Kanban practices were coined to describe the scheduling system used in Toyota factories to improve manufacturing efficiency. They have been applied to agile software development for much the same reasons – namely, to enable the continuous delivery of quality software products.
Kanban is about pulling work rather than pushing it onto development teams. In fact, one of the core principles of the method is to limit the amount of work in progress. Team members don’t start working on new tasks until they’ve finished what they’re working on. This requires a real culture change. Helping other team members complete tasks they’re stuck with, rather than placing the focus on individual performance only, is a mindset that needs to be trained and supported by the whole team.
In agile software development, your primary goal is to respond to uncertainty. The best practices in software project management recommend adopting incremental and iterative processes, which allows you to gather feedback and react quickly. Kanban practices emphasize the speed and efficiency of the development workflow to build and deliver value as fast as possible.
An important prerequisite for a smooth development workflow is to maintain a well-arranged To Do list with tasks added to it no sooner than necessary. The development team commits to deliver work from the moment they pull a new task into the process, so you’ll want to ensure they’re working on the most important ones first. Consider using a separate board for your backlog, creating new cards in your development board only once a task is ready for development. This can help your development team avoid getting distracted by what is to come and instead focus on the highest priorities.
Prioritise your work based on what’s most important and valuable to your customers. Everyone on your team should have a clear understanding of what they should be working on and why. In other words, teams need to be driven by common goals and steadfast collaboration. To minimise the risk of a delay, try to make your user stories approximately equal in size so that your team is able to deliver them at a predictable and consistent pace.
Workflow policies are the rules that govern each state of the development process. In Kanban, they set the criteria required for cards to enter a specific column. If a developer has finished a feature implementation, you should have a policy stating what they have to do to make it ready for passing onto the QA guy. For example, the new or changed code is sent for code review to another developer, and once approved, the code is deployed to a testing environment. Process policies help minimize the need to rework and keep the workflow running smoothly.
Mapping your software development workflow helps your team get an overview of who is working on what and, most importantly, why. Work gets visible to all involved stakeholders, collaboration and communication increase instantly. In a typical development environment, the development process states might include analysis, design, development, testing, deployment and done. Once a feature on your backlog is ready for development, you can add it to the development board. Tasks move along the process from the first state until they reach the last state.
To eliminate multitasking and prevent overburden, project managers should limit the amount of work in progress in each process state by placing a maximum number on the cards that can be in a column at any one time. Setting the optimal amount of work that your team can handle at any one time will lead to a smoother workflow and continuous delivery of value. Furthermore, by giving greater focus to fewer tasks, quality is also improved and you eventually get more work done in less time.
With Kanban practices, software developers need to be able to release tasks rapidly, even multiple times per day. This means that every task should be independent of the rest. Make sure you branch off your feature branch from your production branch when you start new work. Then merge your feature branch to your development branch, verify the feature and sign it off. Once the feature is ready for release, merge your feature branch to your production branch. This way your tasks will exist independently of the rest of the work in progress and it will be deployed individually.
Delivering product updates more often reduces the risk of something going wrong, since there’s a smaller surface area being released at once. Also, you can resolve issues faster or roll back with minimal disruption to customers.
Kanban practices offer a highly effective way to visualise your workflow and track progress but, with the right approach, it can be so much more. Combined with data-driven analytics, you can constantly refine your process, accurately estimate your performance and identify problems with ease. Track your average cycle times and throughput to evaluate your team performance and observe how the trends build over time.
Estimations in Kanban don’t require a developer’s guesswork; it uses a data-driven approach based only on your historical performance collected by industry-standard analytics tools. For example, a cycle time scatterplot provides an estimation of task delivery and the probability of that commitment being achieved. For long-term estimations, the most accurate approach to use is Monte Carlo simulations.
Bottlenecks occur when a process state ends up with more tasks than your team can handle which, in turn, leads to increased cycle times. You can use a cumulative flow diagram to spot bottlenecks and determine the stability of your workflow. Look out for situations where one or more of the areas representing the amount of work in progress start expanding. To contain the bottleneck, you may want to consider reducing your work in progress limits.
Regular feedback meetings and customer reviews decrease the risk of miscommunication and waste. Establish a practice to collect early feedback from your stakeholders. When carried out professionally, such meetings can be very fruitful for the team morale as well. Kanban practices empower teams to deliver faster, and enables you to provide accurate service level agreements based on your past cycle times.
With a solid foundation, your software development process can continually improve. With data-visualisation tools at your disposal, you no longer need to rely on the guesswork. Instead, you can track your progress, increase quality and strive to continuously deliver more value to your customers in less time.
Bio: Sonya Siderova is a Product Development Manager & Kanban Coach at Nave – Analytical dashboards for Kanban projects. Nave helps software development teams increase performance, identify bottlenecks and focus on improving workflow efficiency.
If you are developing agile project management tools and you need software development help, let us know, we are excited about working on cool projects!