Very often, it is impossible to launch an IT project from scratch. Even if project developers, architects or managers are obviously looking for the best technology in terms of development language, database or hardware, they should take into account what already exists – the so-called legacy. Moreover, the product code won’t always be perfect. This is the technical debt: a debt which the company isn’t worrying about often enough and which will only grow throughout the years, given the technological evolutions and changes linked to new user requests from the business in particular.
According to Wikipedia, the technical debt is a software development metaphor invented by Ward Cunningham. He gets inspired by the existing concept of ‘debt’ within the context of corporate financing and applies it to the field of software development. Cunningham adds: “All compromises, whether in terms of time constraints, budget, negligence or ignorance, accumulate a ‘technical debt’ that will have to be paid off sooner or later.”
However, only few companies know and quantify their IT debt. Still, different techniques exist in order to identify it - since it seems impossible to entirely avoid it. We can find tools to recognize the technical debt. For this purpose, it is important to have an updated directory of libraries and components, in order to avoid obsolete items that will disturb the new application. However, it isn’t advisable to focus only on the latest trendy technology, since it might be unstable or too quickly outdated. Moreover, open source code often burdens the technical debt because of its sometimes questionable quality. In this case, we shouldn’t deduct that the developers will absolutely have to write a perfect code - the better being the enemy of the good - and reusing the existing code might be interesting.
… in order to act
In the light of these findings, we can privilege various options in order to limit the technical debt. For instance, we don’t necessarily have to choose the ‘fashionable’ technology, but we should rather focus on listening to the user’s needs. Likewise, the more the company relies on different technologies, the more the integration will be complex and the more updates will be required. By relying on tests and good practices, we can add rigor, while strict coding rules will guarantee an easier deployment in the existing environment. Moreover, the agile methodology will prevent us from going too far in development before taking into account the user’s remarks, even if the economic constraints are often pushing us to accelerate deployment.
Furthermore, we must avoid that the developers would be too specialized and would therefore write a code that is too specialized and difficult to exchange with other teams. In addition, it would be interesting to regularly bring the developers together, so that they can share their work with the other members of the organization, which will allow us to improve the code, to intervene if the developer concerned is not available and to reuse it in the future, if necessary.
Of course, an agile scrum-type methodology will facilitate the continuous improvement of an application and will allow the faster and more efficient testing of the application, before any deployment.
Of course, compliance with the standards, documenting a project and managing the lifecycle of an application will also be items allowing us to limit the technical debt.
Managing - or at least reducing - a company’s technical debt isn’t only a financial issue. It also allows to strengthen the partnership between the IT department and the business. It also allows us to better manage and anticipate the risks linked to useless developments or developments not really meeting the true needs.
In this context, a DevOps or – even better – SecDevOps strategy (see our previous blogs) will allow us to ensure more consistency in the field of IT.
Supporting companies is Aprico Consultants’ mission. This support is strategic as well as technological. In order to support its strategy, Aprico has developed an original work methodology based on three axes: smart, lean and agile. Aprico’s transversal approach, combining business, technology and methodology, all of this associated with our high standards, is one of the key factors for its success.