Software Development Waste

Author(s): Todd Sedano, Paul Ralph, Cécile Péraire
Venue: 2017 IEEE/ACM 39th International Conference on Software Engineering
Date: May 2017

Type of Experiement: Survey/Multi-Case Study
Sample Size: 100
Class/Experience Level: Professional
Participant Selection: employees of Pivotal
Data Collection Method: Observation, Survey


This study aims to identify and describe different types of waste in software development, in which waste is defined as any activity that produces no value for the customer or user. Since software development is a complex socio-technical activity that involves coordinating different disciplines and skill sets, it provides a plenty of space for waste to emerge. By reducing waste, we may improve our efficiency and productivity. However, we cannot reduce waste if we do not know what it is in software development. Thus, this paper tries to categorize the different failures and struggles that software teams of Pivotal experienced into different types of waste and explore their cause and underlying tensions.

The researchers used Constructivist Grounded Theory, which involves iteratively collecting and analyzing data to generate and refine an emergent theory. With Pivotal Labs as the research context, the study analyzes data from three sources: participant observation of eight projects over two years and five months; interviews with Pivotal employees; and topics discussed in 91 retrospection meetings. As the data was collected and coded, the initial codes were stored in a spreadsheet and compared constantly to generate focused codes. This process continued until categories are stabilized.

As the results, this paper identifies nine wastes and explores their relationship to the waste taxonomy found in Lean Software Development. Yet, since the Grounded Theory does not support statistical generalization, organizations with different software development cultures may experience different waste types. In conclusion, software development projects manifest nine types of waste: building the wrong feature or product, mismanaging the backlog, rework, unnecessarily complex solutions, extraneous cognitive load, psychological distress, waiting/multitasking, knowledge loss, and ineffective communication.