Simple Is not Simplistic

From WikiContent

(Difference between revisions)
Jump to: navigation, search
Line 10: Line 10:
In my experience, the most common reason for that is due to lack of understanding of the problems being solved. In fact, when implementing a new piece of functionality, there are several issues to keep into account:
In my experience, the most common reason for that is due to lack of understanding of the problems being solved. In fact, when implementing a new piece of functionality, there are several issues to keep into account:
-
* The functionality itself as seen by the users (is what the users are asking for, what they really need?)
+
# The functionality itself as seen by the users (is what the users are asking for, what they really need?)
-
* The time necessary to implement it
+
# The time necessary to implement it
-
* How the functionality fits the current design (what parts of the system need to change in order to accommodate it nicely?)
+
# How the functionality fits the current design (what parts of the system need to change in order to accommodate it nicely?)
-
* How to test it
+
# How to test it
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.
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.

Revision as of 09:47, 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.

First of all 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

I'm sure that most developers know that simple software is more maintainable, has fewer bugs, has a longer lifetime, etc., and that they always try to implement the simplest solutions they can possibly think of. I know also that many of those developers often end-up with unmaintainable code very quickly.

In my experience, the most common reason for that is due to lack of understanding of the problems being solved. In fact, when implementing a new piece of functionality, there are several issues to keep into account:

  1. The functionality itself as seen by the users (is what the users are asking for, what they really need?)
  2. The time necessary to implement it
  3. How the functionality fits the current design (what parts of the system need to change in order to accommodate it nicely?)
  4. How to test it

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