On a quest for the silver bullet..

Keep it Simple, Stupid!

Did you hear the story where NASA spent millions of dollars inventing a pen that would work in space, while the Russians simply used the pencil? (if not, read it here: The billion-dollar space pen myth). Allthough Nasa made a technologicaly extremely advanced pen (probably with all the hottest new technologies), and the russians didn’t really make a pen at all (just “reusing” the pencil), it is the russians that are the real geniuses in this story. Why is that?

Because allthough it is important to be able to solve technologically complex problems, the genius is to find solutions that helps us remove complexity.

“Fools ignore complexity; pragmatists suffer it; experts avoid it; geniuses remove it.” – Alan Perlis 

Keep It Simple, Stupid! 

“What is the simplest thing that could possibly work?” is Kent Beck’s (and XP’s) matra. The question truly captures the essence of avoiding over-engineering.

In software development, ”keeping it simple” is important for several reasons: Developing complex code takes time, it is harder to get right, and might be harder to debug. Complex code is also harder to understand, and complex code often means more code. More code means more places for bugs to appear, and more code takes more time to understand. Complex code is often very hard to maintain.

Essencial versus accidental complexity 

Ok, there are complex problems that require complex solutions. These problems must of course  be treated as such. But it’s important to identify and remove what Kevlin Henney reffered to as “accidental complexity” in his talk “With economy and elegance” at Jaoo (jaoo.dk) in september 2007. The essence if it was that not all complexity comes from necessity. Sometimes it just comes from “cleverness”: ”code by über-programmers is often based on speculative generality and gratuitous use of advanced techniques and language features”.

J2EE and Spring

A great example of removing complexity is Spring. Rod Johnson identified a problem: J2EE projects are often over-engineered, and J2EE with EJB is a heavyweight framework with lots of complexity. In his book “J2EE development without EJB” he simply states: “There are simple problems”. Not saying every problem is simple, but the problem with J2EE was basically that it said that all problems where complex. His solution was to remove complexity and over-engineering, and from that emerged Spring. No need to say that Spring is the prefered framework for web development on the Java platform today.

- Tore Vestues

October 6th, 2007 at 11:02 (501)


2 Responses to “Keep it Simple, Stupid!”

  1. Sjur Says:

    Heppsan.

    Apropos det vi snakket om, og tilfeldigvis via din top-link
    http://www.thespacereview.com/article/977/1

    Mye bra der !

    Good citizen:
    http://www.flexwiki.com/default.aspx/FlexWiki/Good%20Citizen.html?diff=y

  2. Spokkeyclereone Says:

    wow !!
    its very reasonable point of view.
    Good post.
    realy gj

    thank you ;)

Leave a Reply