It starts with an innocuous comment in a young codebase:
# TODO: Implement caching.
The other developers notice it, and within a week, another TODO appears. Soon, it becomes a trend; adding TODOs seems far easier than completing the tasks in full.
Fast forward a year, and the codebase is riddled with TODOs. They linger, untracked, with no one taking responsibility for their completion. Gradually, they morph into a permanent part of the codebase.
Bad examples breed more bad examples. One is all it takes to justify further instances, leading to a TODO virus.
The solution? Commit to finishing each task thoroughly.
Should you encounter an issue or an opportunity for refactoring while working on something unrelated, take the initiative to create a card on your task board. However, only do so if there’s a clear process in place to ensure these cards are eventually addressed by someone. Otherwise, this approach mirrors the act of adding perpetual TODOs.