Channels ▼


Mind Maps: The Poor Man's Design Tool

Like many of you, no doubt, I am a constant tinkerer with programs I'm working on. I'm nearly always refactoring and, in my head, I'm constantly refining designs as I go along. While I try to limit these tendencies so that I can actually get something done, I find the process of constant appraisal and revision to be useful. It deepens my understanding of what I'm doing and often turns up small changes in design that can streamline an operation or facilitate a downstream action.

Many times, I want to capture the design I have in mind without recourse to UML. While UML is a reasonably good format (and due to its universal adoption, the right one to use for many use cases), it's not an easy format to get right, once you move out of the core two or three diagrams known to most developers (class, sequence, use case, etc.) What I'm trying to capture is frequently none of those. I simply want a way to write down a series of actions, decisions, or implementation details that hang off some part of the existing software.

Text is an easy way to do this, and I've previously discussed the value of capturing coding-time decisions in a spreadsheet-like document. However, text quickly becomes problematic for anything but the most trivial of notes. Design artifacts should be easy to shuffle around, change, adapt, and otherwise modify. And so for that, I use a mind mapping tool. Mind maps are a weird name for a diagrammatic representation of loosely connected ideas. They are a central tool in brainstorming sessions. Mind map tools help capture ideas and then mush them around until you have the structure you want. While mind maps take many forms, the canonical representations look like a central idea with branches sticking out:

This is a preliminary mind map for HTML5 capabilities of a project I contribute to. It is read by going to the center point and starting with the top-most right branch ("At Startup"), then proceeding clockwise through all the branches (to "Verification"). Actually, this is the uncluttered, so-called "collapsed" version of the map. When given its full expansion, the mind map looks like this:

[Click image to view at full size]
HTML Mind Map

As you can see, lots more notes have been filled in off the various branches. I've also added icons on items where decisions still need to be made. By the time I'm done laying out the HTML 5 support in this project, the map will be even bushier. Because I can selectively open and close branches, I can focus on just what I need to. Later, if I want to move items from one branch to another, add images, icons, and the rest, I am able to tweak and modify to my heart's content until I'm satisfied I've captured what I need.

This might not look like a design diagram, but in fact, by the time I'm done, it will contain a huge amount of design data. Beyond its ability to let me initially capture fragments of ideas and then slowly build them out, the mind map has one other salient benefit: I can send it to anyone, including users, and they can read and understand it. Try doing that with a UML diagram!

When the design is more or less to my satisfaction, I can extend the arms of the map to include notes on the code implementation. I might, for example, include references to existing code, comments on the choice of a possible collection needed for a specific feature, as well as other notes about potential coding issues. This is not a full spec, of course, and can't substitute for one, but if it was assembled in conversations with the team, it generally provides enough information so that they can progress without stumbling into crevasses.

Mind maps are beneficial in other contexts: They function equally well as tools for writing documentation. User documentation often consists of discussions of many features that frequently have to be resequenced as new functionality is added. The mind map enables this shifting around and encourages quickly capturing a key point to be made in one of the subsections in a chapter — all of which is neatly encapsulated in the hierarchical, spidery format of the mind map.

There are several free mind map products available in the open-source bazaar. The one I've used most and know best is FreeMind. I know users of other packages who prefer theirs, but the OSS packages all do more or less the same thing. Among commercial packages, XMind gets great reviews. If you prefer drawing up maps and diagrams in the cloud, then MapMeister is a choice that many developers seem to like. Whatever your choice, if simplicity is the watchword of good software, then mind maps certainly deliver.

— Andrew Binstock
Editor in Chief
Twitter: platypusguy

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.



I find my diagramming needs neatly met by Microsoft's Visio and VUE (, which is a bit less constrained than a mind-mapping tool.


The key benefit of mindmapping in designing software is that it let's you clarify your thinking, by presenting you the pig picture in front of you, while freeing from having to remember every details of the problem.

This is an another example of using mindmapping for designing a backup file formt:


Yes Mind Maps can probably be useful. However, in my experience, they are often used as an excuse not to learn the proper techniques and tools. I think you have to keep in mind that Mind Maps are primarily a "brain storming" tool. There has been a lot of work done in software engineering to find the correct way to present information to specify user requirements and software design. One would be crazy not to capitalize on this body of knowledge. It does not mean that using alternate methods is always an error. For example even though CRC cards are not part of UML they represent a good method to design and document the design of software. Mind Maps however can easily become a kind of "do it all" technique that is far from optimal. I was once given a huge Mind Map and a collection of document that was suppose to be a "Domain Model". It was really painful to use that collection of document as a Domain Model and it was clear that the problem was that the person either did not have enough time to build a proper document and/or did not really understand what a Domain Model was and how to build one.


You might mean 'on premises" otherwise building on a premise, which could be a bit metaphysical...


We used freemind in earlier days <= 2008 to brainstorm about new products. Lately I discovered that freemind developers have developed freeplane (http://freeplane.sourceforge.n.... In my opinion a very good alternative.

Remark on a "Poor man's design tool": have a look at Generates images from text files.
A very good combination with a mindmap tool which stores images as well.


OK. "I can send this to almost anyone..." Meanwhile, I think you'll be hard-pressed to find a more understandable way of communicating the same information.


I would contest the statement "I can send it to anyone, including users, and they can read and understand it." I don't find this very understandable.


I've been using OmniGraffle for informally tracking tasks and dependencies for years: the pretty graphs help me move into a right brain place. But I was getting really frustrated trying with 20-character class names overflowing their tiny oval, so this is a welcome alternative.


Great idea. I have used mindmaps for brainstorming and presentation, but you have just introduced a simple design tool which is intuitive and free. Thank you!


Quite a few of us would have the habit of drawing informal diagrams and loosely connected blocks of text during design or development. This is a great way of gving a standard form to those simple but useful practices. Nice article! Thanks.


Great to see others appreciating the practicality and simplicity of Mindmap designing. We have been using mindmaps for XML structure design for over a year. Either build new, or reverse engineer from XSD schema - then click and generate. See our project on Sourceforge -



I was wondering if you had the chance to take a look at WiseMapping( I feel that it's a nice mind mapping tool alternative. It has the plus that can be installed on premise and it's Open Source(