views:

250

answers:

12

Sometimes, I work on projects for a week or so and then get side tracked for a few months doing something else. It's sometimes a pain to go back to the code and figuring out what I was last working on.

Any suggestions on how to document unfinished projects that are going to get sidelined for a few months?

For the most part, I do, php and C with some python.

I use Eclipse with subclipse and Trac plugins and Geany as my main IDEs

+1  A: 

I find myself in your situation a lot. Mind Mapping's a nice, organized way to jog your memory: Try FreeMind - http://freemind.sourceforge.net/wiki/index.php/Main%5FPage

Walt W
A: 

If you don't want to change too much, you might consider using your commit messages to not only describe what you did, but what you'd like to be working on next. I've been using unfuddle for a little bit, and have been really happy with its tickets and integration with subversion.

Jeff Barger
+1  A: 

Leave comments inline.

Beth
A: 

If you want to keep it simple:

Notebook with your project todo's and a good helping of notes on what you were doing, where you left off, what issues you had, what needed to be researched, what worked well, why you did something a certain way, etc....

The more the better from this aspect.

More Technical:

Comments in code, source control checkin notes, project wiki, etc....

klabranche
A: 

I think the best solution is to use a local DVCS like git. Make sure you check in changes frequently. Then when you come back after a hiatus you'll have a really detailed log of what you were in the middle of doing.

Casey
A: 

I like to run through my task list and view the item's I've completed (as a refresher) and the items I was going to work on next.

In the end it still comes down to hours (if not days) of reading your old code and loading everything back into your memory before you'll be as efficient when you left off.

Chris Pebble
+1  A: 

This has a free version which I've used. I find it quite helpful.

http://unfuddle.com/

cakeforcerberus
+1  A: 

Sounds like you're mostly using open source stuff but one tool you might want to look at buying is Microsoft OneNote. I use it to keep everything related to a project together - emails, spec documents, questions, to-do lists, meeting notes and everything else. It keeps it all together in one easy-to-find location. Combine that with some good code commenting habits and a source control system and you're set.

TLiebe
Concerning, Open source stuff, I rely heavily on MSOffice07. I'll try one note, more seriously this time. I was however, looking for something that's incorporated into eclipse/genay
dassouki
It's not integrated into Eclipse but if you can get into the habit of using it, it's really quite useful. There might be open source programs that are comparable but I'm not aware of any.
TLiebe
+1  A: 

I use ClockingIT and CloudPad. Both are free and work remarkably well.

Spencer Ruport
+5  A: 

Create a TODO file that you place in the root of the project. Modify whenever what is left TODO changes, especially just BEFORE a major checkin. Checkin the TODO file whenever it changes too. When you return to a project and grab the source from your source control (you are using source control, right?) the TODO file will be there to remind you of what you were doing and where you were going.

jmucchiello
+1: Also, put TODO's in your code -- liberally. More TODO's the better. Start putting them in immediately -- as soon as you think of it. Tomorrow, you may finish that code and remove the TODO.
S.Lott
Try to use something more structured than a simple text file. EMACS org-mode is an absolutely insanely brilliant tool for tracking almost *anything* in a plain text file, by using just some simple markup conventions: http://OrgMode.Org/
Jörg W Mittag
Jörg: By Unix tradition, files in a distribution are in all caps are unstructured, plain text files that tell you about the project: LICENSE, TODO, CREDITS, HISTORY, etc. Having an external ToDo tool is great too. But if you are struggling to figure out how not to forget things. Simple, plain text can get you started. Your advice works just as easily in a spreadsheet, too. It's all good. And once the project grows you might switch to project/task-tracking software. Use whatever works but remember that your project is your goal. Tracking TODO info is not your goal.
jmucchiello
+1  A: 
  • Keep the code and other resources well organised so you don't have to unravel complex links or find files that are missing from the obvious locations because you thought you'd remember where they were.

  • Write down brief overviews of the main systems, to get yourself back up to speed quickly later.

  • Comment your code as if you're writing it for someone else - when you come back to it it'll be much easier to remind yourself how it works.

  • Put TODOs in the code to mark unimplemented or unfinished sections, explaining what you intended to do there.

  • When you are about to 'park' a project, write down where you were up to (the last parts you just got working, and at least the next few tasks you intended to do, if not a list of all remaining tasks.

  • Make sure the code is safely stored under source control so you can easily find the latest version and resurrect it. Code and files left lying about have a tendency to get muddled up (e.g. "I've found 2 copies of my project but can't remember which one is the most recent one")

Jason Williams
+2  A: 

Use some kind of a simple issue racker. There are a couple of issue trackers that don't really need any sophisticated installation and most importantly don't need a server. They work by keeping the issue "database" inside your version control system. (This is basically a more tool-based version of the TODO suggestion by @jmucchiello ).

Here's some examples:

Dist-Bugs is a website which is devoted to discussing these kinds of "distributed bug trackers".

Fossil is a distributed version control system, which also includes a bug tracker and a Wiki. (Note: the Fossil website itself is completely running off Fossil.)

ikiwiki is a "Wiki compiler", which generates Wikis out of static text files in a version control system. It can also be used as a lightweight bug tracker, in fact, the ikiwiki bug tracker itself runs ikiwiki (as does the ikiwike website and also the dist-bugs website).

Jörg W Mittag