Rants
Questions
Soapbox
Best Practices
Apply today for a FREE subscription to CIO Magazine!
Thu, Sep 11, 2008 0:04 EDT

|
Posted by: Michael Hugos in Best Practices Topic: ApplicationsBlog: Doing Business in Real Time
Current Rating: |
In the design of computer systems, all our efforts, our analysis, our long hours are all directed to one end. That end is to discover a design with a quality called “elegant simplicity”.
Such designs use the strengths of the technology you are building with in combinations that are easy to understand (so they actually get built) and in ways that meet peoples’ most important expectations (so they actually get used). Any design other than this is only an incompletely solved problem.
The more times I use the word “complex” in describing a problem and in describing my proposed solution to that problem, the more I know I have not yet found the design I’m looking for. I’ve learned the more complex a problem seems to be, the more important it is to find an elegantly simple (but not simple-minded) solution. Otherwise the project will fail.
In a profession like IT, complexity is always there, always ready to drag me down, wreck my projects, and disappoint the people I am trying to please. The search for elegant simplicity is at the heart of every successful development project. When I don’t find it, when what I find is merely clever and complex, then my projects take too long, require too much effort and never quite work.
Experience is turning me into a connoisseur of elegant simplicity. I’m always looking for insights to help me find it. This week in a book I've been reading (Wind, Sand and Stars by Antoine de Saint-Exupery) I came across three insights worth passing on to other seekers of this fine quality. The first insight is this, “…perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away…”
How true; the best solutions always do more with less instead of trying to do more with more. That means I can’t meet every expectation of every user of the system I’m designing, but I have to find that core of functionality that meets peoples’ most important expectations. I have to figure out what those most important expectations are by listening carefully and asking probing questions.
The second insight is, “…all visible evidence of invention should have been refined out of this instrument and there should be delivered to us an object as natural as a pebble polished by the waves…”. Wow. A polished pebble is an elemental shape that results from the complex interplay of wind, water, waves, and other pebbles. What mastery of design to devise such a simple answer to such a complex situation. And what subordination of designer’s ego to find an answer so obvious and appealing that people will think they thought of it themselves.
The third insight is this, “…he who uses this machine should be able to forget that it is a machine.” I think this is an extension of the first two insights. Designs that do more with less in ways that seems so natural we think we thought of them ourselves become part of us. They become like a favorite set of clothes or a car we love to drive. The experience of wearing those clothes or driving that car is not about clothes or cars; it’s a statement about who we are and what we can do.
As far as I can tell, any computer system that calls attention to itself just irritates people. People find it annoying because they don’t care about the system itself (only the designer does); they just care about what the system can do for them (they’re busy). They like it when a system is easy to
It's interesting to note that St. Exupery (a pioneering pilot) has leant his name to an airport in France (Lyon Saint-Exupery, renamed in 2000 from Lyon Satolas).
Alas, in my view the airport doesn't live up to his insights..but then few airports do...
To me, “Domain-Driven Design” by Eric Evans offers the simplest and most elegant way to elegant simplicity. I would venture to say that this statement is shared by numerous followers of Eric around the world – the popularity of the book and the subsequent publications speak for it.
I happen to work with Eric for over a year, and witnessed how he implements his ideas by offering elegant and simple design for the problems that seems complex and insurmountable. Since then the DDD is for me the practical way to achieve elegant simplicity.
Michael, thank you for the great post.
Eugene Nizker,
Evident Point Software
Thank you for sharing such insights on "elegant simplicity" (and referring the link). I believe that these insights should be applied (not an easy task, I think) to any field or act of human endeavor; be it in Art, Business or Technology.
Good to see someone echoing my thoughts about a good architecture or a design. I have always maintained that an well-designed (software) system is always unobtrusive and appears more so when changes are brought in or new functionality is built. I have gone one step ahead (in several conversations with fellow professionals and potential employers) and proposed that I should be paid a good incentive even after I have finished the project and left the employer, if they find that a later alteration to the system I had designed, has been effected with minimum fuss. That is when they will realize that the design lends itself so well to the change, and appreciate the simplicity and forethought that have gone into the design.
Thanks for a great article, Michael.
Nirmalya Sengupta
http://www.linkedin.com/in/nirmalyasengupta
Hi Nirmalya,
When software designers design their applications they often forget that the purpose of any app is to increase user productivity. So they employ all sorts of fancy graphics and attention getting devices. That is appropriate for entertainment applications but not for applications related to getting work done.
If people find they can add later alterations to systems you have designed with minimum fuss then you absolutely deserve an incentive. It means you envisioned a big picture of what the product could become and you designed a logical structure to the application so future changes could be added in an intuitively obvious manner. That takes real design talent; that's elegant.
The most depressing thing about new releases of applications and operating systems is when they change existing features and add new features in such a way that users (like me) have to take time out of their frantically busy days to relearn features they already knew from years of experience. Designers forget that software doesn't create value by itself, it only creates value when it helps people become more (not less) productive.
Best regards,
Michael