Over the past several years, I have read and seen multiple references to a practice called Visualization, which is when a person rehearses a physical action by performing the task mentally.
Examples that come to mind are the NASA astronaut training program, Olympic athletes, and the Navy's Blue Angels.
Note: You can perform an Internet search on Visualization and any of the above topics and find a host of articles for further reading.
Earlier this week, I was shocked ( and a bit astounded ) to find that I actually use Visualization techniques myself in the course of my software development.
I was shocked not because I was doing it, but because I have always done it and didn't know it had a name and that other people were using similar techniques to mentally rehearse physical actions. Pretty weird, I thought.
I am mentioning it here because I am curious if other solution developers have a similar practice.
When presented with a problem in need of a solution, I like to let the problem bounce around inside my head for a while as I examine the issue from all sides. This allows me to present arguments ( to myself ) and accept and/or counter those arguments until I have what I feel is a viable solution. If working on a multi-member project team, I then present the solution for further refinement. If working on a project by myself, I usually create a prototype to see if my solution is viable.
Most of this work is done without ever touching a keyboard. While it may not appear that I am "working," I am also not creating anything that must be discarded, which I think saves time overall. Sometimes this process happens quickly, sometimes it may take days - depending on urgency and the type of problem I'm working on.
Well, I have no quantifiable data to present, but I think that it does make a difference in my work.
I think the biggest contribution of Visualization is the ability to "think through" the user experience (UX). By creating "pictures" of the user interface in my mind, I can quickly discover unforeseen paths that can either enhance or detract from the user's overall experience.
After thinking about the UX for a while, I will sometimes even go so far as to walk through the solution's critical path and design data structures, program flow, and other features that make up the solution.
This can be as simple as a CRM form design or as complicated as a .NET Windows Forms application.
And, I can't tell you how many times this "walk though" has arrived at a solution that not only more useful than the overall requirements or specification stated, but many times it produces features that I did not anticipate when I initially drew up the specs.
Finally, it also helps you decided what really needs to be presented to a user. I think a lot of developers ( myself included ) have a tendency to provide too much information or too many options to the user. The Visualization of the UX allows you to ask the question, "Does the user really need that, there?"
I am a firm believer in simplicity in design, which is properly represented by one of my favorite quotes:
When I am working on a problem, I never think about beauty but when I have finished, if the solution is not beautiful, I know it is wrong.
R. Buckminster Fuller
I can't tell you the number of times that I have looked at something, either from a UX perspective or at the actual code itself, and just knew it was wrong.
Complicated designs tend not to be beautiful, or elegant, and are therefore prone to failure in either design or execution. I think that Visualization helps me to design elegant solutions to everyday problems that I and my customers face.
I'd love to hear from you regarding this topic. If you use similar techniques or have other thoughts, just leave a comment on this article ( or drop me an email ).
3 Responses
Dodd
30|May|2008 1Funny you should post this, as I have been thinking about this a lot myself, more specifically the principal of Ockham's Razor and how this can be applied to CRM. Ultimately, Simplicity in design is easier to maintain, explain, and retain (I tend to refer to these as the "3 ains"), though simplicity in design is not always the easiest to create.
As a avid pool shooter, I always see the angles on the table before lining up a shot. Then, before hitting the cue ball, I visualize the many ways the balls could go as I move the stick. Once I'm satisfied, I take the shot. 90% of the time I make it to the pocket.
I tend to do the same thing before I write anything. If it's an e-mail, I picture having a dialog with my client or co-worker. If it's a blog, I tend to picture it as if I were giving a demo in front of an audience. This way, I'm not writing, but rather listening and copying down the dialog in my head.
I prefer to pace about while I visualize. I'm not sure why, but I can see things clearer when I'm active, or performing an activity.
mitch
01|Jun|2008 2Dodd, I like your "3 ains" technique - and I totally agree.
Bill Babcock
01|Jun|2008 3I think it's the only way people can solve any complex problem. We don't form completely complex solutions, a lot of the process is unconscious and takes time. I think the "flashes of brilliance" come from relatively long periods of processing a problem and looking at various ways to solve it. Of course there is also the knowledge and insight gained by working though the problem, but this tends to make the project larger and more difficult because it adds scope creep elements. You learn new things as the project progresses and it's hard not to incorporate the learnings.
A trivial but fun example: http://www.mysoftwarefilm.com/ This started out as a movie theme-based landing page for Intel's Software Partner Program and morphed into this. Yikes.
Leave a reply