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. In the last few years, the advent of Extreme Programming and agile methods has made simplicity (e.g., "do the simplest thing that could possibly work") even more fashionable.

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. In the last few years, 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 think of. Despite that, very often they end-up with un-maintainable code very quickly. How is that? I think Clement Mok got the right answer to the problem:

+

In fact, I believe that the great majority of developers always try to implement the simplest solutions they can think of. Despite that, very often they end-up with unmaintainable code very quickly. Why is that? I think Clement Mok got the right answer to the problem:

-

"Very often, people confuse simple with simplistic. The nuance is lost on most."

+

: "Very often, people confuse simple with simplistic. The nuance is lost on most."

-

So, what is the difference between simple and simplistic then? Let's have a look at some definitions (taken from the "New Oxford Dictionary Of English"):

+

So, what is the difference between simple and simplistic then? Let's look to the dictionary (''New Oxford Dictionary Of English'') for some definitions:

-

* Simple: easily understood or done; presenting no difficulty

+

* '''simple''' easily understood or done; presenting no difficulty

-

* Simplistic: treating complex issues and problems as if they were much simpler than they really are

+

* '''simplistic''' treating complex issues and problems as if they were much simpler than they really are

-

In other terms, simplistic solutions leave some important parts of the original problem unsolved. In the software development world two typical victims (not the only ones) of this approach are the users, who end up with buggy systems, and the maintainability of the code-base which becomes increasingly worse.

+

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]

[this is still work in progress]

Revision as of 17:43, 27 November 2008

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. In the last few years, 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 think of. Despite that, very often they end-up with unmaintainable code very quickly. Why is that? I think Clement Mok got the right answer to the problem:

"Very often, people confuse simple with simplistic. The nuance is lost on most."

So, what is the difference between simple and simplistic then? Let's look to the dictionary (New Oxford Dictionary Of English) for some definitions:

simple easily understood or done; presenting no difficulty

simplistic treating complex issues and problems as if they were much simpler than they really are

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.