TODOs aren't for doing
Meaning and Purpose of TODOs
- Big disagreement over what
TODOshould mean:- One camp:
TODO= actionable task that should be done eventually, ideally tracked. - Other camp (aligned with the article):
TODO= contextual note about missing polish, edge cases, or potential improvements that may never be done.
- One camp:
- Several people argue the article’s example (
triple-click causes error) is a comment or “known issue”, not a real TODO.
Arguments for Inline TODOs
- Low-friction way to record:
- Known but acceptable limitations.
- “Would be better if…” refactors or performance improvements.
- Design intent and tradeoffs (“I know this is brittle; here’s how I’d improve it if I had time”).
- Valuable for:
- Future maintainers reading that exact code.
- Personal projects and old/unmaintained codebases without real trackers.
- Offloading mental load: once written, you can stop thinking about it.
- Some see TODOs as “breadcrumbs” or “rain checks on technical debt”, not guaranteed work.
Arguments Against / TODO as Code Smell
- Seen as:
- Broken windows / technical debt that rarely gets paid.
- A way to push responsibility to a hypothetical future developer.
- Noise that must be maintained and easily becomes outdated.
- Many teams refuse TODOs in main:
- Either fix it, document it as a normal comment/NOTE, or create a ticket.
- Some CI rules fail builds on bare TODO/FIXME.
Alternative Tags and Taxonomies
- Rich vocabularies proposed:
FIXME= broken, must be fixed before merge.XXX= ugly/obscene but working; important or risky spot.NOTE/NB/WARN/HACK= unusual behavior, important context.FUTURE,MAYDO,SHOULDDO,COULDDO,PERFfor different priorities or types of improvement.
- Core idea: distinguish “must-do” from “nice-to-have” and from “documentation”.
Issue Trackers vs Code Comments
- Pro-trackers:
- Proper triage, prioritization, visibility beyond developers.
- Some require every TODO to link to a ticket (
TODO(PROJ-123): ...).
- Anti-/skeptical:
- Jira and similar tools are high-friction, politicized, and slow.
- Lightweight TODOs capture many small issues not worth full tickets.
- Trackers often auto-close or reject low-priority “would be nice” work.
Tooling and Workflow
- IDEs and tools:
- TODO indexing (JetBrains, VS Code extensions, godoc notes).
- CI hooks that reject or enforce formats (e.g., TODO + ticket link).
- Some suggest automation that promotes lingering TODOs into tracker issues; others see this as counterproductive overhead.