Need some help handling your Technical Debt? If so, we can help, let’s get started.
Piling On The Technical Debt
Your business moves at a rapid pace. It’s no surprise that the software development required to support your business does as well.
Your software development teams, if practicing Agile, are constantly Sprinting to get things done. These teams are driven by the requirements and deadlines around making money for your business.
Each day you have new ideas and requirements to improve the experience for your customer or your business. Your business and customer are never short of ideas or new features for software that you are building. This rapid pace does not leave a lot of extra time for your software development teams. Time that they could use cleaning up the code that was written in the previous weeks and months. The code that was perhaps over-architected or the code that was dodged because it was hard to test. These technical decisions create duplication and a pile of spaghetti code over time. This constant neglect or inability to tend to this clean up, adds to the backlog of your software development teams, creating a mound of Technical Debt.
Hidden Costs of Avoidance
These shortcuts and assumptions help your software developers iterate quickly and provide solutions for your business’s requirements. These shortcuts though, if left unaddressed, add to the growing Technical Debt. This technical debt bogs down systems, crashes software, and causes multi-month delays in software releases. These delays slow your business’s effectiveness and begin to erode the relationship between your business and the software development teams. The software development teams are no longer viewed as fast and effective. These feelings lead to assumptions of ineffectiveness or an overall inability to deliver.
Unfortunately, many business’s feel that spending time managing their Technical Debt, is a waste of time and money. This mindset could lead to unpleasant technical surprises. Unforeseen technical issues sometimes halt production systems in their tracks. Addressing an issue at this stage costs businesses far more to fix than if they would if they have addressed them in a more strategic method.
Instagram experienced this early on when it originally launched its iPhone app, running its operations off of a single server in Los Angeles. But after an onslaught of traffic nearly crashed the server, Instagram pivoted in three days to an EC2-hosted database, adding the additional resources to keep them moving. Co-founder Mike Krieger compared the transfer to open-heart surgery, and he now works to preemptively address technical debt before it leads to catastrophe.
Paying Back The Technical Debt
Depending on the amount of accumulated Technical Debt, there are multiple approaches to identifying and beginning to pay down your Technical Debt. We have seen some different approaches in our past experiences. Some of these approaches include:
The cheapest and easiest answer of all is to not tackle any Technical Debt until it becomes a problem. This is a high risk move, often sacrificing critical production systems. This is a valid approach depending on the systems affected. This approach is often taken in older legacy systems where testing is unavailable, and the confidence of the software team supporting it is low. Sometimes the team making the decision inherited the system and are not confident enough to make changes let alone what could be deemed as unnecessary at that point in time.
Dedicate Time Each Sprint
Like a credit card, you can pay the minimum balance each Sprint. If your team’s Technical Debt has accumulated a large balance, referring to the credit card analogy again, this could take quite a while to complete. Regardless, this is a step in the right direction.
With this approach, you will slowly begin to chip away at the Technical Debt each week. Along the way, your software development teams will notice the positive side effects. These side effects include cleaner code, more tests, or a more performant code base. This approach will grow like a snowball as the software teams learn to better identify and address specific Technical Debt.
Hire Another Team
If your business is on fire and growing uncontrollably (a good problem), then you this could require yet another approach. The software development team may not be able to begin to comprehend how they can address Technical Debt when they can’t even keep up with your business’s requirements. In this case, getting some outside help may be the answer. Sometimes the best approach to handling Technical Debt comes from someone not from within your software development team but outside of your software development team. Having another experienced software development team, one not working daily with the code, may have an advantage at identifying larger Technical Debt issues because it’s new to them (can’t see the forest through the trees).
When working with an outside software development team like Mach One Digital, minimal guidance and oversight is required. Our software development teams work closely with your own software development teams. They collaborate to ensure quality code is being written, proper unit tests are in place and clear expectations are defined around tackling your Technical Debt.
Ready to begin tackling your own Technical Debt, Mach One Digital is ready to help. Get Started Now!