There are a number of definitions and types of technical debt, however, this article refers to what is often known as Environmental technical debt. This is when a Development team fails to actively manage changes in technology, updates, and code maintenance to legacy code over time. This leads to a deteriorated product that requires greater efforts to repair, exposes you to greater security threats and ultimately may lead to the product not being supported.
When you have source code, you automatically have technical debt. The more source code you have the more technical debt you end up having. Technical debt occurs at all stages of a product life cycle – from inception, with the refactoring of source code of an initial implementation because of lack of planning or rushing development through to when change requests occur or any of the above underlying technologies change.
To Future proof your application means minimizing the impact on your application from new versions of technology.
Examples of this might include new versions of Web Development Frameworks – for example, VueJS, AngularJS, ReactJS, Blazor, Silverlight, Flash, HTML, Javascript, NPM Modules etc…
Similarly, when you upgrade to the newest version of your Database Technology, or you want to move to a different Database technology. This is particularly pertinent when software vendors discontinue/end of life a particular database or version of that database.
Changes to Programming Language Technologies can also have a material impact e.g. from Server Side Rendering and ASPX Pages to client side front end frameworks like Angular, Vue or React, or API changes from e.g. Rest APIs to gRPC or HTTP to HTTP/2 protocols.
For example, if you have 400 screens in your application, then all 400 screens will have to be changed/refactored.
One of the interesting questions for your development team or software development partner is how much time to they devote to the future-proofing of your application?
In our approach to successful software development we minimise the use of programming languages in a bid to reduce the overall size (of the code base) and hence complexity of the application.
Instead of a programming language that will go through multiple version changes over any period of time, we make extensive use of Metadata, which is programming language agnostic and doesn’t suffer from the overhead of new releases.
The implication of this is that instead of having to refactor or make extensive changes to all your source code that will appear through your application, we only need to change our template screens instead of the whole application, and we just need to change the translation layer that talks to the metadata.
When a new version of technology comes onto the market, that you want to use in your application all we need to do is make a one-time change to the translation layer and then the application can automatically take advantage of that technology.
This makes it much easier to safeguard our customers from frequent changes in technology. This leads to two major benefits for our clients:
We future-proof our client’s applications as a part of our in-life Management of their solution and is in our view a hall mark of successful software development.
Tech News You'll
Actually Want To Read