In my experience, I may not remember what the heck I was thinking writing that code even 5 minutes later.
If I ever start wondering what my code is supposed to do, once I figure it out, I comment.
After doing this for a while, I've learned what I'll probably want to know later, and what will seem obvious.
Besides this addition, I think your outline hits the nail on the head.