How we think about problems determines how we think about solutions. One tool I come back to regularly is the mind map.
You start with a central idea and map ideas out from there. What I like about it is how you can take any problem, put it in the center, and start mapping out ideas around it. You can break the problem into sub-problems, and the sub-problems into more problems, until they are just small problems.
It helps you see the big picture because everything is still linked to the main central topic, and at the same time you can zoom right down to details.
Here are 7 examples of mind mapping from a developer's point of view:
1. Application Architecture
Most applications these days go beyond the classic Ruby on Rails MVC pattern. For example we often add decorators, service objects, and Rails engines. On top of all that we use frameworks like Backbone.js to simplify complex view logic. A simple diagram is always worth drawing up:
Once you've sorted out the app structure, there's more to design! There's a whole stack of web services, tools and server configurations:
What's great about the mindmap is it's flexibility. Just add new nodes to describe new ideas, move them around if something's not right, and use arrows to help explain relationships.
2. Domain Models
I think this is where mind maps shine. When thinking about the structure of models I set a central node for each object and use arrows to show their relationships. You can move models and relationships around, until you've sorted out the domain logic all in a simple mind map.
3. Trying to Understand Code
Ever looked through some complicated code? Mind maps can help untangle the spaghetti.
A Site map has a tree like structure just like a mind map.
5. Task management
Using mind maps for tasks helps you split things down into sub-tasks, add offshoot tasks, notes. Simple features that the best task management software struggles to implement.
6. Keeping Meeting Notes
Ever tried to jot down points mentioned in a meeting? It can be tricky. But just use a mind map and create a new branch for each topic that comes up. You can add more details through sub branches. It keeps descriptions to a minimum and focussing on the essential points, which makes it super fast and also easy to come back and refer to.
Now it's your turn. I encourage you to install a tool like XMind if you haven't already. Next time you reach for the notepad, try a mind map instead.
Take a look at 10 Things The Best Programmers Do as well!