For thinking out code? My answer might not be what you are asking, but...<p>A whiteboard, a text editor that supports bulleted lists, and my legs.<p>If I have a general idea of what components are needed, I write them in the list, drilling down with nested lists on details of each until I have thought through what I need to code.<p>If I don't have it thought out enough to know what the larger building blocks are, I sketch on the whiteboard to help figure them out.<p>If it is such a new idea that I just need to let it percolate in my head, I go for a walk and just let my mind wander around the topic.
Writing my thougts out loud is what works best.
I open a notepad, start with my goal or thesis and explore the different roads.
Some roads are closed, i go back deleting them but summing up the reason of the choice.
In the end this process narrows down the best roads, and reading it helps with reasoning and meta-reasoning even more.<p>P.s. i am a big fan of concept and mind maps but the narrative mode outperformed them in my experience.
A lot of pen and paper, or whiteboarding. And, on the laptop, I do find mindmaps very useful in the first exploratory phase of a project — and I love MindMeister for that!