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.
Why do I feel like I'm being marketed to?
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
Loop
Waiting for the editors to wake up.
End Loop
Mind Maps are basically digitized "brainstorms" that we were all (some?) taught in school. Digitizing anything comes at a cost: Using the UI. Usually pencil and paper is way more freeform and faster, but having your ideas digitized has some intense nerd value!
Compendium
Shai Schticks:"You don't make peace with friends, you make peace with enemies"
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
Beyond mind maps, there are Warnier-Orr digrams. One of the bigest disappointments in software is that Varatek hasn't upgraded B-Liner so it runs well on Windows 7. For small systems design, it was great.
http://varatek.com/
"The mind works quicker than you think!"
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.
If you are an experienced thinker then you probably need time (in ways you have got used to eg On waking-up or hiking or "Shut up! I've just had an idea!") to note your thoughts and see where they lead. You're quite likely to have ways of grouping and ordering notes on [bits of] paper which just happen. The only software you need is a pencil and scrap paper.
If you are one of the 90% of people who don't use analysis and imagination then you need prompts and buckets. Prompts to ask say 'what are the sub-tasks' and buckets to keep similar things together. MM don't have prompts and the buckets are very generic. For a particular task such people need particular headings to put 'first answers' into.
This is not the same as the Dr Dobbs of 1994, 1995 and prior :-(
WTF is going to happen next? A description of using a text file to write down high level concepts then inserting indented lines that break the concepts into even more pieces? Then, indent again and break down even further! You could even call the non-indented lines functions, the lines with one indent a function as well, and the lines with 3 or more indents pseudocode for the functions! Maybe you could even use this text file to produce comments for the code. I think I am onto something.
HyperList may be an alternative as a straight text solution (even with a VIM plugin doing all kinds of tricks).
...that they are supposed to be trees.
But the human mind thinks in graphs.
(No, cross-links don't cut it.)
That's why I had to abandon them a long time ago,
why I also abandoned class hierarchies,
and why I work on abandoning directory trees and XML right now.
Instead I use a self-written interactive dotfile-renderer (or just paper, a scanner, vectorizer and to-dotfile transformer, like I did before),
Haskell (which is much more flexible with its typeclasses),
and soon my own data graph system (with Fuse interface for backwards compatibility) (which will also probably replace the dotfiles.
yep. User Mode Linux is definitely too complicated to use for any real serious business work, as any slashdotter knows. we should all be using the latest and greatest version of windows with a large coloured tile of applications full-screen, just like a mind-map except regular and safe and already laid out with the paths predefined, so that we don't have to think or use any creativity at all. yes! that's it! we should all get lobotomies, stare at pretty squares and be happy to live in our brainwashed state. no need for User Mode Linux at all.
Funny, why do we even talk about 'how'. Surely every professional programmer knows the 'how', that's why they're a professional programmer.
I just expect to be able to give a programmer a spec and he'll deliver a product that matches the spec. I don't expect to tell him how he should do his job.
You're not in university anymore, nobody should have to hold you're hand and tell you how to the the 'HOW' part of your job, only the 'WHAT' part.
As mentioned above they can't handle complex data structures (or much data at all). Wiki-based software is better.
http://zim-wiki.org/
http://wikidpad.sourceforge.net/
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. :-)
I spent an hour and a half yesterday jotting down the design for a fairly small supporting application I'm planning to write, pushing some objects around on paper until things felt fairly good, trying out different patterns to see what seemed to fit the design best and figuring out what the config files looked like. I'm pretty comfortable that I got everything that it needs to do, and foresee no problems getting it coded.
I still haven't found a tool that works as well as pen and paper for this process. It really isn't that hard to just sit down and organize what your program is going to look like, as long as you're not actively avoiding having to do that. Mindmaps (nor anything else) will magically fix poor design skills.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
When I was very young, I used to swear by a book by Tony Buzan that was very much along these lines. The title was "Using Both Sides of Your Brain" or something like that. It was helpful to me though it made my class notes unreadable to anyone else. (This was before it occured to me to use computers for these things.)
System engineers use Systemigrams which can be more powerful since you have to think through the context, and in turn flow, of the space you are looking at. This is not a process flow diagram but contextual integrity. Maybe not as complex as UML but will require more thoughts on the stakeholders of what is being captured.
Mindjet Mindmanager rocks. I have shown that tool to at least 20 people and I don't think a single one adopted it; fools. For brainstorming I can't imagine a better tool. You just keep throwing information into the tree and there is always a perfect place for it. My favorite is when a long term project has a new idea for some future feature and I go to put it in and it is already there in the exact place where I wanted to put the "new" idea. Then as the project moves along the tree becomes a source of great ideas that had popped into people's heads long before.
Even for putting together a report or whatnot. You just keep gathering facts and ideas then then export to word; a bit of trimming and editing and you have a report.
But as I said, I have shown that product to at least 20 people with none adopting it. I can't imagine how hard it is for the MindJet people to sell it. Easily one of the first products I install on a new computer, well before an office suite, but after my IDE.
I accidentally created a mind map years ago when I was given an assignment in college (before university), to create a round robin task scheduler (basic time slicing) with more jobs on the ready queue over time. I wrote one that worked really well. You could uncomment one line, and see everything running beautifully. Before I wrote the program I was in the library, dog tired. I just started writing down what needed to be done in boxes on a sheet of paper. As I added more stuff, I would draw lines between the boxes showing what needed to be done next, and then would scratch them out when I added more boxes about what should happen in between or before or after. At the end, I went over it. A whole bunch of labelled boxes with lines running here and there. I showed it to the prof., who looked unimpressed. I coded it without any problems, and it worked perfectly right away. He needed the help of another prof. to do it the way I did it. Nearly everyone else in the class did it another way. The other way was what was on the test.
How is drawing UML-compliant boxes more expensive than drawing regular boxes for mind maps? Is there somewhere in the UML specification that says you can only use Faber-Castell pencils or commercial software?
i used to watch tony buzan on the television when i was about 12. i have been using mind maps ever since. to the people who "just don't get it". that is your loss i'm afraid.
Video of me using Compendium in real time to create a concept map of a discussion: http://barcamp.org/w/page/47221410/Desktop%20or%20Mobile%20or%20Web
No video, but here is the concept map made in real-time with Compendium in another workshop at the 2011 Capitol Camp:
http://barcamp.org/w/page/47222818/Tools%20for%20Collective%20Sensemaking%20and%20Civic%20Engagement
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
I've used Ketso for mind mapping in a group product design brainstorm session. It worked really well for capturing everybody's ideas and grouping them to come up with common themes and shared ideas. I know its a bit low-tech, but its nice to get away from the computer sometimes.
I counseled one thesis where the student was awestruck by FreeMind. His highest level of achievement was to cram the whole topic into one gargantuan mind map. That didn't help him write one line, and seemed more to hinder his ability to start working from any particular point.
Instead, when he was sinking into desperation, I sat down with him and we basically brainstormed the whole topic all over again and put it down to a bullet list, which turned into a preliminary index, and each top level bullet was sub-planted with more in-depth bullet list, which was then converted to text. Text, just like code, flows naturally better as a list than a graph.
Put short, it's nice that you found a tool. It's a hammer and not every problem is a nail.
This article is an editorial in which the editor is discussing a tip that works for him.It's pretty obviously not a technical article.
Dobb's has good content. The home page has a long meaty article by Walter Bright on Composability in D. Their five-part tutorial on Go last month was a good intro to the language. That being said, I do miss the hard copy versions (as I do for many other pubs).