Mind Maps: the Poor Man's Design Tool
CowboyRobot writes "'UML too complex? Flowcharts too old school? Mind maps offer a simple way to capture designs and weave them together elegantly.' The quickest way to begin designing a program is to simply write down the steps in normal text, but this method breaks down with more complex projects. UML can be a useful format for larger projects but can be difficult to get right, especially when trying to use it with a less conventional project. The middle ground are 'Mind Maps,' '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.'"
Slashdot discovers mind maps. News at 11.
I suspect we all know what a Mind Map is, and what their uses are. Alas, I don't know of any program which implements the original concept for Mind Maps (BBC2's "Use Your Head" series from the 1970s). Does any existing program support cyclic relationships, for example? Other than as a hack with external arrows or similar added as decorations.
Those who can make you believe absurdities can make you commit atrocities. - Voltaire
I like FreeMind (mentioned in the DrDobbs article). Of course I knew about mind maps before, but the ability to export a perfectly formated map as Pdf, HTML and in various image formats is great. I think I'll be using this instead of paper in the future. I've tried various UML design tools in the past, but they all require that you have already made some of the decisions beforehand.
I think UML is a great way of describing a system once you have made all major decisions, but whenever I need to think about a new project, I have always prefered pen and paper. I'll seriously give FreeMind a go now.
She made the willows dance
You can spend a week in a tiger team lock-in session, mind mapping the shizzle out of your next project. Eventually, a desperate delirium sets in, and you'll agree to anything just to get out of there. Thus the design is "finalised".
Then by the time you get back to your keyboard, some executive vice president of marketing is accidentally exposed to a copy of Wired, and decides that instead of writing an app to keep recipes on, what you really need is to ride the frontsurge to a collaboratively cloudsourced web 3.0 win-win solution, and the charade starts all over again.
Experience starts to look a lot like cynicism after a while.
If you were blocking sigs, you wouldn't have to read this.
You make a very poignant argument, but it fails to address that fact that yes, they are.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
I suspect that for most people, the reason to use a mind map rather than UML would not be UML's complexity. UML scales pretty well: a bunch of boxes with names in them and lines between them to signal what is related to what is a valid UML class diagram already. Instead, I think the problem with UML is that it forces you to think very carefully about what exactly it is that you're going to create. Back in the 1960's and 1970's, people like Donald Knuth and Edsger Dijkstra advocated careful thinking about software, rigid specification, and proving correct any important algorithms. They saw software as a mathematical construct, and the exercise of building software as akin to proving theorems.
Fast forward to the Internet age. Software is everywhere, and rare is the project where the customer can tell you clearly what they want. The small cadre of people who are capable of the precise and abstract thought required to do programming the mathematical way is not by far big enough to write all the software that the world needs, so even if customers could make rigid specifications, most programmers would find them written in an alien language. So we have adopted a biological rather than mathematical approach: specifications are never exact, software is always broken, but it's okay because the software has an immune system (we call it vendor support), which fixes up errors continuously. In such a world, maybe a mind map is as formal a description as you need.
Personally, I used UML to describe a logical data model in my last big project. I was the only one with a formal CS background in the project, but everyone understood the diagrams just fine. I had to explain a few more advanced things to some people, but it was no problem. And we did think everything through very carefully, and so far the whole thing is holding up very well because of that. In my opinion, even in the age of agile development and web technologies, careful thought is still invaluable in software development, and a diagram language that lets you specify a bit more detail when you need it is a very useful tool. I'll stick with UML.
Undoing mod points to post this. If you like FreeMind, you really need to try out Freeplane. Much more functional than FreeMind on so many levels. :-)