The Artima Developer Community
People-Oriented API Design | Contents | Book List | Discuss | Print | Email | First Page | Previous | Next
Sponsored Link

Exploring Design Spaces
The Creative Side of Software Design
by Bill Venners
May 19, 2003

Page 1 of 4  >>


This article looks at the role of exploration in software design: the importance that thinking, discussing, experimenting, and getting user feedback has to discovering the best solution.

Often the hardest part about designing software is not figuring out how to organize the software, but figuring out what software to organize. Although you may wish you could simply define requirements and then implement them, significant aspects of the requirements are often discovered or at least better understood as the software itself is designed, implemented, and used. Figuring out what software to build is a creative process, one that feels a lot like exploration.

Exploring Physical Spaces

Last week Bruce Eckel and I gave a Design Patterns seminar in Prague, Czech Republic. The first morning after I arrived, with a little help from jet lag, I set off jogging at 5AM with a desire to explore new places in the neighborhood around my hotel. I had stayed at this communist-era hotel in previous years, and had jogged several times in the neighborhood, but that morning I headed down a new street to see what I might find. An hour before sunrise, the streets were peaceful. The only sounds were birds chirping and my feet slapping the sidewalk. I made my way through streets lined with red-roofed houses, careful to stop and look back at each corner, so I would recognize the turn on my way back. At one point, I happened upon some stairs that wound down into a dark woods.

Here I paused, because if you jog down, you have to eventually jog back up. But I decided to see where these stairs led. With care I began to descend the crumbling steps, which were damp and slippery and covered with matter that had fallen from the trees. After only a short distance, the stairs deposited me onto a slippery cement path. I followed this path as it wound its way down through the forest. After many twists and turns, I emerged from the woods at a small house. I passed under a trellis coated with hanging purple wisteria, and onto a narrow street. As I jogged down this street, I looked up to my left and saw a huge hillside covered with trees and mist. At the top of this hill, the steeple of a church jutted up above the trees. To my right a bit farther away was another steep hillside. I was in a valley that felt far from any city.

I began to hear the sound of water. Following the sound, I soon discovered a fast moving stream. I jogged along a thin path next to the stream and before long found myself at the base of a path heading back up through the woods.

Once again I paused. I wanted to explore this new path, but if I jogged uphill on this path, instead of turning around and going back up the way I had come down, I'd basically be lost. I'd have to find my way back to the hotel by intuition. A friend once told me that whenever he travels to new places, he takes walks and tries to purposely get lost. He said getting lost helps him get a feel for the place and often brings him a bit of adventure. In that spirit, I headed uphill through the woods on this new path. At the top of the hill I found myself once again in a neighborhood, but had no idea where I was. I jogged by intuition for a while, then I saw above the houses the steeple rising in the distance. I used the steeple as a guide, and soon found myself back at a corner I had etched into memory earlier that morning.

Page 1 of 4  >>

People-Oriented API Design | Contents | Book List | Discuss | Print | Email | First Page | Previous | Next

Sponsored Links

Copyright © 1996-2018 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use