Make your TODO's TODONE!
I'm not actually a project manager, but I do share in some of those responsibilities on my current project, in so far as I'm considered the lead developer and architect. One of things that I've learned over the years, and I try to push for before every major release to production, is to have all the developers on the team go through their code and clean up TODO's. Today was a perfect example why.
Right now we're working on a 2.0 release, which involves a lot of rewrite since the 1.x branch. However, we still have to support the 1.x branch which is in productions until we release 2.0. Friday we got a call for a production problem, and we were able to narrow down the problem this morning. When I found the offending code, there was a TODO which described the fix that needed to be made. The defect was actually rather obscure, and I'm surprised it came up... but nonetheless... someone at some point in time anticipated this happening, and stuck a TODO in there which perfectly described what needed to be done to fix the defect.
Had that TODO been turned into a TODONE... this problem would never have occurred. At some point in time prior to a release, you should always go through your code and try to get to a 0 TODO count. Granted, this rarely happens in real life, but you should at least evaluate every TODO in your code to see if its really still an issue. TODO's that are in code too long should also be noted in defect logs as well, so that they begin to elevate the chain of importance, and can be evaluated with other code changes that have to be made.
Finally, all TODO's should have initials next to them. A one line TODO can often times be very vague, and so its helpful to be able to go back to the original offender and get more context from them as to why they put in the TODO. Sadly, this particular TODO was nameless, although it was fairly descriptive.