Since I quit my "regular" job and went back to consulting, I’ve been trying to put my home office back together. Fortunately, I’ve got so much to do that I haven’t had much opportunity to work on that little project, but this weekend, the pressure to organize was too strong to ignore any longer.
So, while my wife was outside refinishing an old bedroom dresser that we picked up recently, I dug into my office with a dust rag and a mission to ditch some of the useless junk I’ve accumulated.
The CD Purge
My first task, and what turned out to be my only task because it took so long, was to go through a shelf of old software CD’s. Anyone who has ever subscribed to the Microsoft Development Network knows how quickly the disks can pile up.
It was a "trip down amnesia lane," as Robin Williams would say. As I pulled disks down off the shelf, sneezing from the small clouds of dust I’d raise, I started to remember how much I’ve forgotten. Here was a copy of Windows NT 3.51. There was a copy of Procomm Plus, and InstallShield 1.0.
As I went through disks that ranged back in time to 1995, I realized that nearly all of it was garbage. To satisfy my packrat tendencies, I salvaged all the jewel cases, but almost every one of the CD’s hit the recycle pile. The recycle pile is destined to end up hanging in my wife’s garden where they spin in the breeze and sparkle to scare away birds. It seems a somewhat ignominious ending for a multi-million dollar development effort.
I did save a few software disks even though I knew I’d never need them again, because I’ve updated certain software that must have the original version installed. When you rebuild a machine, that requirement can be a problem. QuickBooks is one of those that has annoyingly required me to install 3 versions back just so I could get the latest version running. Grump.
Revelation
Although the big CD purge was satisfying and releasing in some ways (getting rid of old junk usually is), it was also disturbing.
Now, you should understand that I love software development. I’ve been doing it for a long time, but I never seem to get tired of solving business problems with software. It satisfies my need to build stuff, which is part of why I discovered that the corporate management track is just not an option for me.
But going through only ten years worth of software genealogy forced me into a disturbing revelation. Everything I build today is probably going to be unusable within five to ten years, regardless of whether or not it continues to solve the business problem for which it was designed.
All I had to do was reflect upon how much trouble I recently had installing a three-year-old VB6 application onto a client’s newer hardware that is running Windows XP to realize just how quickly the rug gets pulled out from beneath you.
Microsoft is dropping support for VB6 this year. Just how long do you think .NET is going to last? We’ll all be scrambling to update our applications again within 5 years, just you watch.
Customers Don’t Care about Technology
The frustrating thing is that there is no solid business reason to rewrite most software in a newer language or to put it on a newer platform. Sure, there are plenty of technical reasons, like better performance, better design, and better security. But customers don’t care about technology. They just want a tool that is easy to use and satisfies their business requirements.
Even Microsoft is hard-pressed to justify newer versions of some of their most venerable products, like Office. Certainly, there have been some improvements, but take Word for instance, which is no better in its latest incarnation than it was in Office 97. In fact, some features are far harder to use now (style formatting comes immediately to mind).
In the unstoppable march of technology, software vendors are frustrated by the way business lags behind in upgrades. They can’t make a buck if the customer doesn’t cough up for the latest useless "improvements" in the software, so they get back by cutting support for older versions.
Meanwhile, custom software developers like me are doubly screwed. We not only have to keep up with the latest technology, but we need to support our customers running the older technology as much as is possible.
Eventually, you are stuck explaining to customers that you need to completely rewrite their software in a newer technology in order to add those enhancements they wanted, or to get it to run on those new computers they just bought. That means they have to pay to have their software developed all over again.
It’s no wonder so many companies struggle to integrate off-the-shelf solutions into their business practices. At least the cost of upgrading is comparatively limited. But there’s no competitive advantage to making your business run like everyone else’s.
Dead-End Technology
About four years ago, a competitor of mine was trying to convince my customers that my solutions were bad because I was using dead-end technology (i.e. VB6). He touted his .NET solutions, but couldn’t provide a good business reason why the customer should ditch the solution I had already built for them with a .NET solution that had less than half the features. The technology argument meant nothing to them, so he failed.
My point in all of this musing is just this: While my wife is resurrecting a 30 year old dresser to full functionality, I am busily writing expensive applications that will be useless within five to ten years, regardless of how good they are. That hurts.
It doesn’t matter how brilliant you are. It doesn’t matter how elegant your code is. It doesn’t matter how well architected your application is. The industry push for software reuse via objects and patterns is almost laughable in light of the fact that you will have to start all over again to solve the exact same problem some day very soon.
In the end, all technology is dead-end technology.