How do you keep track of your programming TODOs? [closed]
Asked Answered
A

33

63

I'm one of those people who can't get anything done without a to-do list. If it isn't on the list it doesn't exist.

Notepad Method:

When I'm programming I've been keeping notepad open with a list of to-do's for my current project. I'll constantly re-arrange these based off priority and I cross them off and move them to the completed section when I'm finished with that particular task.

Code Comments:

Some programmers pepper their projects source code with:

// TODO: Fix this completely atrocious code before anyone sees it

Plus, I know that there are some tools that show you a list of all TODOs in your code as well.

Website Task Tracker:

What have you found to be the best method of keeping track of your to-do lists for multiple projects?

Acceptance answered 10/2, 2009 at 9:27 Comment(3)
Made community-wiki. Not looking for rep. Also, if you can think of a better tag than "project-management" please retag this question.Lafond
It's amazing what questions get closed around here. I came here from search looking for "programming to do list" for better project management. +1 for OP, -1 for close-happy mod.Stoma
It's surprising that no one mentioned mind mapping software (like FreeMind). It's useful for a single feature approach, but it's great for whole project personal task management.Suffragist
I
39

Like others, I pepper them about my code, but I use the warning directive to generate a compiler warning too:

#warning TODO: Implement foobar

This way I can still search for "TODO" but they also shout at me whenever I build.

Illume answered 10/2, 2009 at 9:27 Comment(2)
+1 for an obscure bit of code that I didn't know you could do :)Blenheim
+1! Very useful.. will certainly be doing this for my TODOs.Aftergrowth
K
29

Pen and paper.

Combined with the genious PocketMod, it's totally perfect. Striking TODOs is soooo satisfying!

Kielty answered 10/2, 2009 at 9:27 Comment(2)
I've filled mine with sudoku grids :\Overexpose
Doesn't this result in you needing to search through the list for non-crossed-out tasks? And what do you do if you need to modify a task? Or share the task list with others who are far away? I'm struggling to find a way in which this is superior to just using a Google Doc.Braces
P
14

I can't speak for other IDE's, but Eclipse will search your project's source files for TODO comments (as well as FIXME and XXX by default) and create tasks for you in the tasks view.

This leads to intriguing situations where you check the tasks view, double-click on a TODO task, and read the comment:

// TODO: Add this functionality.

Eclipse will also add TODO comments when generating certain code blocks, like method implementations, catch blocks for exceptions, etc.

Paternoster answered 10/2, 2009 at 9:27 Comment(1)
Any editor can search like that. And grep for multiple files.Sanfred
V
9

TODO (and other) comments are great with Visual Studio and ReSharper installed:

To-Do Explorer
(source: jetbrains.com)

Variant answered 10/2, 2009 at 9:27 Comment(2)
Is it a resharper window ? or VS.NET ?Seraglio
Yes this feature is great, i am also usingAlmshouse
O
8

Although I didn't try it I really like the idea of tests as todos. What else should get you going if not a failed test?

Ortego answered 10/2, 2009 at 9:27 Comment(0)
B
5

NextAction, from TimeSnapper

Butyrin answered 10/2, 2009 at 9:27 Comment(0)
C
5

Personal Abstract Todos

I use Tomboy Notes or paper to make a quick list of abstract high level tasks. Often when I'm on the phone with my manager, I just need to get things written down.

Source Code Specfic Todos

I use the inline TODO: / @todo comment marker in my code and then use the Netbeans plugins that give me a running list of todos throughout the project. Since Netbeans can aggregate todo markers from multiple projects, it does not make a difference how many different projects I'm running.

Multiperson Tasks / Todos

Once I have to keep track of todos for more than myself, I move to project management software like OpenProj, MS Project, etc. Also, if the todos involve bugs or feature requests, I use our bugtracker. Other todos, can be manged by a helpdesk system as well.

Cogan answered 10/2, 2009 at 9:27 Comment(0)
C
4

I use Pen and Paper to jot down notes. I also use TODO/FIXME tags in code that gets highlighted yellow in Vim and tracked by the TODO extension in Komodo.

