  Context: Contemporary software development is typically conducted in dynamic,
resource-scarce environments that are prone to the accumulation of technical
debt. While this general phenomenon is acknowledged, what remains unknown is
how technical debt specifically manifests in and affects software processes,
and how the software development techniques employed accommodate or mitigate
the presence of this debt. Objectives: We sought to draw on practitioner
insights and experiences in order to classify the effects of agile method use
on technical debt management. We explore the breadth of practitioners'
knowledge about technical debt; how technical debt is manifested across the
software process; and the perceived effects of common agile software
development practices and processes on technical debt. In doing so, we address
a research gap in technical debt knowledge and provide novel and actionable
managerial recommendations. Method: We designed, tested and executed a
multi-national survey questionnaire to address our objectives, receiving 184
responses from practitioners in Brazil, Finland, and New Zealand. Results: Our
findings indicate that: 1) Practitioners are aware of technical debt, although,
there was under utilization of the concept, 2) Technical debt commonly resides
in legacy systems, however, concrete instances of technical debt are hard to
conceptualize which makes it problematic to manage, 3) Queried agile practices
and processes help to reduce technical debt; particularly, techniques that
verify and maintain the structure and clarity of implemented artifacts.
Conclusions: The fact that technical debt instances tend to have
characteristics in common means that a systematic approach to its management is
feasible. However, notwithstanding the positive effects of some agile practices
on technical debt management, competing stakeholders' interests remain a
concern.(Abridged)
