Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I would like to optimize the way I manage my todo list. My tasks are, for a large part, related to C++ coding but also include readings, presentations, research... Lately I discovered the @todo command in doxygen, which is pretty cool for the coding part. I would like to keep a clear track of all my tasks in one big tool though. Any ideas ?

share|improve this question
pencil and paper? – hanzolo Jun 27 '12 at 21:32
@BrendanLong I might miss something but I don't see the link between bug tracking systems and my todo list issue. – vanna Jun 27 '12 at 21:42
My point is that you should use a bug tracker – Brendan Long Jun 27 '12 at 21:55
I personally use bugzilla – Cole Johnson Jun 27 '12 at 22:32
up vote 9 down vote accepted

Avoid Task-Tags

Using @todos or TODO: in-code task-tags is usually a bad idea, especially if you're part of a team, as they aren't always easy to detect and might require additional tooling (and not all team members might use the same tools). Plus after a few weeks (or days) you just forget about them until they come to bite you in the bottom later down the road.

Issue Trackers

In general, I'd say the best way to track tasks / TODOs is with an issue tracker (like JIRA, Bugzilla or Mantis, or more complete solutions like trac, or hosted ones that come with private repos like on BitBucket, GitHub or Assembla). It sounds heavyweight, but if you use a good one it works wonders, mainly because you get things like:

  • time-tracking,
  • priorities,
  • linking tasks,
  • renaming them,
  • separating projects,
  • nice dashboards and graphs,
  • links to external tools like SCM,
  • etc...

Hosted ones have the advantage that you'll have access to your tasks whereever you are, as long as you have an internet connection, and you can still export a list as text when you plan to be off-line.

Task Boards

Otherwise, task boards are becoming very popular with Scrum, Kanban and other methodologies. You can use dedicated task boards* (like Trello), or you can use a plugin for an issue tracker (like GrassHopper for JIRA).

* virtual or physical, though I prefer virtual ones for backup purposes obviously... you can always display them on a wall with a big screen or a cheap projector

We still have some task tags in my team though, but usually they are just short-lived reminders that we leave in the code in-between commits or as warnings for very fishy legacy code that we deal with very carefully. And to not lose track of them, we have presets for several IDEs to sort of enforce consistency in the task tags' naming convention, and we also integrate some tools in our build to detect them (for Java projects, Maven can produce a report with all detected task tags, which is handy to review them and convert them to actual tasks in your issue tracker if deemed relevant, and to keep an eye on urgent / critical FIXMEs and stuff like that).

Alternatives and Tips

  • consider org-mode, if you like plain-text and emacs,
  • consider quite simply using a good calendar (Google Calendar is what I use for tasks at home; others use Google Tasks),
  • a combination of all that, and just paper, post-its, and pencils. My walls and fridge have tons of print-outs of my monthly, weekly or daily tasks for family stuff, and I usually have print-outs of weekly tasks for my professional activities as well, as it's easier to glance at a wall than to open a browser.
share|improve this answer
Thanks a lot, I got a lot of stuff to try ;) – vanna Jun 27 '12 at 22:44
@vanna: you're welcome. Let us know what works for you in the end, I'm sure others are interested by your feedback. Personally, I always like trying new tools so I don't have a "definitive guide" on this. I like plain-text, but I also like my Google Calendar, and at work I love my JIRA. Guess it depends what I work on, and how I work for this particular task at hand. – haylem Jun 27 '12 at 22:47

A plain old text file used as a diary/journal works well for tracking both to-do items and anything else about a project that you want to remember. I try to add a line or two whenever I make a decision, notice something I want to get back to later, have an idea for an improvement, etc. Some items get called out with a first word like "BUG" or "TODO". I keep mine in reverse-chronological order: I enter items at the top of the file.

A development journal really isn't a replacement for a bug tracking system. It's more lightweight -- since I almost always have the file open, adding something is very quick. But it's not as easy to search, not as organized, not as powerful. It's a log, not a database. Still, it can be a good way to help yourself become a little more organized. If all you need right now is a way to avoid forgetting tasks, it can be a very helpful tool.

Many IDEs will let you add a file type or build rule that will ignore a given type of file, so you can add your project journal right to the project and have it available all the time. Remember to check it into version control for safe keeping!

share|improve this answer

What I generally do is to create some sort of include file that just has comments in it. It can be bugs, todos, testing criteria, whatever. That gets included in the project, and for each item I have a resolution, resolution date, my initials and if necessary, a brief description of what was causing the bug or unexpected behavior.

A couple of times it's saved me a lot of time later on, being able to go back and reference those lists when a similar weird situation occurs. Additionally, you can also look at the code in that project and cut/paste a ready made (or nearly) solution.

share|improve this answer

I use two quasi discrete systems for most todo items I follow the Getting Things Done process and use omnifocus to keep track of the items. I agree with the issue tracker suggestion above. I personally use redmine as my tracking system and then use MYLYN integration with my IDEs to track the items. I really like they way that I can understand specifically what files have been touched and focus via MYLYN.

share|improve this answer

TODO comments in code are still Ok (for personal projects). For anythying else: a kanban board, migrated from physical board to self-made software-based one. Look in my blog for details. There are also a lot of online options.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.