Defining software debt, an expanded and multidimensional view of socio-technical debt in industry
Organizations, be they private companies, non-profit corporations, or government agencies, often mobilize dozens and even hundreds of developers. Those developers produce large amounts of code daily and tend to work under strict time and/or budget constraints. This often leads to the accumulation of technical debt, which has a negative impact on the overall quality of products and on the future agility, productivity, and innovation capabilities of organizations. Various approaches have been proposed to tackle these concerns but they often focus only on code smells and code metrics and tend to disregard aspects that may be more problematic in the long run, like higher-level technical issues (architecture, security, etc.), inappropriate development workflow, organizational and socio-technical problems, and inadequate engineering culture. This research project aims to propose a more holistic approach to socio-technical debt, based on the design of indicators, of a methodology and of tools for helping developers and managers address software debt and prioritize mitigating actions. The proposed research will be conducted in an actual organization of 4,800 employees among which nearly 90 developers working on dozens of applications. Research methods will include the analysis of version control data, the mining of software repositories, the use of code quality analysis tools, the study of development workflow and organization, and developer and manager surveys and/or interviews. The expected outcomes of this research are both practical (e.g., proposing data collection and analysis methods and tools, designing indicators, identifying friction points, raising alarms, proposing risk management techniques) and more general, that is, answering questions about current software engineering practices.