HomeAboutConceptIt's a JungleWhat you need to knowServicesAuth. Entry Contact Us

MODERN PROGRAMMING AND REUSABILITY

Modern Programming -- Boon or Bust?

Modern object-oriented programming increases productivity by many orders of magnitude by allowing developers to reuse and build upon existing software.  Gone forever are the days when every project had to start from scratch.

Unfortunately, along with the very good comes the very bad.  A chain is only as strong as its weakest link...and reuse creates a lot of links.  Worse yet, most of the links are not under the developer's control.  They were developed by someone else and are subject to uncontrolled revision.

The problem arises when someone somewhere along the line changes something (perhaps in response to an operating system change, perhaps to fix a bug or even to add a feature).  Suddenly without warning applications that functioned perfectly fail.  Rushing to restore lost functionality, programmers introduce patches that are poorly documented, may create undesireable side effects, and reduce the quality of the application's logic.

As changes and updates pile one upon another and propagate down the line, patches inundate once good logic and bugs are introduced.  Before long, even the original programmers can no longer effectively support the software they wrote.  Maintenance becomes so costly and ineffective that it is cheaper to start anew.

Think this won't happen to you?  Why then does Microsoft Windows require hundreds of updates each year?  If the changes introduced by Windows Vista were acceptable, why did it have such a short life?

So what is one to do?  Short of freezing your software in a form that will eventually become obsolete anyway, the problem cannot be entirely avoided.  But, it can be minimized to extend the life of your applications.  Make sure that your application is implemented using the clearest, most sensible logic possible.  Don't automatically trust software you don't control.  Don't let the logic you do control deteriorate; think before patching; don't introduce new problems.