The never-ending battle of technical debt

And how to advocate for its destruction

Happy Tuesday! Rumor has it Pumpkin Spice may be back this week or next… but most importantly, college football is nearly back.

⚡️ If you’re on the job hunt, my good friend Taylor Desseyn and I would like to help. We’re launching a new job hunt community called The Friend Zone, opening up August 26. Join the waitlist here.

🧠 My Engineering Leadership has one final session for 2024. September 17-19 from 12:00 - 1:30 PM ET. Only a couple spaces remain. Sign up here.

The big picture

Ah, technical debt: the silent productivity killer in software development. It's the stuff we know needs fixing but never seems to make it into the roadmap. Let's dive into how to manage it effectively in an agile environment.

Why it matters

  • Ignored tech debt leads to missed deadlines and declining product quality.

  • It demotivates your team, especially when they see issues they want to fix but can’t, or the tech debt is so bad it makes coding difficult

  • As your company grows, unaddressed tech debt can become a major bottleneck. You’ll find yourself building new features on an unstable foundation.

Here’s a real life example…

We once faced a classic case of intentional technical debt at my company. We were racing to get a new product feature into beta and decided to skip server-side pagination to save time. Our thinking was simple: get a proof of concept out quickly and into the hands of customers for feedback. It worked, and customers started using this feature more frequently.

Exciting! But success brought its own challenges. As usage grew, we found ourselves attempting to load thousands of items on page load. Customers waited in frustration, and our engineering team cringed every time they had to work with that part of the codebase. What started as a time-saving decision had become a painful reminder of the trade-offs we'd made. It was time to pay back our technical debt, with interest.

How to balance tech debt with feature development

  1. Try to allocate 10-20% of each sprint to tech debt tasks—and protect this time! Tech debt tasks are often the first to get cut in favor of something else deemed more pressing.

  2. Include tech debt in your "definition of done." If for whatever reason it gets cut, make sure it gets noted down so nobody is surprised when it comes back up again.

  3. Use sprint/project retros to identify and strategize about tech debt. The more you talk about it (especially with folks not in engineering), the more other teams will recognize its importance.

Communication is key

  • Use metrics and visuals to quantify tech debt (e.g., code complexity, test coverage). This is especially helpful for convincing a non-technical audience about the importance of addressing technical debt.

  • Build a business case explaining how tech debt affects long-term product health. Keep talking about it!

  • Set expectations: Tech debt management is ongoing, not a one-time task. As much as we would love for this to be the case…

The bottom line

Treat tech debt as a priority and integrate it into your development workflow. It may take some explaining, but the value will speak for itself with each completed sprint.

🔮 What's next

In our ETA Friday newsletter for All Access Members, we'll dive deeper into strategies for quantifying tech debt's impact on team productivity and customer satisfaction. Don't miss it!

SOMETHING EXTRA:

📺 This is some high quality television for engineers. Check out Jason Lengstorf’s most recent Web Dev Challenge episode. You don’t want to miss it.

📚 A little outside my normal book recommendation… I recently finished reading Says Who? by Anne Curzan.

  • If you’re interested in the nuances of grammar and how the world came to accept “they/them" as a singular pronoun, you’ll enjoy this. I sure did!

Reply

or to participate.