Thanks to John Lam, I read about mind mapping, which was a new concept to me. In particular, he pointed to the Freemind project at SourceForge. John mentioned that he used it for brainstorming. However, I have found that it is very useful for the technical design process.
I looked at the screenshots. The concept intrigued me. However, I didn’t see a compelling need for the software at that time. Without the proper motivation, I wasn’t going to spend time installing the Java runtime.
A couple months ago, I was asked to lead the design of a new business process in our application. This is the first significant project in which I’ve been asked to take the lead. My supervisor and I spent 6 hours a week over the course of several weeks working out the business cases in depth. We used OpenWiki to record the information.
The Wiki page worked pretty well. We were able to elicit comments from interested parties on our team who were following the updates. From the beginning, I had planned to use a Wiki page to record our technical design notes as well. As we worked on the business design, I realized that some characteristics of the technical design process were going to make the Wiki page inefficient.
The general process using the Wiki went like this:
- Diagram on the white board
- Record on paper
- Update Wiki
When we were doing updates, sometimes the updates were simple and could be entered directly into the Wiki in a couple minutes. However, most computer entry was done between sessions. If enough time passed before updating the computer info, sometimes the notes were unclear and unrecorded information was missed.
Ideally, we would have worked off the computer information and updated it as we talked. However, the editing environment for Wiki pages is not terribly sophisticated. This hindered real-time editing during the discussion process.
My review follows here. It is more about the mind map concept than specifically about the FreeMind program.
For the technical design documentation, I considered these key issues:
- Information is often hierarchical in nature
- Structural changes are common
- Need to see “big picture” as well as “detail”
Mind map information is hierarchical by nature. This fits perfectly with technical documentation.
Concepts are encapsulated in nodes, which makes it very easy to reorganize the information. When somebody asks, “Shouldn’t we split these up into separate categories?”, the items can be split with drag-and-drop. Need to reorder a series of multi-part steps? Simple drag-and-drop can change the order. You can do drag-and-drop with a text editor, but you have to manually select sections of text that represent a single topic. With the nodes and branches of the mind map, every thought is selected with a single click.
Here’s a practical example of how this works for the design process. Business objects must have knowledge of the database. To create a new business object, database objects must also be created. With the mind map, you can record the database details along with business object. This keeps the information in close proximity for review.
Eventually, work must be assigned to developers. It makes sense to group all the database information together and give it to somebody to do as a single task. With the mind map, you can visually drag all the database nodes together and give those to the developer.
When the discussion switches from big picture ideas to detailed ideas, the mind map can be “folded” and “unfolded” to provide a view that is consistent with the level of the discussion. Folding hides more detailed information. Unfolding reveals the detailed information.
FreeMind supports applying styles to nodes and branches. We apply styles to nodes to keep track of what kind of followup might be needed. We find adding color to the different branches helps keep perspective when the size of the map becomes pretty big.
FreeMind also has a Java applet that lets you view the data through a web page. I have placed this on an internal IIS server and it allows others to see what we are doing. They can’t change anything through the web viewer.
For people who have a difficult time comprehending the mind map concept, FreeMind also supports exporting the data to an HTML file. The data is exported in a standard outline style. The HTML can be simple text or DHTML tags can be added to allow the text to be expanded and collapsed (ala Visual Studio regions). I put this HTML page on the web server as well. Both of them are linked from our Wiki.
The underlying data is simply an XML file. This is great for storing in a source control system. If you work with XML regularly (we don’t), I can envision writing custom analyzers of the mind map data. Somebody who is really ambitious might create a “code generation” from the mind map data.
One of the best features of FreeMind is that it is free. When trying something totally new, you can’t go wrong trying something that is free. There are plenty of commercial applications that support the mind map concept. We’re pretty happy so far with FreeMind.