Fintech companies grapple with stringent regulatory demands, high customer expectations, cybersecurity risks, and integration challenges with traditional banking systems. But with a tough market and even tougher competition, they have to move fast. Often, this means making development decisions that are not necessarily the best but rather the best they can within the limits of the resources they have.
Tech debt: Do you have it?
In 1992, Ward Cunningham, one of the Agile Manifesto authors, compared code problems to financial debt, stating “some problems with code are like financial debt. It’s OK to borrow against the future, as long as you pay it off.”
Technical debt — a phrase that sends shivers down the spines of IT professionals. It is the invisible burden we pick up when rushing through software development. Like a credit card bill that quietly piles up, you only realise the true cost when the interest rates kick in – slowing development, more bug fixes, and frustrated users.
But not all tech debts are equal. Some are strategic choices or just part of the learning process, not immediate roadblocks. To unlock your full potential, let’s figure out which tech debts are holding you back.
Step 1: Classifying tech debt
There are four main categories of tech debt, coined by Martin Fowler as “technical debt quadrants”: reckless, prudent, deliberate, and inadvertent. Understanding these categories is crucial for prioritising your efforts and tackling the debt that truly matters.
Intentional Debt:
(Prudent & Deliberate): Prioritising rapid release and anticipating manageable future cleanup is a strategic rush often used for low-risk ventures where speed trumps perfection.
(Reckless & Deliberate): Sacrificing optimal code for immediate launch, despite the consequences, creates tech debt. This risky approach may be employed for high-pressure situations but with potential consequences.
Unintentional Debt:
(Prudent & Inadvertent): The quest for excellence can lead to accidental debt when a superior solution emerges after initial implementation. This typically occurs as teams gain a deeper understanding and evolve their approach.
(Reckless & Inadvertent): Unknowingly taking the wrong path due to lack of expertise creates reckless inadvertent debt. Teams unaware of their missteps unknowingly accumulate technical debt.
Understanding these categories helps in effectively managing and addressing technical debt based on its nature and impact.
Step 2: Reflecting on debt metaphor
Before we jump on how to get rid of tech debt, let’s reflect on the “debt metaphor.” Ward Cunningham’s 2009 insights remain relevant, challenging the perception that it merely motivates refactoring. In the era of Gen AI, creating clean code is easier, yet the legacy code predating ChatGTP, Copilot, or CodeWhisperer still presents challenges.
In 2009, Uncle Bob clarified, “A mess is not a technical debt.” This underscores that a chaotic codebase is not a strategic decision but a consequence of disorderly development. Technical debt, however, arises from deliberate compromises within project constraints.
The debt metaphor prompts a nuanced view – technical debt is a calculated investment with expected returns, not a messy aftermath. Understanding this distinction is crucial for intentional code evolution, especially when dealing with legacy systems. It calls for strategic decisions, discipline, and an unwavering commitment to continuous improvement.
Step 3: Getting rid of tech debt
Well, we classified our tech debt and reflected deeply on it. Let’s get our hands dirty and start to pay off our debt. There are two main options to manage technical debt and create a greater debt load.
- Debt List Tracking System: This “debt list” should sit within your project tracking system, where you log each debt item and its corresponding remediation tasks. Each item gets an estimated effort and timeline, similar to a work ticket, allowing you to prioritise and schedule debt repayment.
- Product Backlog Integration: Instead of a separate ledger, picture your debt as part of your existing project workflow. Treat each debt item as part of your product backlog, alongside other features and improvements. Assign effort and schedule estimates just like you would for any other item.
Both methods offer proven ways to keep track of your technical debt and gradually whittle it down. But if you go for Debt List Tracking System, you should also consider engaging a consulting firm to support you with this list.
Conclusion
In the competitive landscape of fintech, the challenges create a pressing need for agility and innovation.
There is no silver bullet to fixing tech debt – classification and prioritisation are the key to pay off your technical debt and unlock your true potential. By strategically classifying and prioritising tech debt, fintech companies can untangle the knots that slow down innovation. This process isn’t just about cleaning up code; it’s a strategic move to optimise operations, enhance regulatory compliance, fortify cybersecurity measures, and streamline integrations.
Sometimes, a full modernisation journey must also be considered. A new architecture not only pays off the technical debt but also refreshes your technologies, attracting new talents and promoting freedom for innovation.
In essence, addressing tech debt in fintech isn’t just a technical enhancement; it’s a transformative journey that positions companies to tackle challenges head-on, move at the pace the market demands, and emerge as leaders in financial technology.