In a post from Nick Halstead on the Programming and Management Blog, he discusses something just about every developer is familiar with - pseudo code.
Writing pseudo code and program code separately simplifies the overall task by splitting it into two simpler tasks. While writing the algorithm the developer can focus on solving the problem, not how it is written in a a particular language. Once the pseudo code is written and has been checked; writing the real code becomes much simpler, the programmer is only concerned with converting the pseudo code into the appropriate program code.
Nick looks at both sides of its use and includes the good (doesn't take language-specific understanding) and the bad (could hide logic flaws that could be tragic later). He also includes a quick overview of how to write it, making sure to keep things high level and all about the structure.