Failure is a Friend
I'm a forgetful person. I almost never leave a room without coming back to it to take something I left behind. I tend to forget birthdays and other important events. And so I worked up little mechanisms to help me remember stuff, such as writing everything down, and setting reminders in my cell for phone-calls I need to remember to make.
One issue I always had, was going back to a certain piece of code I'm writing, a day or two later. I waste at least 10 minutes trying to remember what exactly I was doing and thinking when I had last stopped. At first I had solved this by writing down the next thing I'm supposed to do before I move on, but I now found a much better solution. I make sure that before I stop coding, I have a failing test that describes the next thing I'm suppose to achieve. For instance, if I need to next implement XML Serialization for an object, I would create a ToXml() method for it, throw a NotImplementedException within, and make sure I have a test that calls this method. This way, the next time I come back to the module, I just run its tests, see what fails, and go on from there.