Let me add a verbal ++ to the above. I've found (over lots of years of experience), that
if you can't express it in pseudo-code you probably don't understand (or don't completely
understand) exactly how you're trying to approach the solution. There are lots of times
when a lack
of being able to express something (completely) in pseudo-code led me
to the conclusion that I didn't adequately understand the interfaces I was dealing with
and the way I needed to manipulate things.
The really retentive will then go through after the fact and add in the "why" commentary
to supplement the "how" pseudo-code. Or, as a button I own says: "Code as if whoever maintains
your code is a violent psychopath who knows where you live."