Being in the industry for over a decade, I have encountered companies of all sizes and also all kinds of mind-set, especially “Ain’t broken why to change it” or “it’s running don’t touch it”. Yes, those companies still exist in Pandemic time 2020.
I will explain 5 reasons why companies need to keep up with technology but with a focus on software development, CODE! Truth be told, many IT directors and/or managers are going to feel uncomfortable. The idea to touch a piece of software that has been running, let’s say for a couple of years now (5-10 years for some). They are well within there rights, the latest and greatest something still needs some patches after its initial release. No one wants to be the first in discovering the latest and greatest is broken after it has broken your systems. However, the reasons explained below will show you that there are several benefits that out weight most concerns (especially cost $$$$ wise).
Reasons to upgrade your tech at least every LTS (developer thought)
We know that cheap something comes with more issues that we want to recognize, and that’s in life in general. Now, Imagine you are a company ABC that has been in business over for 10 years the initial tech stack hasn’t been touch with the exceptions of hotfixes and probably some tax laws fixes 🙂
The ABC company now is a hit! and demand for its services has multiple 10X. Let’s skip the infrastructure for my example (FYI, it is part of the problem). All of its systems are written in dotnet framework, let’s say 4.0 which not only is missing security patches it also restricts the developers of new functionally. The company has decided to upgrade its system in phases.
Let’s analyst the problems, at the time of this post we are very well into dotnet core 3.1 and the cloud. But let’s stay with the first one, cost of upgrading from 4.0 to let’s say dotnet core 3.1 involves code re-writes, these re-writes will take time, and time is something that companies pay to people, in our case software developers. The time to bring these systems to 2020 or at least to 2019 LOL, will require a longer period of time plus you have the famous “BREAKING CHANGES” especially when you upgrade from a very distance version to the latest one.
Sometimes the changes are too much because it’s such a big step forward that companies go with a “cheaper” option buy/contract a third party company or software (Salesforce). Migrating technology or workflows also comes with a cost, you not only paying to the third party company you also may be paying your in-house development team to fix or implement whatever the was given to you in a bad state. You may even invest more time in documents to hand over development but again you get code that needs some changes to optimize or refactor all together.
In contrast, company YXZ upgrades as often as a stable release is available and initial releases have been patched. I always read what’s new for each C# release or EF Core release. Each introduces new ways that help us to do our jobs more efficiently. The benefit when refactoring code is that product due to language feature (because you kept with tech) goes up, now you don’t have to recreate the wheel when the one from the language already has a powerful one, for example instead of creating a function that sorts an array one would just use the language feature, hence the second options is better.
“Breaking Changes” is a lot more manageable for company XYZ, which upgrades from asp.net core 2.2 to 3.1, most of the breaking changes are subject to startup.cs (at least the ones most people get stuck). Now if company ABC would do the same from .Net framework 4.0 the breaking changes are going to be greater because things like Dependency Injection is not vividly present on version 4.0, routing is no longer in the Global.asax file because there is none. Company XYZ, has the upper hand here its breaking changes are less and more manageable than Company ABC. hence cost less money because developers spend less time on it.
So, it’s cheaper to keep up with technology because the time investment to upgrade is less when you do it than when you don’t. By not doing so, your requirements will be more and bigger, development time will be longer, which means man-hours will increase without mentioning that other projects that might have to be put on-hold until upgrades are done (costing the company to potentially be out of sync with the market).
This is a topic that is very straight forward at least in my mind. You don’t want to be the one giving BitCoins to get your servers back. The same applies to code. Especially libraries that deal with data like Entity framework. The latest versions have done a good job of avoiding SQL injection issues. Let’s keep it simple and explorer it.
As is in many posts only SQL injection is bad for businesses, it represents a serious security hole because well exploited it will give up sensitive information to devious external parties (scary much?). Now, apply that to a lending app or an e-commerce site exposing that kind of sensitive data is really really bad.
Remembered company ABC, they are using Entity Framework (EF) that doesn’t include a robust solution to prevent SQL injections. It leaves them vulnerable and/or prompt to those kinds of attacks. Company XYZ, on the other hand, has been upgrading EF to the latest stable version which includes this SQL Injection patch. XYZ is more protected against SQL Injection than company ABC.
Another case I actually had the adventure to witness is when Company QWE (named QWE for privacy reasons) had all computers running in the very first release (October 22, 2009) of Windows 7 (Win7). Win7 was one of the best OS from Microsoft if you ask me. Can you imagine doing business when your company still running on that version and now in 2020 they have to force a breaking change upgrade from Win7 to Windows 10 (what’s the cost of that?). Before Microsoft announced Win7 End of Life/Support the company never upgraded, so now imagine how many bitcoin miners or trojans or warms or keyloggers and multiple that by 3 that’s how many of those things was found.
Keeping with technology will make you safer than before which sometimes we don’t even notice. Upgrading will help you to maintain those new viruses out of your system, until the next one.
Being employed by the same company for 10 years is something probably a lot of people admire but I might be one of the few that says is unless you are working in a high-end tech company located in Silicon Valley than it’s contra-productive to stay that long in a company – unless you are close to retirement.
This is how the above statement shows up for companies. Company ABC has the same developers for over a decade they have been through tough times and fun times but the code that is being written looks like it was written by someone frozen in time.
Lots of new developers fresh out of college and even those mid-levels will be totally shocked to be hired into a company that tech has been frozen in time by the current developer that has been with the company for over ten years. This is particularly bad not at the first glance but more in-depth, The company will have a hard time finding candidates to fulfill those roles, not mid-level will be very familiar with DataTables in the case of .Net Framework 4 as an example. So, basically, the company will have a hard time finding someone that can maintain the frozen in time code.
To keep your tech a bit more up to date you need developer that are not only are willing to move with technology. By having developer with knowledge and practice of new tech, the company would be in the position to innovate itself and be competitive.
In conclusion, there is a lot of more reason keep try to keep up with technology but for my encounters companies these reason are for me good enough to not fall behind and keep a good practice of upgrade to stable releses.