Over time, any product team who constantly innovates has a common problem. Choosing the right tools for solutions that address users needs while keeping a scalable system is a delicate balance. It’s too easy to grab one of the many tools developers have at our disposal these days, and just get a feature or product built ASAP. The theory pushed by phrases like “**** it, Ship it”, “Move fast and break things” can often get taken out of context to ship junk as long as it “works for now”.
Even teams who work to balance smart technology practices with user and business needs run the risk of a maintenance nightmare. Technical debt is a real problem with risks on all fronts and is being discussed a lot right now.
The idea of technical debt is important because it’s the perfect metaphor of the mess you can get into. But the way out sounds like a dark time where you are heading toward bankruptcy. This urgency can create stress and pull attention off of what really matters: users.
Addressing technical debt comes in a variety of ways. Mitigation is usually addressed by maintenance and prevention. Of course, there is an element of prevention that is more than just that. It’s progressively planning ahead.
While attending An Event Apart, I heard Jeremy Keith’s talk called "Resilience: Building a Robust Web That Lasts”. He mentioned a great phrase that I thought really changes the conversation about Technical Debt. He outlines 3 steps which I believe help prevent debt and grow credit within your system:
- Identifying Core Functionality
- Make that functionally variable using the simplest technology
- Enhance
The mentality shift from resources going into “paying off debt” to spending time building technical credit is a smart play on words. It immediately puts the focus on getting ahead instead of just barely keeping up.
He goes on to outline why HTML and CSS are more forgiving languages than languages like Javascript. These qualities help inform the decisions technologists face when exploring solutions. Scaling is a paramount consideration. Jeremy suggests that you use these principles in each component as a way to grow your technical credit.
The idea of growing technical credit nods to the difficulties of staying ahead. Progressive enhancement is a theory that attempts to stay responsive to the vastly growing needs of our markets.
Wiping the Slate Clean
Sometimes, to begin to grow credit, the only way forward is to wipe the slate clean. The idea of this is overwhelming to many teams. If it is, your product may very well need to consider it.