I observed that discussing with your self about a problem is a fairly common practice. I find it is even better to write what you think. Not only it forces you to materialize your problem, but the written material can serve you as a log for future reference.

I have been trying different ways to log my self chatter, I created a gtalk account to whom I would talk to. But I found that this way I would ways have to set a lot of context before going to the problem. Made a small script where I would just append a text, properly dated, into the end of a journal file in the current working directory. By being in the project directory I would set part of the context I was in, and it would even leave some information to project contributors. I started to like this method, and I was about to improve over my script, but then I thought that maybe this is a solved problem.

Some people like to blog. I tried that, but post are generally a synthesis of the whole story, and most of the time I would forget pieces that were relevant. I could be more atomic. Tweeter would seem a better fit for it, but then it falls into the context argument I described above.

I thoughts?


  • Get a dog and talk to him. They're usually very good listeners.
    – user8685
    May 29, 2011 at 14:36
  • @Developer Art: Why not a cat? Cats are calmer ;)
    – user2567
    May 29, 2011 at 15:46
  • 4
    @Pierre 303: Cats don't take you seriously. A dog will.
    – user8685
    May 29, 2011 at 17:03

2 Answers 2


Get a rubber duck. But seriously, don't overthink that, or you will lose the benefits of this technique. Also take into account that such journal probably won't be useful to anybody except you, so don't treat it as a substitute for comments, commit messages, and documentation.

  • 1
    +1 rubber duck - the original "pair programming"; except the duck bathes more often May 29, 2011 at 17:11

I don't know about specialized tools, or that they are necessary.

I keep a development log file as part of the project, to track what i did and why and what i was thinking and open issues and what to do next. It makes it easier to switch between projects. I start a new file for each project revision.

I also keep a separate Issues document for each revision, and put open issues in it - things to investigate, alternatives not considered, problems that might come up later, compromises that were made that might have to be unmade, et al.

(I tried talking to the office cats, but they really don't care.)

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