What works for me is to write the code with a target audience in mind. That target audience is someone who learned the language for one term in college and doesn't know it all that well. The maintenance programmers have met those criteria, except for one person who didn't know the language at all.<p>I write programs in pseudocode first then add the code underneath, keeping the pseudocode as a comment. The code I've written from 1984 to the present day is still quite readable, apart from a parser I wrote in Perl.
Uh, I'm sorry...but I can't imagine it being fun to look at old code that you've been able to ignore for six months straight, no matter how well it's documented.<p>Ad I think the jury's out about writing tons of comments in the code. A full test suite is much more useful and asker to maintain