Tuesday, May 17, 2011

Excessive Automation

It becomes the sensible software architect to attempt to automate each intricacy of his business as quickly as possible, as soon as he becomes aware of the essentials of any set of related tasks. This sort of philosophy is seductive on the surface, but quickly begets such tatterdemalion progeny as software bloat and overcomplicated interfaces (usually the bizarre offspring of some functionally deprived fever dream). Imbued with an inflated sense of power, a programmer quickly sets about overstepping his boundaries, offering the lure of a sufficiently polished button in return for the soul of one's life work.

Certainly, machine intelligence should be wielded with draconian authority in many cases, especially where legacy practices have led to arcane bottlenecks that halt productivity. Any worker who performs the same task over and over again should be able to ask his technically associates with impunity exactly why such things must be so; and a capable developer should be able to pinpoint the cause for inefficiency and suggest at least a rudimentary means of procedure.

There are several cases, however, which at some point deal with matters of judgment or complex pattern recognition; these situations are the ones that give coders nightmares and lead to badly written software and permanent indigestion. Just because almost everything can be reduced to a function does not necessarily mean that it must. A machine might be able to badly emulate a human at decision-making processes. A software solution will not stand the test of time if it must deal with a rapidly changing set of provisions that result from a business attempting to adjust to market situations. In some cases, higher levels of abstraction will ultimately yield incredible rewards (especially with newer development platforms, what your college graduates refer to as paradigms). In other cases, you can end up with projects that never quite meet their mark.

There are no hard and fast rules that can be used in all situations without repercussion. There is no substitute for wisdom and experience. The simplest proviso one might agree to in any project of sufficient size is not to attempt to solve a problem whose steps are not immediately obvious.

No comments:

Post a Comment