The Enemy of Simple

enemy-of-simpleComplex is the enemy of simple. In the beginning, a (web) application is built to complete one single goal. This goal is achieved through a set of features and coded accordingly.

The features are designed in the beginning. Before the development phase takes place.

But, as development commences, three things can complicate the application:

  1. Time
  2. Extra Features
  3. Changing specifications

Complex applications also make versioning necessary. A major version changes, let us say Version 1 to Version 2 is most of the time a full rewrite of the original code. Often with full redesign of the specifications.

The new major version takes into account all the changes made in previous version. A complete redesign of the application to accomodate the extra features and changing specifications, as well as a more optimal code.

Again, the cycle continues and each new version is an increment of the previous version.

A good example is Windows OS family. Something we are all familiar with.

Some of them are a success, such as Windows 3.x update to Windows 95. New features are added which makes it Windows 98.

A complete rewrite is made to Windows 95/98 and creates Windows XP.

And the cycle continues up to Windows 8, today.

Some of the rewrite as successfull, such as Windows 95, Windows XP and Windows 7. While others are a disaster, such as Windows Vista.

The complexity of an application can be seen in the number of lines of code. Or, to the non-technical in the size of the application. Windows XP requires less than 5GB of space while Windows 8 requires 16GB of space. It is a 3x increase.

Size increase happens because the application tries to absorb all the features and make it an all-in-one application.

The most successfull applications are those made with one single goal. SAP with the goal of Enterprise Resource Planning, mostly in the purchasing department, taking care of Supply Chain. Is it a small application ? No, it is a huge application, and it is just taking care of one goal.

Salesforce is another application with a single goal. It is the de-facto Sales Force management tools because it is focused on the sales department.

Basecamp focused on collaboration with the goal of project management.

Those are examples of applications that are focused on their specific goal.

So, a simple application requires focus on one goal.

Complexity can still creeps in, but with focus, those complexity can be reduced.

Now, how will you write your next application ?