The development process is long and arduous. Everyone just wants to launch, already! In order to meet deadlines and keep the project on track, app developers come up with a few hacks here and a few work-arounds there — it’s no big deal, right? You’ll fix it later. The problem is, later never quite rolls around.
A year or two from now, when your app crashes and burns, you’ll likely look everywhere for a solution. Did you mess up the concept? Was it too early for your great idea? Did marketing screw something up? The reality is, it’s nothing this dramatic. Likely, you just let your technical debt get out of control.
Defining Technical Debt
Users will only be patient with your bugs and errors to a point. Then, they scrap your app and look for something better.
Technical debt is the accumulation of bugs, errors, and problematic code that begins as soon as you start a new development project. Technical debt occurs when you’re building mobile apps, developing a new software package, or even designing a new business system. Google has it, Apple has it, and Microsoft has it. Technical debt is comprised of code that is poorly written, duplicated, or otherwise problematic.
While technical debt does not cause the app to be completely unusable, over time it builds up to the point that your app is quirky. Then clunky. Eventually, it’s not worth using. Every development project has technical debt, but just like the family debt or the business debt, you have to make sure the debt is never surpassed by the income, because that’s when you get into trouble. Always be working on that technical debt so that the “bad” doesn’t over take the “good”.
Tackling Technical Debt
Technical debt begins as soon as a development project starts. If the hacks and work-around fixes aren’t addressed, eventually the technical debt will catch up with you and sink your app completely.
As soon as your working app hits the market, it’s time to begin addressing your technical debt. The problem lies in the fact that most app developers want to keep adding new features and functionality right away or delve right into another development project. These things are more fun than dealing with your technical debt. But technical debt is just like the person who tries to add on a brand new sunroom with an indoor pool and sauna before they’ve made the first payment on their new home mortgage. They’re very likely to lose the home by focusing on adding new stuff before the basics are taken care of. Technical debt works this way, too.
Here are a few pointers for staying ahead of the game when it comes to managing technical debt:
• Always focus on addressing bugs and known issues before beginning work on new features and functions.
• Keep your ear to the ground. When user feedback starts rolling in about bugs and other errors, focus on these before your customers get the idea that you don’t care about their concerns.
• Dedicate a certain amount of resources to consistent work on reducing your technical debt. For example, you can assign a couple of developers each week to devote all their time and energy toward addressing the technical debt, or set aside one week out of every six when all your developers work on the debt.
• Keep a working list of known issues and bugs to be fixed and make it visible. Post it on the wall in your development area or add it to your team’s calendar. Make sure that everyone is aware of the technical debt all the time.
• Set more realistic deadlines for future projects to discourage hacks and work-arounds and encourage sound development practices. Don’t be tempted to skip vital testing and debugging efforts just to get to market faster.
In the end, shoot for better products, not just faster times to market. Technical debt can make your fabulous new app look like a phenomenal flop if it gets out of control. The good news is, smart developers can manage it and make it look easy. Want to know more on this subject or something else related to apps? Contact us!
Simon has worked in the software industry for over 20 years; intent on always producing work of the highest standard and creating software products that genuinely makes things better for people. Simon has previously held positions ranging from Developer, Technical Consultant, Head of Development through to CTO and more recently founder and CEO of several high profile technology companies.