It was a dark and stormy day when it dawned on the project manager. Many full moons ago a new project was planned and leaders established a firm deadline (how ironic!). Technical people slaved day after day and night after night in their cubicle-shaped dungeons, under the promise of succulent bonuses if they worked like zombies until they closely resembled the real ones. Unflinchingly they coded away not knowing if ’twas day or night or dusk or down, unaware of the many little creepy creatures their code was creating. But one night, right before down the bugs started coming out of nowhere and from everywhere. And leaders spoke: “Let the little creatures be, for what matters is reaching deadline and that will save us!” The zombies continued coding in the dark confines of their dungeons, and more little creepy creatures grew and spread to the farthest depths of the system.
Late one night, the project manager heard a deafening scream. The cry came from customers as bugs began crawling out from between every feature, making their days a living nightmare. And the leaders spoke: “Zombies shall eradicate the crawling creatures as they continue coding!” As full moons passed, the zombies tried to control the creatures while still creating more new code but couldn’t. The creatures grew in numbers like fog spreading all over the valleys and mountains, coming out from the existing code and from the new code until, one thunder-filled dusk, the creatures surfaced from between the cracks, the walls, the windows, and the shadows. The project’s reign collapsed, leaving nothing but dust and fog in the twilight.
Technical debt is no less scary and dangerous. If we allow a culture in which technical debt accumulates and no real, effective practices become part of the organization’s culture — and by that I mean the entire organization, not only development, IT, and QA — then it is likely that technical debt will become a significant budget spender. Furthermore, as technical debt increases, more and more resources are needed to maintain the code. That demand can grow over time to the point that system utilization can reach the point in which all resources are dedicated to maintaining the faulty system and no new development is possible. Many professionals have confronted at least once in their life a situation quite close to that. Nobody is willing to touch the legacy code because significantly serious bugs then occur that are difficult to fix. That means a major system failure could occur at any time. This is called a system collapse and can occur not only on software systems but also on IT systems such as email services, or on financial systems such as the current economic crisis, or human resources such as when people entirely burn out. Just google the term and millions of hits will result. The point is, you shouldn’t wait for significant technical debt is accrued to start acting upon it. The right thing to do is to avoid creating technical debt to begin with.
Effective lean-agile strategies contribute to the reduction of technical debt. Your organization’s culture should include total visualization, focus on quality compared with time of delivery, realistic quantification based on visualization, continual improvement, and continual integration.
Don’t let the creatures doom your organization.