How to Reduce Software Development Waste with Scrum
Software development is a complex process with a lot of uncertainties. Developing a product that creates value with the limited resources is quite challenging. We all try to maximize value creation with the available resources. But ‘Waste’ is the opposite of ‘Value’. Whatever feature, functionality, or process step that adds no value or is not being used, should be considered waste.
Scrum encourages the team to reduce waste from product development and improve productivity. As a result, the team will not only be able to deliver more features but hopefully more value with the same resources.
In their book Lean Software Development: An Agile Toolkit, Mary and Tom Poppendieck expertly correlated the 7 Wastes of Lean Manufacturing to the 7 Wastes of Software Development. And from my experience as a Scrum Master, I was able to facilitate my team to reduce the waste with guidance from Scrum Theory and Values.
1 Partially Done
Any incomplete work which doesn’t satisfy the Definition of Done (DoD) is marked as Partially Done. Partially done tasks add up as waste because at the end of the sprint those tasks don’t add any value to the product. Although the team has spent resources.
One common scenario we find is the dichotomy between development and testing. When the developers are done with their development they hand it over to the tester and feel like their job is done. If the testing team cannot finish the testing in time, the task doesn’t get completed. Usually, the testing team gets the blame for it. But in an ideal situation, both the developers and testers have to take responsibility. They have to collaborate to complete as many tasks as possible according to the DoD.
Coach the team to be an effective cross-functional team and have a clear Definition of Done
How to Reduce Partially Done Tasks
- Collaborate with the team to create a Definition of Done which should be followed. It can be changed on an empirical basis.
- Coach the team to be an effective cross-functional team focusing on completing the partially completed tasks
- Embody the ‘Extreme Ownership’ value in the team
- Coach and facilitate the team to understand the value they are adding to the product
2 Extra Features
Another common thing you will see in product development is to develop features assuming they will be used by the users. But they end up being unused. Eventually, additional features increase implementation time, code complexity, and potential failure points.
Gold Plating by developers is a common phenomenon where you will find Development teams building features that were not originally requested by the Product Owner or Customer.
Prioritise the Product Backlog based on the target audience
How to Reduce the Development of Extra Features
- Coach the Product Owner to understand the target audience and which features add value
- Prioritize the Product Backlog based on the feedback from the target audience
- The Scrum Master can coach the Product Owner to convey the goal of the sprint clearly to the team
3 Lost Knowledge or Relearning
Software development is a complex process and every product is different from the other with different challenges. But still, there are some common business processes like payment, e-commerce checkout, search, infrastructure setup which are used frequently in multiple products or services. If a developer tries to reinvent the wheel of a common business process then it would be a waste.
Teams misunderstand the Agile Manifesto and try to implement the anti-documentation pattern. As the product matures the team struggles to maintain all the knowledge of the product. As a result, if any regression bugs come in, they have to relearn the implementation again to resolve it due to lack of documentation.
Coach the team on Agile’s anti-documentation purpose and encourage them to document required information in time
How to Reduce the Relearning Tendency
- Encourage the team to do continuous knowledge sharing
- Coach the team members on Agile’s anti-documentation purpose and encourage the team to prepare all the required documents in time
- Make every piece of information visible in the team space
Hand-offs are a very common part of software development. One type of hand-off is where one developer transfers his half-implemented feature to another developer. An even worse hand-off is from one team to another team when the team doesn’t have the skills to complete the story.
Hand-offs result in information loss. We can’t always avoid them, but we can try to optimize them.
Encourage the whole team to attend all the meetings to have a clear perception of the product
How to Reduce the Effect of Hand-Offs
- Good to have a cross-functional team with a T-shaped skillset
- Encourage the whole team to participate in all the meetings to have a clear perception of the product
- Coach the team to keep all the information, charts, wireframes visible
5 Task Switching
Task switching or context switching is a sibling of hand-off. Task switching means when one developer needs to move from one task to another. It is not that simple as just switching to the new task. It requires a change in the mental state to return to the complex mapping of the task. A developer often does this in his or her head to create the environment, knowledge, and rhythm necessary to work on a task. Research shows that a developer loses 20% of his time due to context switching.
Identify any technical difficulties or external dependencies in the Sprint Planning meeting
How to Reduce Task Switching
- Identify any technical difficulties or external dependencies in the Sprint Planning meeting
- If possible try to create feature teams to avoid coordination and dependencies
- Properly prioritize the Product Backlog
Delays cause waste by causing extra work. Delays that prevent work are obvious sources of waste, but also remember that a delay could be a pause in between hand-offs. For example, functionality for a particular project is complete, but the stakeholders put off reviewing the work and later find issues. It forces the team into extra work by making them return to the requirements, mindset, and flow of the assignment after believing that it had already been completed.
Identify and eliminate dependencies through an effective Sprint Planning meeting
How to Reduce Delays
- Coach and facilitate the team to have an effective Sprint Planning meeting with proper breakdown of tasks
- Encourage the team to focus on the sprint goal
- Eliminating or identifying the dependencies
Defects are one of the major wastes. It is not possible to eliminate the defects but we can take steps to reduce them. From my experience, defects occur due to lack of Definition of Done, lack of Acceptance Criteria, lack of proper testing process or team. There is a common practice between software teams to bring in the testing team at the later stage of product development.
Coach the team to consider and implement testing as a continuous process
How to Reduce Defects
- Coach and facilitate the team to have a Definition of Done per product
- Have clear Acceptance criteria for each task
- Implement best testing practices like — Test Driven Development (TDD), pair programming, test automation
- Encourage the team to follow the coding standards and guidelines.
It is not possible to eliminate the wastes, but the objective will be to reduce them.
As a Scrum team, everyone should try to improve themselves to minimize wastes. And it should be a continuous effort.