In Code Complete, McConnell outlines a Pseudocode Process that involves doing the vast majority of your routine design using plain English rather than in your programming language of choice. This allows you focus what needs to be accomplished by this routine rather than worry about implementation details.
I think this process seems to be the most useful for complex algorithms like an assignment I had in college, B-Tree. A B-Tree is a common storage method for databases and filesystems. It stores all the data in the leaf nodes and the interior nodes are merely used to search for the correct data node.
My approach to complete this assignment was to work case by case and adapt the algorithm to solve each case. I was never able to generalize my approach; I was merely hacking something together. That works well enough for college programming assignments, but not for code that needs to be maintained and understood in the future. The pseudocode process may have been useful to think through the algorithm beforehand. Or at least taking the time to generalize the algorithm after the original case by case work.