Applying Visualization to Software Development

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.

How I use Visualization

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.

So Does Visualization Make a Difference?

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?”

Final Thoughts

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 ).

Leave a Reply 3 comments