David King

full stack developer

All Blog Articles

Prev « Stone-Soup Software Next » Are you beasting it?


The Cost of Complexity in Software

01 May 2013

When a product grows in complexity it can be difficult to justify to clients, stakeholders and even other developers why adding a single feature can be such an involved process.

There are many methodologies to use when developing complex software (Agile, TDD, DRY, XP etc) however I would like to share an analogy to explain the rationale behind such practices.

The Spagetti Analogy

Lets imagine a simple, completed application; it has 5 views (A-E) and all is functional.

Your client may think of the app like this, ie: only what they can see

In reality there is more than meets the eye; those 5 views might pass data around, update a database and do other wonderful things in the background, a more accurate expression of the app might be:

As a developer you will know how they link together

Even now you're talking a different language to your client!

Just add a new view

When we want to add a new view (X) to the app, your client can be forgiven if they think we only need to do this - after all their view of the product can be substantially different to yours

If only it were that simple! Lets consider how this new view might sit inside the app as we know it:

Previously we had 10 connections to manage, now we have 15! That's significantly more work than we originally expected!

How is this possible?

Well, as software grows in size I believe it grows exponentially in complexity - or rather, it can grow exponentially. There are many things that you can do to minimise the issue of complexity that I would consider good programming practices but ultimately as you work on your application it will become more and more time-consuming.

Don't despair, just be an awesome programmer and manage expectations!

It's just this little thing

The next time you hear a peer or client ask for just a little tweak and you have trouble explaining the issue at large, send them this way, hopefully I can save you a bit of trouble vocalising it :-)

That word "just" makes my hairs stand on end - it trivialises the task before you've had time to do investigate...


Prev « Stone-Soup Software Next » Are you beasting it?