ABSTRACT
Keeping the source code clean and organized throughout the software development and evolution is a challenging task. Due to many factors, design choices that cause the overall code structure to decay may be made and implemented, so that benefits, such as reduced development time, can be obtained in the short term. In order to deal with these situations, the metaphor of technical debt emerged to allow such situations to be systematically managed. Although this concept is already known in academia, there are limited evidences that the industry widely adopts it. Therefore, this paper presents the results of a survey involving 74 participants that work in the Brazilian software industry, in order to understand why technical debt is introduced, eliminated and how it is managed in practice, with a focus on the code level. Our survey is not limited to the explicit management of technical debt but also includes the notion that the introduction of poor code without the awareness that it is a poor design choice can also become a debt. Such a code can be acknowledged as a debt to be paid as the software evolves. Our results show that overload of work and lack of time, together with pressure from the management, are the main reasons for the creation of technical debt. However, when participants evaluate other developers, they believe that inexperience also plays a key role. Moreover, the most effective practice to avoid the creation of technical debt is code review, in the opinion of participants.
- Eric Allman. 2012. Managing Technical Debt. ACM Commununication 55, 5 (May 2012), 50--55. Google ScholarDigital Library
- Nicolli S.R. Alves, Thiago S. Mendes, Manoel G. de Mendonça, Rodrigo O. Spínola, Forrest Shull, and Carolyn Seaman. 2016. Identification and Management of Technical Debt: A systematic mapping study. Inf. Softw. Technol. 70, C (Feb. 2016), 100--121. Google ScholarDigital Library
- F. Buschmann. 2011. To Pay or Not to Pay Technical Debt. IEEE Software 28, 6 (Nov 2011), 29--31. Google ScholarDigital Library
- Ward Cunningham. 1992. The WyCash Portfolio Management System. SIGPLAN OOPS Mess. 4, 2 (Dec. 1992), 29--30. Google ScholarDigital Library
- Neil A. Ernst, Stephany Bellomo, Ipek Ozkaya, Robert L. Nord, and Ian Gorton. 2015. Measure It? Manage It? Ignore It? Software Practitioners and Technical Debt. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2015). ACM, New York, NY, USA, 50--60. Google ScholarDigital Library
- C. Fernández-Sánchez, J. Garbajosa, C. Vidal, and A. Yagüe. 2015. An Analysis of Techniques and Methods for Technical Debt Management: A Reflection from the Architecture Perspective. In 2015 IEEE/ACM 2nd International Workshop on Software Architecture and Metrics. 22--28. Google ScholarDigital Library
- Martin Fowler. 1999. Refactoring: Improving the Design of Existing Code. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA. Google ScholarDigital Library
- K. Hinsen. 2015. Technical Debt in Computational Science. Computing in Science Engineering 17, 6 (Nov 2015), 103--107.Google ScholarDigital Library
- P. Kruchten, R. L. Nord, and I. Ozkaya. 2012. Technical Debt: From Metaphor to Theory and Practice. IEEE Software 29, 6 (Nov 2012), 18--21. Google ScholarDigital Library
- M. Lavallée and P. N Robillard. 2015. Why Good Developers Write Bad Code: An Observational Case Study of the Impacts of Organizational Factors on Software Quality. In 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, Vol. 1. 677--687. Google ScholarDigital Library
- J. L. Letouzey and M. Ilkiewicz. 2012. Managing Technical Debt with the SQALE Method. IEEE Software 29, 6 (Nov 2012), 44--51. Google ScholarDigital Library
- E. Maldonado, E. Shihab, and N. Tsantalis. 2017. Using Natural Language Processing to Automatically Detect Self-Admitted Technical Debt. IEEE Transactions on Software Engineering PP, 99 (Jan 2017), 1--1.Google ScholarDigital Library
- M. Tufano, F. Palomba, G. Bavota, R. Oliveto, M. Di Penta, A. De Lucia, and D. Poshyvanyk. 2015. When and Why Your Code Starts to Smell Bad. In 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, Vol. 1. 403--414. Google ScholarDigital Library
- R. Zablah and C. Murphy. 2015. Restructuring and refinancing technical debt. In 2015 IEEE 7th International Workshop on Managing Technical Debt (MTD). 77--80.Google Scholar
Index Terms
- Understanding Technical Debt at the Code Level from the Perspective of Software Developers
Recommendations
Managing technical debt: an industrial case study
MTD '13: Proceedings of the 4th International Workshop on Managing Technical DebtTechnical debt is the consequence of trade-offs made during software development to ensure speedy releases. The research community lacks rigorously evaluated guidelines to help practitioners characterize, manage and prioritize debt. This paper describes ...
How do software development teams manage technical debt? - An empirical study
Exploratory case study with empirical data from eight software development teams.Observation of various different strategies for technical debt management.Developed technical debt management framework. Technical debt (TD) is a metaphor for taking ...
Technical Debt and the Effect of Agile Software Development Practices on It - An Industry Practitioner Survey
MTD '14: Proceedings of the 2014 Sixth International Workshop on Managing Technical DebtA major reason for the popularity of agile and lean software methods is their capability to function in resource scarce and requirement erratic environments. Both of these characteristics cause accumulation of technical debt, something that is the end ...
Comments