Simple Is not Simplistic

From WikiContent

(Difference between revisions)
Jump to: navigation, search
Line 1: Line 1:
-
: "Simplicity before understanding is simplistic; simplicity after understanding is simple." Edward de Bono
+
: "Very often, people confuse simple with simplistic. The nuance is lost on most." Clement Mok.
 +
: "Simplicity before understanding is simplistic; simplicity after understanding is simple." Edward de Bono.
Let's start with a couple of definitions from the "New Oxford Dictionary Of English":
Let's start with a couple of definitions from the "New Oxford Dictionary Of English":

Revision as of 09:12, 8 May 2009

"Very often, people confuse simple with simplistic. The nuance is lost on most." Clement Mok.
"Simplicity before understanding is simplistic; simplicity after understanding is simple." Edward de Bono.

Let's start with a couple of definitions from the "New Oxford Dictionary Of English":

  • simple easily understood or done; presenting no difficulty
  • simplistic treating complex issues and problems as if they were much simpler than they really are

Simplicity is a concept that lies at the very foundation of software engineering: simple software is more maintainable, has fewer bugs, has a longer lifetime, etc. The advent of Extreme Programming and agile methods has made simplicity (e.g., "do the simplest thing that could possibly work") even more fashionable. In fact, I believe that the great majority of developers always try to implement the simplest solutions they can possibly think of.

Despite that, very often they end-up with unmaintainable code very quickly. Why is that? The opening quote should have given you an hint. In my experience, many developers rush into hacking a solution without really understanding the problem they are trying to solve.

In other terms, simplistic solutions leave some important parts of the original problem unsolved. In the world of software development two typical victims of this approach (but by no means the only ones) are the users, who end up with buggy systems, and the maintainability of the code base, which gradually worsens.

[this is still work in progress]


By Giovanni Asproni


This work is licensed under a Creative Commons Attribution 3

Back to 97 Things Every Programmer Should Know home page

Personal tools