<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: VARUN M</title>
    <description>The latest articles on DEV Community by VARUN M (@varun_m_a19ae9585eab6a659).</description>
    <link>https://dev.to/varun_m_a19ae9585eab6a659</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3731556%2Fb69cfbf7-0de4-4789-9618-124aa74f5600.jpg</url>
      <title>DEV Community: VARUN M</title>
      <link>https://dev.to/varun_m_a19ae9585eab6a659</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/varun_m_a19ae9585eab6a659"/>
    <language>en</language>
    <item>
      <title>Stop Letting Your TODO Comments Go to Die 🪦</title>
      <dc:creator>VARUN M</dc:creator>
      <pubDate>Mon, 26 Jan 2026 07:10:30 +0000</pubDate>
      <link>https://dev.to/varun_m_a19ae9585eab6a659/stop-letting-your-todo-comments-go-to-die-57p1</link>
      <guid>https://dev.to/varun_m_a19ae9585eab6a659/stop-letting-your-todo-comments-go-to-die-57p1</guid>
      <description>&lt;p&gt;We’ve all been there. You’re deep in a flow, you find a small optimization or a edge case you can’t handle right now, and you type the magic words:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;// TODO: Fix this later.&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
You feel good. You’ve acknowledged the debt. You move on.&lt;/p&gt;

&lt;p&gt;Fast forward three years: that comment is still there. The person who wrote it has left the company, the context is gone, and that "TODO" has officially become a ghost in your codebase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TODOs are where good intentions go to die. But they don't have to be.&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;The Problem: The "Set and Forget" Trap&lt;/strong&gt; &lt;br&gt;
The reason TODOs fail is that they lack accountability and visibility. A comment isn't a task; it's just text that the compiler ignores and your brain eventually filters out like background noise.&lt;/p&gt;

&lt;p&gt;If it’s not in your backlog, it doesn’t exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Actually Make TODOs Work&lt;/strong&gt;&lt;br&gt;
If we want to stop treating our codebase like a graveyard of unfinished ideas, we need a system. Here is how I’ve started approaching it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The "Linked Issue" Rule&lt;/strong&gt;&lt;br&gt;
Never write a TODO without a ticket number.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bad:&lt;/strong&gt; &lt;code&gt;// TODO: Refactor this logic&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good:&lt;/strong&gt; &lt;code&gt;// TODO (PROJ-123): Refactor this logic to support multi-tenancy&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If it’s not worth opening a quick GitHub issue or Jira ticket for, it’s probably not worth a TODO.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Use Tooling to Surface Them&lt;/strong&gt;&lt;br&gt;
Don't rely on your memory. Use extensions like &lt;strong&gt;Todo Tree&lt;/strong&gt; in VS Code to visualize where these comments are hiding. Even better, you can use CI/CD hooks or "Todo Checkers" that fail a build (or just post a warning) if a TODO comment doesn’t follow a specific format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Set an Expiration Date&lt;/strong&gt;&lt;br&gt;
Some teams use a "TTL" (Time to Live) for comments. If a TODO is older than 6 months, it either needs to be converted into a real story in the sprint or deleted. If the code has worked fine for 6 months without the change, do you really need it?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The "Stop the Bleeding" Approach&lt;/strong&gt;&lt;br&gt;
If you’re using a modern IDE, use annotations that actually stand out. Use &lt;code&gt;FIXME&lt;/code&gt; for things that are actually broken and &lt;code&gt;TODO&lt;/code&gt; for future enhancements. Make them high-contrast in your theme so they are impossible to ignore.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better yet: Just do it now?&lt;/strong&gt;&lt;br&gt;
The best way to handle a TODO is to not write one. If the task takes less than 10 minutes, just fix it. The context-switching cost of coming back to it later is always higher than the cost of doing it now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;br&gt;
A codebase filled with stale TODOs is a sign of mounting technical debt and a lack of ownership. Let's stop treating our comments like a "later" bucket that never gets emptied.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does your team handle TODOs? Do you let them rot, or do you have a system to keep the codebase clean? Let’s chat in the comments!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enjoyed this?&lt;/strong&gt; I originally wrote about this over on my blog &lt;a href="https://varunm.hashnode.dev/stop-letting-your-todo-comments-go-to-die" rel="noopener noreferrer"&gt;here&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
