-------- Original Message --------
Subject:        Removing Complexity
Date:   Tue, 28 Oct 2008 11:09:09 GMT
From:   John Halamka <[EMAIL PROTECTED]>



"Fools ignore complexity. Pragmatists suffer it. Geniuses remove it."
Alan Perlis (Creator of ALGOL, one of the first programming languages)

Whenever I purchase something for myself or my home, I always think
about the complexity that the purchase will add to my life. Adding more
stuff to my life can lead to short term gratification, but it also can
lead to long term maintenance headaches.

The same can be said of information technology. Here a few examples:

1. A few years ago, I had dinner with Steve Ballmer and explained that
Microsoft should produce secure, reliable products with fewer features
and lower cost. Who really wants their outline reformatted by the
Outline Wizard in Word? Who really wants to apply the latest emergency
patch that's required because of too much code supporting too many
seldom used features? He explained that I was mistaken since most people
use 95% of the features in Office and the average user prioritizes new
features over everything else. We agreed to disagree and he returned to
Redmond to manage the creation of Vista.

2. At BIDMC, we buy and build software. Every time we buy a commercial
product we need to think about interfaces from our existing systems to
the new product and from the new product to our existing systems. All
those interfaces add significant complexity, makes recovery from
downtime more difficult and increase the cost of support. Recently, a
clinician commented that one of our new software purchases really
surprised her, since it added complexity, fractured workflow, and
inconvenienced many users for the benefit of a few.

3. When we build software, we are often tempted to add all the bells and
whistles requested by the user. For each new custom feature there is a
cost of maintenance, additional training, and potential bugs that could
compromise stability/reliability. I've been involved in many development
projects that eventually became so complex that the software had to be
rewritten to ensure usability, security and maintainability.

4. Customizing commercial packages seems like a good idea to get the buy
in of stakeholders. Over my past decade as a CIO, I've found that
stakeholders come and go, and when they leave, all the esoteric
customizations they designed are often retired. In fact, many upgrade
projects include the retirement of all the previous customizations that
became an impediment to life cycle management of software, added
complexity, and over the long term were more hassle than benefit.

5. Best of breed seems like a good idea when you're comparing products
based on narrowly focused requirements. We did that with our email
system i.e. Exchange for general email functions, Brightmail for spam
protection, McAfee for virus protection, Tumbleweed for secure email
transmission, SendMail for SMTP gateways etc. The end result was a
feature rich system that has been too challenging to maintain and debug.
Our next purchase will be an appliance from a single vendor which
consolidates all this functionality into a single product.

In short, complexity is generally not a good thing. What am I doing to
battle complexity?

I try to use the fewest number of vendors possible - one (or at most
two) storage vendors, one desktop vendor, one network vendor, and a very
few application vendors. The more vendors, the greater the integration
effort, the increased support and maintenance burden and the higher the
cost.

I aim to avoid customizing commercial software whenever possible. My
experience is that customizations are rarely worth the investment. Once
customizations are in place and the users really understand the
implications to workflow, cost, and impediments to future upgrades, they
are no longer so enthusiastic about them.

I use enterprise-wide generalizable tools whenever possible i.e. one
content management system for the web, one means of
authentication/single signon, one ERP system for all
fiscal/administrative functions.

How are we seeing this "removing complexity" idea play out in the industry?

People are adopting Gmail, Google Apps, and Facebook as "good enough"
productivity tools.

People are adopting commodity hardware, clustered together using basic
Linux operating systems, instead of proprietary niche solutions.

People are using Software as a Service offerings with thin client
computers running nothing more than a browser. Even Microsoft has
embraced
<http://www.boston.com/business/technology/articles/2008/10/28/flying_into_the_cloud/>
 

the new reality of cloud computing, demonstrating a willingness to
eliminate the complexity of its current operating system and application
environment.

In the world of IT, simplicity is often more reliable, more secure, and
more usable. Whenever I'm tempted to add complexity to address the needs
of a few customers, I remind myself that Less is More. Per the Alan
Perlis quote above, we should all strive to be geniuses!

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Care2002-developers mailing list
Care2002-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/care2002-developers

Reply via email to