Every software product starts with an idea: “I want to build an
application to remind me of upcoming appointments,” for example. But there’s
a big gap between the original idea and starting to code. Bridging this gap
entails coming up with some sense of just what features the software will
include, and how they’ll relate to each other. On large, formal projects you
might handle this with a requirements management tool such as Borland CaliberRM or Telelogic
DOORS/ERS. But on smaller projects, you probably want to use a more
freeform process to come up with your requirements. This article shows one
tool for this job that I’ve had success with in the past: the mind map.
It’s Brainstorming Time!
To get started with a new project, you need to come up with your basic idea,
your “elevator pitch” that can be delivered in thirty seconds. This will help
you focus on what you’re about to code. But after you’ve achieved that focus,
you need to expand your view. This is the point where I’ll typically start
brainstorming a more detailed list of the things that the software will do.
There are a lot of ways to do this brainstorming, and choosing between them
largely a matter of personal preference. Some people like to use a text editor
or a word processor and just type ideas, perhaps organizing them into an
outline. Many developers are happy with a whiteboard for this purpose, although
that leaves you with the problem of saving the whiteboard contents for later
My own personal choice for freeform brainstorming is the mind map. Tony Buzan, who invented this form of
diagram, describes a mind map as “a powerful graphic technique which provides a
universal key to unlock the potential of the brain. It harnesses the full range
of cortical skills-word, image, number, logic, rhythm, color and spatial
awareness-in a single, uniquely powerful manner.” You can think of a mind map as
a sort of two-dimensional outline; rather than organizing ideas into a linear
list, you spread them around the page and connect them. Mind maps can also use
icons, graphics, fonts, colors, hyperlinks, and other techniques to include
information that’s hard to put into words.
There are several software packages out there to create mind maps, which is a
good thing, because most developers don’t have the graphic skills to create a
nice one by hand. Here are some of the ones that I know about for Windows:
A Product Design MindMap
Let’s get right to the meat of this method. Mind maps start small and grow
organically. To build a mind map, you start with a central concept – in this
case, the name of the application to be built. Then you jot down other related
ideas and concepts as they occur to you. Sometimes, these will seem to fit
directly with the central concept. Others might be floating around as yet
unconnected to anything else. No matter – the important thing is to start
putting stuff on the map. Figure 1 shows an early stage of building a mind map
for software design.
As you build the mind map, new ideas will occur to you, and you’ll start to
see how ideas that you’ve already put down fit together. At the same time,
you’ll start to get a feel for which parts of the map are important enough to
emphasize with different fonts or images. You’ll probably end up rearranging a
few times as you attempt to capture everything that’s tied to your original germ
of an idea. Figure 2 shows what our hypothetical reminder tool might look like
as it’s expanded into a fuller mind map. I used MindManager to build this one,
but any of the tools I mentioned can do something equivalent.
Here are a few of the important points about this approach:
- The mind map is a flexible, flowing tool. As you think of new aspects of
your subject, you can type them in anywhere and then move them around to fit.
This makes it very well suited for brainstorming, where the goal is to get all
of your ideas down on paper before you look at them too critically.
- You’re not limited to plain text on a mind map. In fact, you almost
certainly want to use fonts, icons, bitmaps, colors, and so on to dress up a
mind map. It’s been my experience that the more playful you make these things,
the more likely you are to come up with interesting ideas.
- A good mind map will both record your ideas and provoke them. The one in
Figure 1 is just the start of what I’d want for a product design; before writing
code, I’d like it to include a lot more detail. After you’ve gotten your initial
thoughts down, print a copy or leave it on screen while you’re doing other
things. Soon enough you’ll find yourself expanding branches and adding new ones
as additional features and cautions occur to you.
- Mind maps are not technically intimidating. You can share them with
management, testers, and other folks who don’t write code without scaring people
away. Toss up a mind map on a projector at a meeting and you can even work on it
as a group to hone a shared vision.
After the Brainstorming is Over
One of the best features of software-generated mind maps is that they’re
dynamic. It’s easy to move branches around, add or delete text or images, and
otherwise update mind maps. If you’re using a mind map for brainstorming,
consider updating it as your project proceeds to give you a continuously current
snapshot of your ideas. If you do this, I suggest you archive a copy of the
original version first. When the project is released, it’s fun to look back and
see how your ideas about it have changed and evolved. In fact, you might even
put your mind map under source code control along with the rest of the project
But you can go even further than that: depending on your corporate culture,
you can turn your mind map into a project management tool. Most of the high-end
mind-mapping software these days includes advanced features such as hyperlinking
branches to other documents and tracking the percent done for any given branch.
Rather than managing with an application such as Microsoft Project, you can turn
the mind map itself into the management tool. This requires you to push each
branch of the tree out until it’s a task that is small enough to be assigned and
implemented. Then the project manager can track on the tree exactly what’s going
on. Combine with some color-coding, and you can get a good feel for which parts
of the project are doing well (and which ones are in trouble). Link in project
documents like test plans and detailed design specifications, and you have a
single place to go to start exploring what’s going on.
Mind Mapping as an Essential Tool
Even if you don’t have a product to design right now, I urge you to
investigate some of the available mind mapping tools. As developers, we’re often
inclined to store information in a database or a spreadsheet – or, failing that,
as a simple list in NotePad. Mind maps provide a nice middle ground to hold
unstructured information that needs to break out of the rigidity of a database
structure, while being more than a simple list of items. If you do any sort of
brainstorming, you’ll probably find them a useful tool.
Mike Gunderloy is the author of over 20 books and numerous articles on
development topics, and the lead developer for Larkware. Check out his latest books, Coder to Developer (from which this
article was partially adapted)and Developer to Designer, both from Sybex. When
he’s not writing code, Mike putters in the garden on his farm in eastern