The Artima Developer Community
Sponsored Link

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

<<  Page 2 of 4  >>


Exploring Design Spaces

When I interviewed Python creator Guido van Rossum last year, he mentioned he preferred programming problems where you can't see the solution clearly:

I always feel that the interesting programming jobs are the ones in which you don't know exactly where you'll end up. Implementing another spreadsheet is boring. There have been many spreadsheets. We know what the user interface should be like. We know what the right implementation techniques are. We know a whole bunch of things. Yes, you can write another spreadsheet. You can probably plan it very well, because you can do a feature-by-feature checklist of all the other known spreadsheets. I want this. I want that. I want to fix this problem with this particular one. I want to avoid that bug. That's easy, but it's not very interesting.

I like programming problems where you think, "There has to be something really interesting over there, but I can't see it clearly." All you can do is move one step over there, with a small bit of code, and start exploring to see it more clearly. And maybe it actually wasn't there, it was over here. Or it had a different shape than you thought initially. Maybe it wasn't interesting at all, and you didn't waste a lot of time.

Guido's comments made me reflect on some open source projects in which I'd been involved, and the extent to which exploration has been part of the design process in those projects. All three projects arose out of a feeling I had in 1996 that mobile code was the key to improving the user experience of network services. When I saw applets running in web pages, I thought the architecture seemed inside out. Instead of pasting applet objects inside of a web page documents, shouldn't people just be using network mobile objects, including some objects that represent documents? This feeling is what first attracted me to Jini, because Jini uses mobile proxy objects to deliver network services. But Jini was designed to let software, not users, interact with network services. So in 1999 I started the ServiceUI project with the goal of defining a standard way to attach user interfaces to Jini services.

<<  Page 2 of 4  >>

Sponsored Links

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