Minimal IT logo and link to home page
Research, training, consultancy and software to reduce IT costs
Home | About | Newsletter | Contact
Previous | Next Printer friendly
29 November 2011

Complexity is your friend

By Andrew Clifford

When is complexity a good thing?

We are always exhorting each other to keep it simple. And indeed, most commercial IT is relatively simple record keeping and adding up. If it seems hard, you are probably doing it wrong.

If this is true, I should be worrying. Over the past couple of weeks I have been working on functionality that has been very hard indeed. Even when I had it all unit tested and working nicely, I integrated it into the web application and it all went horribly wrong and all the screens went blank. Does this complexity and difficulty mean that I have got something wrong?

There are three questions to ask when IT looks complicated:

  • Am I doing it right?
  • Is something making this more complicated than it need be?
  • Is it worth the trouble?

In this case, the new functionality identifies and manages what updates need to be applied to a data structure to make it internally consistent and consistent with other data structures. There are lots of complications: there may be circular dependencies within the data, there are permissions on the data, and data types may change as part of the update process. Although I am sure my code could be improved, it does seem to match the complexity of the requirement.

I have seem many examples of complexity that comes from deficiencies elsewhere. For example, integrating packaged applications can be much more complicated than it should be if the applications do not provide a well-defined API against which to integrate.

In this case, I do not think there is anything external causing the complexity. The processing involves using well-defined Java classes to manipulate data structures. There are no layers of troublesome technology to navigate.

Maybe the complexity comes from unnecessary features. I have often been guilty of over-engineering solutions, adding options because I believe that they make the product logically complete, rather than because they provide features that would ever be of any use to anyone.

To understand whether the complexity is worthwhile, I need to think of scenarios it supports. It supports the controlled migration of data through multiple versions, for example to rerun an assessment with changed questions, but taking previous answers forward where they have not changed. It also supports updating to new versions of metadata, which is the system's equivalent of software update. Controlled version management and software update are important. Being able to cope with them gives us advantages over "simpler" solutions such as managing assessments in Excel.

In this case, I think we have met the three criteria for necessary complexity: it is properly implemented; it is not complicated just because of shortcomings elsewhere; and the complication adds valuable capabilities to the product.

When these three criteria are met, complexity is a good thing. It means that the IT system is adding more value than a simpler solution. We have not created complexity unnecessarily, but are using it to take complexity away from the human task. A simpler IT solution would leave the user with more complexity. In cases like these, complexity is our friend.

Next: Universal business computer 1: The quest

Subscription

Subscribe to RSS feed

Latest newsletter:
Magical metadata

We use the term "metadata-driven" to describe IT solutions in which functionality is defined in data. Taking this to the extreme can provide unparalleled levels of speed, simplicity and versatility.
Read full newsletter

System governance

System governance helps you implement high-quality systems, manage existing systems proactively, and improve failing systems.

Find out more