One of the most useful additions for me has been using Samurize to embed a plain text file onto my desktop (http://lifehacker.com/software/plain-text/geek-to-live--incorporate-text-files-onto-your-desktop-213280.php). I have 3 virtual desktops and it lives on my email desktop which is where I wind up first thing every morning. It contains a text file with the items that I need to do and it rarely runs more than a week ahead.

Wednesday 2/11/2009
- Item 1
- Item 2
Thursday 2/12/2009
- Item 3

I use Executor that has a keyword "todo" that automatically opens gvim with this file when I want to edit/add/remove items. This makes it about 3 keystrokes to get it open and ready to modify. It helps me remember the Monday morning production moves before I get buried in email and meetings. As soon as I edit, it's reflected on the desktop.

Obviously for longer and more detailed things, I rely on Roundup, Outlook reminders, etc. but this has been a handy way to jot things down so they won't get lost in the shuffle.

Conspecific answered 10/2, 2009 at 9:27 Comment(0)
G
4

For every task in a project i create a new entry in the issue tracker (Bugzilla for me).

  • A big advantage is that you can track back every changes made by the issue ID.
  • You can report customers or project members the status of your task.
  • You can create a new bug type like "task", "todo" or "feature-request".
  • It's a central solution. No local stuff...

I our development team there is a rule which says: "Do never change any code without a corresponding entry in the issue tracker. Never!"

Gristle answered 10/2, 2009 at 9:27 Comment(0)
C
4

I use ToDoList from AbstractSpoon. It lets you divide your ToDo list into projects and can even be used by a number of users for larger projects using a shared network drive.

Curule answered 10/2, 2009 at 9:27 Comment(0)
G
3

A simple plain text file (TODO) in the top level of the project's cvs/svn area works for me for simple projects.

Gales answered 10/2, 2009 at 9:27 Comment(0)
B
3

I would make a clear difference between FIXME and TODO. FIXME is a critical and must be fixed before commit/release. TODO can live a bit longer but should be cleaned away eventually.

Breadfruit answered 10/2, 2009 at 9:27 Comment(0)
K
3

I use inline TODO: comments as Visual Studio will track these for me, of course I still have to look at the task list to see them. I cannot count the number of times I have found a TODO: comments whilst reviewing some code I thought was complete.

Knack answered 10/2, 2009 at 9:27 Comment(0)
D
2

I created a build task that picks out //TODO: lines from my code files and generates a report I include in team city. It gives you a quick way of see any outstandings on a project without having to check it out.

you can also use the CodeTagsPlugin with Trac

Doorman answered 10/2, 2009 at 9:27 Comment(0)
C
2

Like others have mentioned, I use the standard FIXME/TODO/XXX in my code comments, and then can find the list of tasks within my IDE using their various tools. I also use hudson's task scanner plugin to keep track of everything, since I'm a sucker for graphs.

Counterplot answered 10/2, 2009 at 9:27 Comment(0)
P
1

For C++ projects (native/ATL):

#ifndef _TODO_H_
#define _TODO_H_
#pragma once

// from atldef.h:
#ifndef _ATL_STRINGIZE
#define __ATL_STRINGIZE(_Value) #_Value
#define _ATL_STRINGIZE(_Value) __ATL_STRINGIZE(_Value)
#endif

// put x in quotes, no need to use #pragma!
#define __TODO(x)           __pragma(message(__FILE__"("_ATL_STRINGIZE(__LINE__)") : TODO: "x)) 
#define __WTF(x)            __pragma(message(__FILE__"("_ATL_STRINGIZE(__LINE__)") : WTF?! "x)) 
// prefer to use ISO-formatted date
#define __BUGFIX(date, x)   __pragma(message(__FILE__"("_ATL_STRINGIZE(__LINE__)") : BUGFIX: "#date" "x)) 
#define __CHANGE(date, x)   __pragma(message(__FILE__"("_ATL_STRINGIZE(__LINE__)") : CHANGE: "#date" "x)) 

#endif _TODO_H_

Looking for something like that for C#.

Poteat answered 10/2, 2009 at 9:27 Comment(0)
T
1

I use Sandglaz and place my todos in 3 columns now, next and later (a little like their blog, but only one row)...and its easy and fast to use. I'm a freelancer so I work on several projects at a time so it works for me

I use pending tests only to remind myself to write tests. I use Rspec, so it has that build it.

Triturable answered 10/2, 2009 at 9:27 Comment(0)
B
1

There is also Task Scanner Plugin for Hudson (in case it fits in your environment). With that you can track number of TODOs/FIXMEs on your continuous integration build reports.

Breadfruit answered 10/2, 2009 at 9:27 Comment(0)
C
1

I like Mylyn a lot: integrated into Eclipse, works with many trackers as well as without (local tasks) and realizes new concepts like the focused UI.

Caslon answered 10/2, 2009 at 9:27 Comment(0)
A
1

Wow, I just had this question yesterday. After some searching, I settled on the ReminderFox Firefox extension. It's completely integrated into the browser and has pop ups to remind you every time you open your browser when a task is due.

Anhinga answered 10/2, 2009 at 9:27 Comment(0)
I
1

I'm quite fond of tracks. It has the flavour of GTD without getting too regimented about it.

I can quickly whack stuff in there as I think of it, and then not have to worry about forgetting after that.

Interbreed answered 10/2, 2009 at 9:27 Comment(0)
C
1

Eclipse tracks your TODO and list them in a proper windows automatically. I find it powerful enough if you don't need advanced features.

Cribbage answered 10/2, 2009 at 9:27 Comment(0)
C
1

Having done an extensive search for a suitable "to do list" application I settled on mylyn - the one that comes supplied with Eclipse.

It is easy to create and manage tasks. Tasks can be imported and linked to Bugzilla or a number of other different task repositories. It also has a "task context" which enables files that are relevant to a task to be highlighted and those that are irrelevant to be hidden (which is far more useful than I anticipated it would be).

Crystallite answered 10/2, 2009 at 9:27 Comment(0)
H
1

I use emacs org-mode to keep track of not only code TODOs, but my whole life. It works as an extremely powerful outliner with some spreadsheet and calendar features as well. I use mercurial for lightweight version handling and simple replication between different machings.

It works surprisingly well.

Hultgren answered 10/2, 2009 at 9:27 Comment(0)
E
1

I use eclipse as IDE, which collects all TODO's to a list and shows it in an outline. Very easy and usable.

Elbring answered 10/2, 2009 at 9:27 Comment(0)
M
1

When programming Java in Eclipse, I find it really useful to, as you say "pepper my source code with // TODO: comments - mainly because Eclipse looks up each one in the project and compiles a task list for me =) In Visual Studio, there is a Task List panel, which I use sometimes, but I don't find it as streamlined as just having the comments in Eclipse.

Mweru answered 10/2, 2009 at 9:27 Comment(0)
A
1

alt text http://www.86th.org/hudson.jpg We use the "Open Tasks Trend" feature in Hudson, this works for a slew of languages. For our C# project we have 3 levels of tasks and this is accomplished by different TODO: style comments.

  • High Priority Matches on FIXME:, HARDCODED: or HACK:

  • Medium Priority Matches on TODO:

  • Low Priority Matches on MEH: or CODEREVIEW:

Hudson will then take this list and trend graph it as shown in the picture, as well as have a sortable, filterable list of the tasks and it will display the messages on the web page with links that will take you right to the line in the source code on Hudson.

Plus we can easily setup points of interest for code reviews with CODEREVIEW: and have a nice concise list to print out.

Aggrieve answered 17/2, 2009 at 15:18 Comment(0)
F
0

if you use continouis integration it could do the work for you. For example i use hudson with this plugin http://wiki.hudson-ci.org/display/HUDSON/Task+Scanner+Plugin which is pretty nice imo. You have a graph which shows you if new tasks have been added between builds, and you can walk through them or the old ones to get an overview whats "open".

Falcon answered 10/2, 2009 at 9:27 Comment(0)
L
0

OmniFocus - I've tried a lot of ways of tracking ToDos and this has been the best by far. If you've got a Mac this is the way to go. The iPhone app is great too.

Lollis answered 10/2, 2009 at 9:27 Comment(0)
H
0

When I have many many todos I discovered that it is useless to track them. You end up with hundreds of todos that can't be done.

Only write what you are asked (boss ) and do what bring the biggest benefits everyday.

I however have a next list. I wrote what I'm currently doing at the top and things I need to fix to complete it. My next list can be done in hours or days usually.

Hegyera answered 10/2, 2009 at 9:27 Comment(1)
Personally, I keep todo's, and have run into the same problem. Sometimes I wonder if I'd be better off just letting what stays in my memory determine it's importance ... what ever I forget, obviously wasn't that important. But I'm not sold on the idea, since I still keep lists.Burchette
B
0

One of our source code modules is absolutely littered with inline #pragma todo lines. The build output is polluted so we never can really tell when there are any new compiler warnings. Some of the todos have been there for years and the original developer has long since left the company.

Brunson answered 10/2, 2009 at 9:27 Comment(0)
L
0

doxygen can track such issues

Lavern answered 10/2, 2009 at 9:27 Comment(0)
K
-2

For small projects, I use commit comments from my SCM. These comments look something like this:

MyProjectName: Done this, fixed that. The killer feature is to be implemented. The other feature is coded but not yet tested. Should refactor this module.

Kilocalorie answered 10/2, 2009 at 9:27 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.