Article | July 27, 2021
In the ‘new normal’ world, digitalization is the core reason to drive businesses to success. As a result, these emerging technologies have given rise to technical debt. Of course, technical debt has always been a part of every IT and non-IT organization. But the evolution of the IT world has made companies invest more time to think about reducing tech debt.
As the term consists of the word- debt, it gives a picture of being negative. Thus, technical debt is more or less like financial debt, but it also has good aspects.
In this article, we will talk all about technical debt management and ways to deal with it.
What Is Technical Debt?
When a code design is not neat, has disjointed data structures, and is of poor quality, it gives rise to technical debt.
If a code is designed in a hurry to meet strict deadlines, it may be written clumsily. For that particular period, the software may work perfectly well, but it starts bugging and stops working with time. And it becomes a difficult task to decode the coding and understand the problem as the code was not written neatly.
The accumulation of work due to short-term decisions, unrealistic deadlines, shortage of resources, or just ‘lazy work’ leads to technical debt.
Every organization has technical debt. Take note that this debt can never be zero. But the important part is to deal with technical debt management. It cannot be ‘paid off’ entirely but can be minimized and managed.
Types of Technical Debt
Various reasons lead to technical debt. Some are deliberate, and some are accidental. Whatever is the reason, if you notice any of the below actions implemented in your organization, consider it as a red flag. Then, identify the reasons for technical debt for precise technical debt management.
This is one primary reason that leads to technical debt. Of course, the coding should be precise and straightforward. But sometimes, due to limited time and resources, a complex architecture is created even for the simplest code. And if not mended with time, this leads to various problems along with technical debt.
Thus complexity in products, processes, and applications should be simplified with time.
This is also known as bit-rot. Software entropy occurs when developers write codes for the updates of the same software. As a result, the coding gains maximum complexity. And after a point, it gets unsolvable. Thus the software quality deteriorates, leading to errors and reduced usability.
The solution to this is refactoring, which we will discuss later in the article.
Accidental Tech Debt
This type of tech debt occurs when there is sudden evolution in technology. For example, if the code was simple and precise but not meant to be adapted or updated with the changing scenario, accidental technical debt occurs. It leads to a wastage of time and resources in the future.
Thus, this debt is resolved by dedicating time to update the code and system quickly.
Ways to Handle Technical Debt Management
When the engineering or developer’s team takes shortcuts to meet deadlines or finish the project early, it leads to more work in the long run. We understand that sometimes these demands are unavoidable, but the team needs to come back and resolve the issues to save the organization from technical debt.
For starters, an organization must identify the causes of technical debt and deal with them accordingly.
Here are some of the ways of technical debt management and how to manage them in the future.
Identify the Source
The best way to avoid and tackle technical debt is to identify the source. This can be done by having a conversation with the team as to why this debt occurred?
For example, if the IT team was asked to design healthcare software within two months due to the project's urgency, the team will say that the reason for complex coding was the time constraints.
As a result, you are identifying technical debt sources. They may have occurred due to time, resources, or system constraints. Once you identify the root cause, there is always a way to go back and solve the issue to avoid getting buried in technical debt. This is the first step towards technical debt management.
Track Technical Debt
You will be appalled to know that 7% of organizations track technical debt to minimize them. And they are a significant success.
Tracking technical debt is as important as identifying it. When a team keeps track of technical debt, it is easy for them to forecast the time and resources required to pay it off.
This is building a roadmap while writing code. It makes sure that the entire team is on the same page while developing the software. The benefit of this documentation is that whenever there is an update or an error wherein the entire code requires to be reworked, it gets easier for any developer to work on it. This is a precise way to prevent the tech-debt burden.
Maintain Agility & Testing
This technique is paving the way for technical debt management. However, developing agile software and maintaining its agility through time are two different things. To reduce the technical debt, you need to maintain software agility by updating it on a timely basis. But be sure to make this update process clean and qualitative.
Try not to skip testing of the software for whatsoever reasons. Testing of the software is essential to stop the build-up of technical debt. However, do not substitute manual testing for automated testing. It can prove to be a significant hurdle in the team’s agile process.
Dedicate time to understand and pay off technical debt. Even when you avoid errors and follow all the suitable approaches, there are chances of technical debt. Sometimes these may happen due to the client’s urgent demands or limited bandwidth to perform tasks. Whenever this happens, take out time and treat technical debt as a business problem and not a technical one. This is an intelligent way of handling technical debt management.
Refactoring means going back to the developed codes in haste for many reasons and cleansing them. This does not affect the external working of the code but cleans the code and makes it future-ready. Furthermore, such timely cleaning of codes reduces technical debt significantly.
How Is Technical Debt Good?
Technical debt is not always bad. Sometimes the code building is done in haste and works precisely the way it should. The updating of codes is also seamless. At such times technical debt is regarded as a good thing. This usually happens in applications that have simple processes.
Technical debt is also good in software that requires timely development and not bug fixes.
Technical debt is required to stay ahead in the competition. But see to it that it is tackled and minimized in the best possible way. Procrastination is the enemy of success. And this is highly true in the case of technical debt. It will get more expensive the longer you hold it.
So ensure that your team takes out regular time from their schedule for minimizing technical debt. Technical debt management will help your team to perform better, improve agility and deliver exceptional results.
Frequently Asked Questions
What drives tech debt?
Tech debt occurs when the team cannot write a clean code due to deadlines or limited resources. The tech debt worsens if the team does not go back and dedicate time to clean the code.
How do you handle tech debt?
There are specific ways to handle technical debt. These include:
Identifying the reasons that led to technical debt
Integrate metrics in your strategy
Knowing that tech debt is not always bad
What are the types of technical debt?
There are majorly three main types of technical debt.
Deliberate creation of complex software
Accidental tech debt
"name": "What drives tech debt?",
"text": "Tech debt occurs when the team cannot write a clean code due to deadlines or limited resources. The tech debt worsens if the team does not go back and dedicate time to clean the code."
"name": "How do you handle tech debt?",
"text": "There are specific ways to handle technical debt. These include:
Identifying the reasons that led to technical debt
Integrate metrics in your strategy
Knowing that tech debt is not always bad"
"name": "What are the types of technical debt?",
"text": "There are majorly three main types of technical debt.
Deliberate creation of complex software
Accidental tech debt"
Article | February 19, 2020
The use of Python is catching up to Java in banking and fintech applications, but what are the reasons behind the emergence of Python? While three million developers have joined the Java community in the past year, in the banking sector, Python is fast closing in on Java’s position in top spot. Python’s backstory in banking Across all sectors, Python has reached seven million active developers fuelled in part by a staggering 62% of machine learning developers and data scientists who now use the programming language.
Article | April 14, 2020
AI and machine learning have been buzzwords in every tech-based industry for at least the past decade.
At this point, artificial intelligence and machine learning have entered the email marketing industry as well – an industry that had been sorely lacking innovation and fresh ideas. If used effectively, AI can boost the email deliverability of your mailing domain. What is email deliverability? Email deliverability is simply the ratio of emails landing in the inbox folder of the users as compared to spam. So if your deliverability is 95%, that means 95% of users received the emails in their inbox, and the rest of the 5% received it in spam. Because of this, email deliverability is a constant challenge for a marketer.
Article | May 17, 2021
Common view is that AI software adoption is 'on its way' and it will soon replace many jobs (example self-driving cars with drivers etc.) and the majority of companies are starting to embrace the efficiencies that AI brings now.
Being a practitioner of AI software development and being involved in many projects in my company AI Technologies, I always found my direct experience in the field in contrast with what the media generally portraits about AI adoption.
In this article I want to give my view on how AI projects affect the work dynamics into clients work processes and compare that with the studies available on the impact of AI and new technologies on work. This should help the reader, especially if he is an executive, to set the right expectations and mentality when he is assessing the potential investment into a new AI project and if his company is ready for it.
To start with, any software development project, including AI, can be summarized into 3 stages: proof of concept (POC) when the prototype has been built, product development when the software is actually engineered at scale, live support/continuous improvements. It occurs often that projects in AI will not go pass the POC stage and this is often due to
1) not right IT/data infrastructure in place
2) not specialist people have been hired to handle the new software or digital transformation process has not been planned yet.
Regarding point 2, the most difficult issue is around hiring data scientists or data/machine learning engineers because many companies struggle with that.
In fact, in a March 2021 O’Reilly survey of enterprise AI adoption, it has been found that “the most significant barrier to AI adoption is the lack of skilled people and the difficulty of hiring.” And in 2019 software it has been estimated that there were around 144,000 AI- related job openings, but only around 26,000 developers and specialists seeking work.
Of course hiring an internal data scientist, it is not the only problem in restructuring the workforce. Often a corporation has to be able to re-train entire teams to be able to fully benefit from a new AI software.
I can give an example. As many readers know a sales process involves 3 stages: lead generation, q&a call/mails with potential clients and deal closing. Now, a couple of years ago AI Technologies had been engaged to automatize the q&a call stage and we build a ai bot to manage the 'standard questions' a potential client may ask (without getting into the details, using AI and technically word3vec encoding, it is very possible to automate mails/chatbot for 'standardized questions' like 'how much it cost?' 'how long is the warranty for' etc.). Using this new internal solution, it meant the team responsible for the q&a would have been retrained either to increase the number of leads or the number of closing. The company simply decided to not embark into the transformation process required to benefit the new AI adoption.
This example, in various forms, it is actually quite common: companies unless they are really innovative prefer to continue with their corroborated internal procedures unless some competitors threat their profitability.
This bring to the fact that actually AI is not an out of the shelves solution which can be plugged in with no effort. As the moment a POC is under development it should be a good norm to plan a digital transformation process within the company.
Also it is worth mentioning that, it is unlikely that the workforce has to be dismissed or made redundant as many expected following AI adoption. Just following the example above, what the AI bot does actually is to get over the repetitive tasks (q&a) so people can do more creative work engaging more clients (lead generation) or convincing to buy ( deal closing). Of course, it means that some people have to be retrained but also means that with the same people, you can close/generate more sales.
It is a misconception to think that AI solutions will make human work redundant , we just need to adapt to new jobs.
My example resembles a classical example on adoption of ATMs. When ATMs were introduced in 1969, conventional wisdom expected the number of banking locations to shrink, but instead, it actually made it possible to set up many more of them, it became cost-effective. There were under 200,000 bank tellers in 1970, but over 400,000 a decade later.
The other common problem to face when companies want to embrace AI adoption (point 1), it is their current infrastructure: databases, servers, and crm systems have to be already in place. To put it simply, any AI system requires data to work with so it naturally sits on top of data infrastructure in day to day business operations.
In the last two years AI Technologies has been engaged to work with a large public organization (70,000 employees) to build a solution to automatically detect malicious behavior of its employees manipulating their data. To build the AI software we had also designed a system to stream data from each employee terminal into a central database for processing. This infrastructure was not present at the beginning of the project since before the need for malicious detection was arised, the organization never really realized the necessity to gather certain data: a simple login and logout time was all the needed to monitor the activity of their employees (which company folder/file they accessed etc. was not important).
This is a common situation and most of the companies' infrastructure are usually not ready to be used directly with AI solutions: their current infrastructure was simply designed with other objectives in mind.
For sake of completeness, most companies decide to invest their internal resources in other areas of the business rather than crm or expensive data structures. There is no blame on this choice, at the end any business has to be profitable and investing in infrastructure is not always easy to quantify the return of investment.
If anything, this article should have given an idea of the major pitfalls approaching AI projects which can be summarized as follows:
• AI solutions are not out of the shelves , ready made software that can be immediately put in use: they often require new skilled hires within the client organization and potentially a plan how to re-utilized part of the workforce.
• It is often a myth that AI solutions will necessarily replace the employees although it is possible that they have to be retrained.
• Any AI project works on data and infrastructure which are necessary to benefit the new solutions. Before embarking on AI projects an organization has to either budget in a new infrastructure or at the very least an upgrade of the one in use.
In essence, due to the implication on both employees and infrastructure, AI adoption should be considered as a digital transformation process more than a software development project. After the overwhelming hype of attention of the recent years, I would expect that in the next 2-3 years more companies will start to realize what AI projects really are and how to best use them.