I’m in a particularly argumentative mood today.
Uncle Bob has made the strong recommendation that TODO means TO-DONT.
The more of the Clean Code presentation I watch the more I think he has it wrong. Which is basically the same complain I have with the commercialization of Agile.
If you’ve ever started a greenfield project [a] you need to preserve your code in some VCS because you never know when you’re going to go down a rabbit hole and reverse course. [b] And then there are all those experiments you might want to capture. [c] and you never know when the team is going to expend beyond the one and while sharing a single NAS folder is interesting it’s all-so very bad.
At the moment I’m working on a greenfield “example” case of a project I’m working on. It’s a serverless DSL embedded in html. As I’ve experienced TODO is like a dangling participle… something that needs to be done not something that MAYBE needs to be done.
There was a time when I used to gather FEATURE requests but then I realized I never go there. Sometimes I’d create features that would never be used and other times just because. The “problem” is that creating features without a need might add checkmarks to your project but no value. It’s actually debt.
I worked for a company that tried, multiple times, to implement a DSL. The problem was that they struggled to implement all the edge cases of a proper DSL when they should have just implemented enough of the DSL to get the job done and then worked to make it extensible. They lost many 10s of millions on this project and they ruined the corporate culture to boot.
TODOs are not terrible if they capture the right information.