The other day I got a call from a friend asking me about his new project. Well new is not the right word, it was a new project for him. The application had been around for a while, a long while.
So long in fact he was worried he may not be able to open the project in any available version of Visual Studio!
I won't go into the details of his dilemma, but the general experience is echoed way too much. It is not just an enterprise line of business issue, it affects consumer products too.
As far as I know the vast majority of bank ATMs run Windows XP!
I hope I don't need to explain why that scares me.
The Decaying World of Web & Software Applications
Back in college I earned a Polymer Chemistry degree and spent my fair share of time wrestling with the finer points of thermo dynamics. The seconds law of thermodynamics states that without energy a system will naturally decay to disorder.
Software is not eternal. Everything appears to change eventually, and chaos increases.
Applying thermo dynamic principles to software this means if you don't make an effort to continually update your software it will just stop working.
Unfortunately you cannot just create an application, ship and call it a day. That is just the beginning.
In fact one of the reasons why I love agile development is the use of small sprints to ship an application.
Even if your application 'works' does not mean you should not update it. Don't worry, the if it works don't break it principle does not apply.
- Are you writing your own operating system?
- Your own browser?
- Manufacturing your own hardware?
I did not think so!
Unless you are into writing your own top to bottom platform and only run on that platform you have no control over the application's bedrock.
It shifts, eventually causing your application to come crashing down.
The takeaway, unless you own everything your software depends upon, and mean hardware up to the client device you have external dependencies that eventually break down or change. This affects your software's stability. You must be prepared to adapt and update.
The Web Is a Living Standard
Some features are removed because they are a security hole.
If you have not heard, you should update your site to HTTPS or become a source of scary red warnings by all browsers. Just having a password input type will trigger a browser warning today on insecure pages.
I bring this up because so many sites are still not secure. Most are not maintained or simply abandoned by their owners.
Left to drift into the sea of concern where man in the middle attacks pirate their visitor's data.
It is just a simple example of how your site can fall into disrepair because you are not paying attention.
What did cause concern is over 90% of those sites were using a deprecated version of jQuery.
The current jQuery version is 3.1, not a 1.x or 2.x incarnation.
If your site is using a version 1 or 2 era of jQuery you are missing critical functionality updates and bug fixes. Plus a few security fixes.
But here is what are also telling me, your site is abandoned!
Are you using a CMS like Wordpress? If so, a deprecated version of jQuery says you probably don't patch it either. This means I should probably target your site for my evil purposes.
I mean you are not maintaining the site, so I can go unnoticed and do what I want.
ASP.NET WebForms, Classic ASP and Many CMS Are in Trouble
Full disclosure I have not built an ASP.NET WebForms application since finishing the Beer House book back in late 2008. Don't feel pressed to go buy a copy, unless you are into nostalgia.
However, many of those 2008 and earlier vintage ASP.NET WebForms applications remain in use. This is more predominate in enterprises because they have leaned heavily on ASP.NET than say PHP for line of business applications.
I know for a fact a few sites I developed in the pre-2004 time frame are still being used. It scares me. Not because I wrote bad code, but because the foundation has deprecated.
For instance: One application I built in the 2000-2004 time frame is still being hosted on a desktop PC running Windows 2006 Server on IIS 6 and a non-patched version of SQL server.
The business owners are non-technical and upgrading the system scares them.
It scares me more they have not upgraded to a cloud based system by now.
In fact there should not be any code I wrote 15 years ago still running in production!
I come across web forms application on the public web every week, so they are still a thing.
Developers, managers and executives need to know some reasons they should update and often just rewrite these legacy applications. I mean it works today, so why should you spend money? You need to evaluate where the code is and where the technology platforms are and are going in the next few years.
ASP.NET WebForm Application Problematic Future
Inlining scripts and CSS is bad, please stop.
Think about ASP.NET 2.0 (something like 12+ years ago) sending instructions designed for Internet Explorer 5 or 6 to a modern browser.
The standards supported by today's browsers have changed quite a bit. Your page may render and work, but it is a fragile experience.
I think about the last moments of a Jenga tower, just about to collapse all over the flow.
You may not even know there are problems. Open up your developer tools and see the errors messages logged to the console.
More likely than not you are finding the page just does not render correctly or possibly respond to user input correctly.
I'll also bet the site is not responsive. That means it is unusable on phones. And by the way, mobile devices far out weigh desktop computers today.
SmartPhones had not even been invented when ASP.NET Web Forms shipped.
In addition to rendering issues, your code probably does not follow today's best practices. Do I need to mention ViewState?
I bet there are several million 2500 line button click event handlers out there. Not to mention all the tightly coupled database access code in the web layer, etc.
These are all bad things and make your code very fragile. It is a ticking time bomb waiting to kill or painfully disable your business.
Developers Have Moved On
If you are looking to hire or even retain your existing development team, using an outdated stack is not the way to do it.
Developers like new shiny things.
While this may not always be for the best it is the reality. So keeping relatively current with technology trends is a key attribute that attracts talented developers.
I am not a huge fan of jumping stacks every few months. I see enough messes created by this practice.
But you should know how your platforms work and you should keep your applications updated for user experience and security reasons.
Staying with something that is a decade old is a sure fire way to attract developers that do not make an effort to learn.
My experience tells me these are the developers that will not help you examine new advances to see how they might benefit your organization.
A real example from real world conversations.
Fred is working on an old code base. He inherited it when he started his new job a few years ago. He took the position thinking the company was about to upgrade and he could use the opportunity to gain experience with new technologies as well as how to migrate legacy systems.
Unfortunately his company never takes the time to upgrade anything, including brand new applications.
Fred and the other technical staff find it harder and harder to not only maintain the old, mission critical software, it is hard to accomplish new application requirements with older systems.
Code maintenance is one thing, but typical IT side support is also difficult. This means you spend more money keeping aging systems running than it would cost to start upgrading parts to newer technologies.
For example you should migrate from physical servers to virtual or cloud based serverless solutions.
Sure there is some financial and time investment porting to the cloud, but it pays for itself rather quickly. I pay a fraction of a percent to host my web sites than I did just 5 years ago.
Seriously I pay less than $1/month compared to over $500!
Developers want new things to keep their minds engaged. Often we are like little kids, we see our friends playing with new stuff and we want to play as well. Unlike parents with their children, developers can change jobs and go somewhere they can work with new stuff.
Kids, well they are stuck with their parents till they are 18. So sorry you are not getting a Smart Phone just yet.
End User Engagement and Productivity
Recently, I was in the local Lowe's home improvement and watched the employee place my appliance order on an old main frame screen.
It was painful to see how complicated the process was compared to what I knew it could be. Instead of navigating through the terminal screens he kept switching to the public web site and copying product codes over to the terminal window. I felt bad for him.
I also wondered just how fragile their information systems must be.
Are they secure? Is this why we constantly hear about major credit card breeches?
A good chance decayed software is to blame.
Sadly main frames are still there, especially in companies like Lowe's that have been around for at least a couple of decades.
I know there are many solid reasons why these terminal screens need to be replaced and they all boil down to usability.
This is just a parallel example that provoke my thought process on this topic because it illustrates how many businesses hang onto technology investments way too long.
While the bottom line may look better because you are using something you already paid for. The reality is obsolete systems cost Lowe's money in productivity gains, customer satisfaction and probably security.
Lowe's is not alone of course I have watched similar scenarios at other companies, both as a customer and consultant.
Legacy applications like ASP.NET WebForms, mainframes and their ilk should strongly be considered for upgrades sooner rather than later.
The web platform has moved forward. Your applications have not.
Your code faces natural extinction sooner than you realize. Instead of being shocked by your application not working next year, make it work tomorrow today.
You should realize productivity improvements and increased customer satisfaction numbers by investing in a modern application architecture. You will also be able to attract a better class developer, which means your business is stronger.
Software, whether it is a web site, application, consumer or line of business is an asset. Just like a factory you must take time ti maintain and replace old equipment.