Most of the ToDos and FixMe:s in code seem to be there because the original programmer knew of a better way, but for some reason didn't do it, so the comment was placed there to ease his own "guilt".
I think the reason is usually time constraints, quite often a feature is needed yesterday (Either for a customer or for the rest of the team), quick solutions gets added, a comment written and as long as it works and doesn't cause any problems it will remain.
I think the important thing here is to not just add a comment to the code but to use a format for those comments that your documentation tools can parse, (That way you can get a good overview of all the quick hacks that exist in your codebase and the potential negative effects they have. (and if you don't use documentation tools it is a good idea to write a separate index for the things that should be fixed if there is ever time for it).
Personally what i want to know, just by looking at the documentation is:
The location of the hack, (File, namespace, class, function, etc)
The reason for the "hack" being used. (Time constraints ? , easier to reason about ?)
The potential drawbacks of the hack, (poor performance ? , bad scaling ? security concerns ? portability ? tight coupling ?)
Estimated importance of replacing the hack with a better solution. (I probably won't have time to fix them all, if i do have time i'd like to know where to start) and if possible a list of the better solutions that weren't used due to the reasons listed above.
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!