But the truth is, my undocumented projects baffle me if I leave it for a month. Usually not because the code is complicated, but because the dataflows are or some external API behaves a certain way or there is some quirk in how a use case is implemented.
So as a matter of practice, I make it a habit to document everything so that if I'm coming back to it, I can quickly pick it back up.
McConnell's Code Complete has a great quote that I always have in mind:
> “The information contained in a program is denser than the information contained in most books. Whereas you might read and understand a page of a book in a minute or two, most programmers can’t read and understand a naked program listing at anything close to that rate. A program should give more organizational clues than a book, not fewer.”