Tuesday, January 20, 2009

The Vicious Cycle of Complexity

I recently started a new job, which I truly enjoy. However, in my short time here I have stumbled upon one absolute truth. Business begets complexity, which begets support business, which begets complexity ad infinitum.

If you do not believe me, try to think of how enerprise class software works. There is usually a database, and a data layer, and a busines layer, and a platform layer and at some point the application layer. Now, I don't know about you, but with all those layers, that sounds like a good cake to me. So good in fact that eating too much might overwhelm you.

And so too is the case with enterprise software, if you use too much you end up with to much complexity and end up getting overwhelmed.  But why does this happen? One word: customers.

Customers want a variety of things, things outside of the original design, things that simply require hacks to work. And sometimes the new features are deemed worthy to be introduced into the core source code, along with the hacks. After all, we'll sometimes have the time to fix any issues.

But in reality the problems never get fixed, they just get worked around until they become too big to ignore. The workarounds become a regular part of life and complexity ensues with exceptions to the rules and weird incantations that must be performed to get the system to work.

This is a problem and enterprise developers need to monitor their environments carefully to prevent things like what I described from comin to pass.

No comments:

Post a Comment