Visualizing and Managing Technical Debt in Agile Development: an Experience Report
Paulo Sérgio Medeiros dos Santos, Amanda Varella, Cristine Ribeiro Dantas, and Daniel Beltrão Borges
One of the main tenets that make agile methods effective is the right balance between the importance given to the people developing the software and the engineering practices dedicated to keep its quality. This equilibrium, however, can be hard to achieve. And, unfortunately, the tension between engineering practices and delivering value sacrifices the technical side most of the times. This paper reports the experience of an architecture team of a software development department with 25 agile teams in supporting technical decisions regarding technical practices. After trying other approaches to technically support the teams the architecture team invested in the technical debt metaphor to guide the department teams’ technical decisions. The main motivation to use technical debt was its acknowledged potential in driving software development and maintenance decisions, especially those long term maintenance tradeoffs which are usually less visible to developers and decision makers in general. We propose the use of a “technical debt board” with main technical debt categories to manage and visualize the high-level debt, combined with tools to measure it at low-level (software metrics and other kind of static analysis). We have found that our approach improved the teams’ awareness about the technical debts, stimulated a beneficial competition between teams towards the debt payment and enhanced the communication regarding technical decisions.
Paulo Sérgio Medeiros dos Santos, Federal University of Rio de Janeiro, System Engineering and Computer Science Department, Cidade Universitária – Centro de Tecnologia. Rio de Janeiro, Brazil, firstname.lastname@example.org
Amanda Varella, Cristine Ribeiro Dantas, Daniel Beltrão Borges, Petrobras, Exploitation and Production Business Solutions, Centro 20031-912 Rio de Janeiro, Brazil,
email@example.com firstname.lastname@example.org email@example.com