Digital Transformation and Technical Debt: Lessons from Practice

Author: Nedžad Junuzović

Throughout our careers, there are moments we vividly remember even years later. One such moment for me was the first meeting with a development team we were taking over from. I recall the client’s question—spoken in a strong British accent—about the software being developed: “How can it take you three months to develop just one simple feature? We’ve been working on this for over a year, and this is the first time I’ve heard about something called technical debt. Why hasn’t anyone told me before?”

There was silence on the call for a few seconds before one developer finally broke it: “We’ve warned about it, but every time, delivering new features and meeting deadlines was considered more important than solving technical problems.” It was a short meeting.

The client was a large international company producing metalworking tools. They had decided to embark on a digital transformation journey and started implementing their first projects almost two years prior. I’m sure many of you in software development have encountered similar situations.

Technical Debt: The Invisible Enemy of Development

Before continuing the story, let’s clarify what technical debt means. It refers to the accumulated consequences of quick but suboptimal technical decisions made to deliver features faster. Like financial debt, it compounds over time. If not addressed in a timely manner, it makes future development slower and harder until progress becomes nearly impossible.

Why Did the First Team Struggle?

The expectation for the new team was clear: continue the project, but faster and better, until achieving success in the form of a fully developed software solution with thousands of delighted users.

Two experienced software engineers who joined the project a few weeks before me had already performed a technical code analysis, documented existing issues, and proposed solutions for addressing the identified technical debt. My role as project manager was to investigate why the original team had encountered problems in the first place, so we could move forward effectively.

After several discussions with key stakeholders, reviewing collaboration tools, and examining the overall situation, it became evident—as it often does—that the problem was systemic. Without addressing it on a systemic level, the new team would quickly face the same challenges of unmet expectations.

Our analysis revealed the root cause: the Product Owner was under pressure to meet deadlines set by the company’s marketing team. In an effort to meet these expectations, they exerted additional pressure on the development team to increase productivity. This led to a focus on delivering more features while neglecting technical quality.

While this practice increased the number of delivered features and minimized deadline deviations in the short term, the accumulated technical debt eventually required more and more time for development and bug fixing. The greater the delays, the higher the pressure on the team—and the faster the technical debt grew. Eventually, development progress ground to a halt.

This systemic dynamic is illustrated in our diagram, which highlights the interplay of pressure, behaviors, and results.

How Did We Solve the Problem?

Recognizing the structure that created the delays and the related issues in communication, behavior, and expectations, we presented key stakeholders with a comprehensive view of the entire system upon taking over the project.

When we talk about system structure, we don’t just mean the organizational hierarchy or project setup. It includes patterns of interaction between core elements of the system, as shown in our diagram. System structures can encompass hierarchy, communication processes, beliefs, attitudes, software quality, decision-making practices, and much more.

With a shared understanding and open dialogue, we were able to design and implement a new software architecture and a plan for addressing technical debt.

The result? Stable development, sustainable delivery speed, and a satisfied client.

The Importance of Systems Thinking

This case highlights the value of identifying root causes at the system level. Systems thinking often makes the difference between success and failure. As Mr. Han in Karate Kid III wisely said: “If you think only with your eyes, you are easy to fool.”

If your team or organization is facing similar challenges, I invite you to schedule a conversation. Together, we can explore solutions and share insights.