Saturday, November 12, 2005

Technology vs Occam's Razor

I think I will dedicate this post to all the software developers who come up with complex, near perfect enterprise-level code!!

In one of my undergrad classes, I studied about how Occam's Razor was to be used in any industry. And one of the industry that fails to make use of this principle is the software industry. I mention only the software industry because that is the only industry I have any knowledge about!

Before we delve into all the technical mumbo jumbo, let me say a little about what I do. I am an analyst for a complex, near-real-time, highly business critical application, which has been live for almost two and a half years now. My job - analyse the data that flows through this system and detect inconsistencies and come up with recommendations for fixing these issues. Basically, I know what I am talking about here!

Believe it or not, I see inconsistencies on a daily basis. Sometimes, it is a nightmare figuring out why these things are happening. When the Business Analysts too have no clue, you can imagine the nightmare for the rest of the folks. I can attribute most of these issues to non-compliance with the Occam's Razor. Occam's Razor states:

Pluralitas non est ponenda sine necessitate

which roughly translates to Given two equally predictive theories, choose the simpler. In order to make this principle fit for this scenario, the alternative translation for this reads as: pluralities ought not be supposed without necessity. The pluralities here refer to the number of classes/layers used.

I do agree that there are situations where introducing such complexity is necessary. There may be requirements that drive such decisions. But should they be used all the time? There have been so many instances during my analyses where I have realised that the requirement could have been satisfied without introducing such complexities! Workflow in particular has been an area of particular concern to me and I feel most of the things that workflow achieves, can be achieved without its use. People who have used workflow are the ones who know what a beast it is and can be if not used properly.

Personally, I feel that complex concepts should not be used just because it is out there. There must be a valid reason for using it and that must be simplest way of solving that problem.


P.S.: I am watching this movie called Taking of Flight 847. This movie is very similar to Delta Force starring Chuck Norris.

No comments: