One particularly interesting topic discussed during the Hackathon Technical Debt session (T194934) was that of the contagious aspect of technical debt. Although this makes sense in hindsight, it's not something that I had really given much thought to previously.
The basic premise is that existing technical debt can have a contagious effect on other areas of code. One aspect of this is developers new to the MediaWiki code base may use existing code as a pattern for new code development. If that code has technical debt, the technical debt could get replicated in other areas of code.
This can be overcome with both education about desired patterns as well as sharing the technical debt state of existing code. It's not clear how best to accomplish the later, but perhaps it's as simple as a comment in the code, once it's been identified and is being tracked in Phabricator.
Another aspect of the contagion effect (perhaps more of a compound effect), is the result of maintaining code with existing technical debt. As bugs are fixed or minor features added, those changes can, in effect, result in a spreading of the technical debt. Of course this doesn't always need to be the case, but it can be, if one is not careful.
I'd like to get your thoughts on this topic and your past experiences working with and around technical debt.
- Are some areas of code more contagious than others?
- What are some ways to mark technical debt as such?
- What do you do when you need to work on code with significant technical debt?