GTD and TDD
Getting Things Done: make a list with everything that you need to remember to do.
Test Driven Development: make a test for the feature you are about to implement. It will fail, since you haven't implemented it yet. Make a list of what is evidently absent or wrong. Do a task, removing it from the list. Keep adding every new problem to the list as it is discovered.