Wednesday, June 27, 2007

The Four Fundamental Laws of Change

Before we get into The Four Fundamental Laws of Change let's consider another law, The Common Sense Law: Every 10 years or so we get to a point where there's something we can assume…we can build our software on top of a richer platform - Bill Gates

I once put together a flash piece to introduce a project to rewrite a major but old commercial application in response to changes in technology. It was meant to be an informative and entertaining piece that was delivered to the entire company. I have provided a link to the flash pieces and accompanying presentation here:
My website http://www.avoreid.com/, you can find the presentation and the flash pieces in the portfolio section or you can launch them here.
If your an Independent Software Developer (ISV) or develop software in IT you know that software development is dynamic place and things change so frequently and fast that you find yourself continually questioning the technology on which you have built products, continually learning new ways to build better products, and at times dumping things you've learned or products you've built onto the trash pile of technologies past.


To drive the issue home I came up with The 4 Fundamental Agents of Change:
  1. Moores Law
    Affordable computing power increases exponetially over time.
  2. Evolving Operating Systems
    New operating systems take full advantage of improved and affordable computing power.
  3. Powerful Development Tools
    New development tools support creating applications that take advantage of faster hardware running more powerful operating systems. Support for old systems, tools, and practices disappears.
  4. Increased Expectations
    User capabilities and expectations rise accordingly.

These powerful forces are inescapable, and have been influencing the development of Software products from the beginning.

Periodically, they have created paradigm shifts, mandating changes in products and practices.

This presentation was about the rewrite of a product originally developed for the "HP Calculator", yes that's right, the "HP Calculator", here's a picture of the original product.

The post HP Calculator product was written in Quick Basic, then ported to Visual Basic 16 bit although Quick Basic was still used as a meta language for calculations and validations, this meta language was then converted to 'C' for performance using a proprietary language converter that translated the QuickBasic to 'C' and generated several header and meta data files for the running application. It was then ported again to 32 bit and landed on my desk. Not only was the multiple languages a concern at the time of the rewrite the 3rd party components used in the application were very outdated, in some cases the vendors for the components were no longer in business.

One obvious point from the brief history outlined above was that this product, despite it apparent lack effort to keep it updated and current, had been updated several times as a direct response to technology changes. Here is a graphic timeline taken from the presentation, at the bottom are the product changes caused by the technology changes described directly above them.


The last entry ET.NET in 2006 is the rewrite project. What were the technology changes that created the pressure to once again rewrite this product? There were several, first and foremost the action Microsoft took to put VB6 out to pasture. The introduction of the .NET platform sealed this fate as the only path to .NET was through VB.NET which wasn't VB6 by any stretch and essentially required a re-write anyway. If you have a meaningful VB6 application run it through the migration wizard and you'll see what I mean. And finally it was the direction the industry was taking to support .NET, third party vendors, partners, were all moving to .NET.

No comments: