Some of this complexity is actually driven into being by the manufacturers of software and the demands on them from the user base. Every interacting piece of software becomes yet another complication in the underlying machine, a fact most clearly shown in the Microsoft software stack. Attempting to get everything to work on a myriad of differing computers whilst also offering a significant amount of user choice leads to an astonishing level of complexity. Far from criticising Microsoft for the failures of devices using it's software we should congratulate them on the fact that it works at all, let alone as well as it generally does.
IT departments though must take the responsibility for some of this complexity. We have a tendency to try to fix all the problems and to over integrate systems, usually at the instigation of the user. This often requires custom scripting or esoteric leading edge configurations, a challenge that we techies love. If the user is not injecting this kind of requirement we often suggest it ourselves to indulge our love for a technical challenge. We are also pretty good at completely underestimating the amount of time it will take to deliver these complexities, often because we forget one complexities interaction with another. This underestimation of complexity is what inevitably leads to protracted projects and non delivery, a situation for which our industry is famous. Not only that when these over complex projects are injected into an enterprise that is also filled with other over complex systems failures often ensue. Getting to the bottom of why is often difficult and often time consuming as the symptoms rarely directly mirror the problem.
Occams Razor states "simpler explanations are, other things being equal, generally better than more complex ones.". This is as appropriate for solution choice as it is for explanations, choosing the least complex solution will generally be better than choosing the complex ones. Not only that encouraging users and technical designers to focus on simple solutions will lead to a more reliable and manageable enterprise. This means avoiding functionality customisation and using established systems in preference to implementing other similar systems simply because one or two functions do not 100% match the user requirement. Doing this will require your organisation to support the IT department and give it the strength to drive the reduction of complexity. A simpler architecture though will lead to a more reliable, faster and crucially cheaper to run environment.
No comments:
Post a Comment