Saturday, January 12, 2013

Keeping Up

I'm going to talk about keeping up with versions.  Versions of operating systems, developer tools, third-party tools, etc.  This is an ugly subject because there is nothing more frustrating in the software development world than the continuous work associated with making your software work with more than one version of the OS that it operates on.  If your software is used by a large number of people, chances are you will run into problems when a new OS is introduced. 

So what do you do?  The first step is to know when a new OS is scheduled to be released.  If you can obtain a Beta or RC (Release Candidate) version to test your software on, you can get a jump on any potential version conflict problems.  In the Microsoft world, you will also have to keep an eye on .Net versions.  If your application is a web site, you'll need to keep tabs on browser versions.  Currently my developers are required to test our software on the current version of IE, the previous version of IE (which is currently version 9 and 8, but IE 10 is also available on windows 8), FireFox, chrome, opera and safari.  We also test on the iPad/iPhone version of safari for basic problems. 

Third Party Libraries

Third party libraries are add-ons for Visual Studio (Linux developers also have 3rd party libraries, but I'll stick to Microsoft Visual Studio).  These add-ons might have compatibility issues with newer browsers.  Many companies will purchase a library and expect it to be a one-time cost.  The idea is that they own the library and they can use it forever.  That is true, but here's where the ugly part comes in.  If you upgrade Visual Studio in the future, there is a good chance that some of your libraries will not work.  So now you're thinking, why upgrade Visual Studio?  You can get away with that for a while.  I have skipped over versions regularly and that's OK.  If you upgrade your OS, you'll eventually run into compatibility problems with Visual Studio.  Especially after it has reached it's end of life.  You'll also run into problems if you happen to upgrade libraries that don't work on older versions of VS (assuming you add a new library to your project).

All of the scenarios I'm talking about can cause a cascade of required upgrades.  The longer you put off upgrading the bigger the cascade can occur.  You can also keep your hardware and old OS for as long as possible, but eventually, your hardware will break down and you'll be forced to buy a new PC (due to a lack of compatible upgrade parts).  Don't believe me?  Try to make a 5 1/4" floppy drive work on today's PCs.  Newer PCs will not run many of the older OS's because there are no drivers written for the new hardware to run on the old OS.  This is the point where everything will need to be upgraded.

What are your options?

First option: Run your software as long as possible on the hardware you have, then upgrade/create new software before your old software goes obsolete.  The risk in this method is that a PC will fail before you can upgrade the software and you'll lose data or business due to down-time.

Second option: Upgrade the moment a new version is available.  While this sounds safe at first thought, I would not recommend this method.  There is a chance that a newer version is still buggy. 

Third option:  Upgrade as necessary. Be prepared to upgrade or make your software compatible with new versions, but it's not necessary to upgrade everything (OS, browser, VS, libraries). As I've mentioned before, I only upgrade Visual Studio every other version, unless the new version has features that I really need. Also, it's not necessary to upgrade to the latest OS, just make sure you have a machine with the latest OS to test your software on (in case your customer has a new PC with the new OS on it).  I only upgrade libraries as needed.

Fourth option: Don't upgrade, create a new version to match new OS's.  This is common in the software world.  A new "shinier" version is introduced when a new OS is introduced to match the user interface of the new OS.

Other upgrade problems

Paradigm shifts are common in the computer world.  Predicting the new paradigm is difficult, fads come and go.  An example of a current paradigm is the proliferation of tablets.  Making your web-based software work on a tablet is a must at this point.  You can get by on a few tweaks just to make sure your web pages don't break on the most common tablets or you can go full-speed-ahead and design a special tablet-friendly version of your web site.  There is also the tablet App which is very popular.  For Apps you'll have to choose which tablets to target, depending on your budget.