Tag Archives: Product Development

what is tech debt or technical debt and how to manage it

What Is Tech Debt And How Do You Manage It

Image it’s crunch time… you’re focused on shipping, so things like tech debt aren’t on your mind.

Maybe you’re already thinking: “When is it NOT crunch time?!”

You’ve got eager customers who are waiting for you to ship product, your teammates are desperate to complete the release and move on, and you don’t want to be the bottleneck.

So what to do you?

You rush through writing your code and put in a quick fix. It’s good enough to pass tests and a quick code review.

Or maybe you’re not the one coding. You maybe one of the people encouraging someone else on your team to put in a quick fix and move on.

Unfortunately, crunch time doesn’t come around once in a blue moon. It happens more often than we’d like. Sayings like these don’t help: “Move fast!” “Break things!” And, “Ship code!”

As designers, product managers, and developers we are eager to share what we’ve built with customers. However, constantly operating by the seat of our pants comes at a price and that price is tech debt.

Whether you have or haven’t heard of tech debt, I’m pretty sure you’ve experienced its effects. If you’ve been on product teams that seem to constantly be putting out fires, you’ve probably noticed that over time all those quick fixes add up. And when it comes time to build something brand new, what would normally take a few hours or days, suddenly takes weeks or months.

The reason it takes so long is because there’s a lot of cruft built up in the code base. Continuing to layer on quick fixes will only destabilize the code and impact its quality.

If you’ve struggled to deal with tech debt on your product team, or want to educate new teammates on how to manage it, then today’s Build Tip is for you!

I’m joined by Jay Hum who is a Product Manager and Pivotal, and together we’re going to be sharing:

  • What tech debt it is and how to recognize it
  • When it make sense to accrue tech debt – yes there are time where it makes sense to let it build up
  • How to pay it down or just continue to ignore – unlike other types of debt, you don’t always need to pay down tech debt
  • When it’s too late to pay down debt tech and what to do

Be sure to share the episode with your teammates to help them understand the importance of tech debt!

Tell us in the comments below how you handle tech debt in your company.

Listen to the episode on iTunes!

You can listen to this episode of Build on iTunes.

Enjoyed this episode and want to watch more?

Subscribe to our YouTube channel to receive additional episodes.

Want more resources on tech debt? Here’s a link to the post Jay mentioned in the episode: Introduction to the Technical Debt Concept

Build is produced as a partnership between Femgineer and Pivotal Tracker. San Francisco video production by StartMotionMEDIA.

What is tech debt and how do you manage it full transcript

Poornima: When your product has a nasty bug that’s impacting a lot of users, your first priority is to put a fix in that’s going to help resolve it. You might hear your developers say something like…

Developer: Yeah, I’ll just put in a quick fix.

Poornima: A week may go by, maybe possibly a month, and you’ve got another nasty bug on your hand. Your developer might tell you…

Developer: No problem, I’ll have that bug resolved by the end of the day.

Poornima: Later on, you might ask them to put in a new feature, and they may respond with…

Developer: Yeah, it’s going to take a while.

Poornima: How long?

Developer: Weeks, possibly months.

Poornima: “Weeks, possibly months!?” Why so long?

Developer: Tech debt.

What is tech debt?

Poornima: Wondering what’s tech debt, how to avoid it, and prevent it before it gets too unwieldy? I’m going to answer these questions and many more, in today’s quick *Build* tip.

Welcome to *Build*, brought to you by Pivotal Tracker. I’m your host, Poornima Vijayashanker. Today, I’ve got a *Build* tip for you. I’m joined by Jay Hum, who is a product manager at Pivotal. Jay, tell me what’s tech debt?

Jay Hum: Tech debt is the effort that builds up when a team makes a conscience decision to implement code that’s easy, instead of building out a best solution.

Poornima: OK, so what does that actually…

Jay Hum: The easy-to-implement, quick, messy code, is the debt. Like any type of debt, it accrues interest over time, and so the additional effort that is built up that could either be time, money, or resources, is the technical debt that builds up that makes it much more difficult in the long run to implement a better solution.

How do you avoid tech debt?

Jay Hum: Here is the interesting thing. Tech debt is usually thought of as a bad thing, something that needs to be paid down very quickly, or avoided as much as possible, or all together. However, tech debt is actually unavoidable. Much like financial debt, there is not necessarily good technical debt, but there is technical debt that you can deal with.

An example is, in the mortgage or student loan, where the principle plus the interest that you accrue could be lower than what you actually yield in terms of the investment. Any experienced or seasoned developer are always wanting to create the best possible solution that there is out there. However, sometimes you need to incur technical debt in order to get a product out to market quicker. Generally, the time to market, or the time pressure, is what makes technical debt unavoidable.

How do you manage tech debt?

Poornima: OK, it’s unavoidable. How can we manage it, while continuing to meet customer needs and pushing features out?

Jay Hum: Here’s the thing about technical debt that makes this sort of the analogy to financial debt a little dissimilar. You don’t actually have to pay down technical debt. For instance, when you’re building out a product or service, there could be parts of the code that aren’t used very often, or are not touched, that don’t need to be changed. The ROI on actually paying down that debt, or refactoring doesn’t get you much, or doesn’t get you anything there.                                                

One of the other ways to really look at it and approach it is build in technical debt into the product role map, or how you plan out your releases. When you think about it, you should be thinking about it in terms of what’s the upside potential versus the downside risk of either paying down technical debt, or not paying down technical debt, and relate that, to again, getting a product or service out to the market quicker, or spending more time and writing more cleaner quality code.

Poornima: All right, that’s great that we don’t have to always have to pay down tech debt, and that it’s OK to accumulate it, but how do we know when to make the trade off of paying it down, versus just letting it exist?

Jay Hum: Right, so one of the things that you want to look at, is what is the probability of the occurrence of something bad happening, or the probability of the occurrence of you having to do a major refactor because the technical debt has just gotten so big. Coupled with that, you also want to look at what is the impact.

Again, there is smaller technical debt, where the impact of paying it down is not very big. Again, there’s other parts where the technical debt can be very big, could lead to a big regression, and what is the impact on the delay to the market, or the impact to the customers that are actually using your product that’s in the market right now.

When you don’t need to pay down tech debt

Poornima: Do you have a example of a situation where you don’t need to pay down the tech debt, versus one where you do?

Jay Hum: Sure, yeah. I think a really good example would be if you take a look at an app through your analytics, and you’re looking at one of the features that you’ve implemented is not being used very often. This is a good example of, you probably don’t want to pay down technical debt on that feature, because again, it’s not a lot of people that are using it.                                           

Versus the flip side, so if you see that there is a feature that’s being used very heavily by your users, and that they’re clamoring for a feature that is sort of an add on to that feature, this is an instance where you would want to pay down technical debt quickly, so that you can build out that new feature that is an add on to the existing feature.

Is it ever too late to pay down tech debt?

Poornima: What happens if you leave tech debt around for too long? Is there ever a point where it’s too late to pay it down?

Jay Hum: There are instances where it is too late. Usually what that manifests itself is that you have to do a big rewrite. Which not a lot of people enjoy doing, both from a customer perspective, as well as the development team. If you go back to what I said earlier, if you realize that tech debt is unavoidable, and you build it into your product strategy, and your product roadmap, then there’s ways of being able to manage that tech debt at a good pace. So that you never have to end up with having to do a big rewrite.

Poornima: Thanks, Jay. This has been really helpful. Do you have any other resources for our audiences to check out?

Jay Hum: Yes, they should check out this article written by the Agile Alliance called “Introduction to Technical Debt Concept,” and it goes much more deeper into some of the concepts that I discussed here around technical debt.

Poornima: Now, Jay and I want to know, how do you guys handle tech debt at your company. Let us know in the comments below this video. OK, that’s it for today ‘s *Build* tip. Be sure to subscribe to our YouTube channel to receive more great episodes of *Build*, and *Build* tips like today’s. Special thanks to our sponsor Pivotal Tracker, for their help in producing today’s episode. Ciao for now.

Lesson 4: How Successful Companies Started with a Concierge MVP

This is the fourth lesson in the series: How Non-Technical Founders Can Bring a Product to Market.

By Poornima Vijayashanker

Welcome back! In my previous lesson I mentioned that both technical and non-technical founders should start with a Concierge MVP rather than jumping into building a product. The reason I encourage this step is because it forces founders to identify the key pain points that customers are experiencing, and figure out ways of resolving them. The resolution of the pains are the benefits that customers want to buy. Hence, it doesn’t matter what specific features you’re building, the focus should be on the benefits. The benefits are after all the value proposition that customers are buying into.

Now you might still be skeptical. So in this lesson I want to showcase a few successful companies that began as a Concierge MVP. You might even be shocked to know that one of these has become a billion dollar company!

Case Study 1: Zappos

The founder of Zappos, Nick, loved shoes, and had a theory that other people probably loved shoes just as much as he did. He also had a theory that people might be open to buying shoes online. But he wasn’t a 100% sure. So the first thing he did was walk into a shoe store in San Francisco. He asked the shoe store owner about current inventory. Then he struck up a deal saying that every time someone bought a shoe on his website, he’d come over and purchase the shoe from the store owner. The store owner agreed to the deal. Nick went home and setup a pretty simple site listing the inventory that was in the shoe store.

Guess what happened next? Nick sold his first pair of shoes, then his second, and so one.

By pursuing a Concierge MVP Nick validated his theory that people will buy shoes online. The value proposition was clear to early adopters: it was convenient to search through an inventory of shoes and purchase online.

Only after Nick had validated his business model through his Concierge MVP did he approach Tony Hsieh for funds.

Case Study 2: AirBnB

Many people have experienced the rise of AirBnB prevalence, and how easy it is to find and book a rental online. However, before AirBnB became what it is today, it started off as a simple side project for the 3 founders, and is probably one of the most classic examples of a Concierge MVP.

Days before the Democratic National Convention the 3 founders knew that people wouldn’t be able to find a place to stay. So they piled up air beds (hence AirBnB) into their small apartment, and put up a simple ad about renting an air bed. Guess what? People actually rented an air bed!

Once again the value proposition was clear, people who wanted to go to this highly sold out event couldn’t find a place to stay in traditional places such as hotels and B&Bs. So the 3 AirBnB founders were able to offer them a place, and their early adopter were willing to pay and sleep on an air beds!

In both of these cases, Zappos and AirBnB eventually had to do a lot to scale their business to become million dollar and billion dollar revenue generators. But by starting with a Concierge MVP they were able to test out their first hypothesis without making a huge investment in terms of time and resources being spent building a full product. They were able to prove that people would buy the experience.

Even in the case of my own startup Femgineer, my Concierge MVP was a single page ad on my blog about an 8-week online course on product development. I didn’t bother creating actual curriculum for the full 8-weeks until I had a set of students who had pre-paid for the course! This pre-sales tactic took a lot of the risk out for me spending my time developing curriculum, and it also made it clear what value proposition students were willing to pay for: an online course with me on product development!

OK so hopefully by this point you are starting to see the value in creating a Concierge MVP. But you’re probably wondering how to get started? In the next lecture, I will walk you through the getting started phase!

Did you enjoy this lesson? Got any questions for me on it? Please let it the comments below and I’ll be happy to answer it!

Checkout out the previous lessons:

Lesson 3: Why should both technical and non-technical founders start with a concierge MVP?

This is the third lesson in the series: How Non-Technical Founders Can Bring a Product to Market.

By Poornima Vijayashanker

Welcome back! In my previous lesson I taught you what a concierge MVP is: an experience, not a product. I also mentioned that there are 2 key benefits to a concierge MVP. The first is to understand who your early adopters are, and form a close connection with them so they can provide you with feedback. The second is to reduce your iteration cycle, normally you’d build a whole product, then market it, only to discover that the product doesn’t appeal to the user base you thought it would. With a concierge MVP you don’t need to have such a lengthy cycle. You can begin by testing the value proposition through messaging, and change it if it’s not attracting any early adopters.

Both technical and non-technical founders groan when I tell them not to build anything. They push back telling me that customer are going to want to *see* and play with a product before they can determine it’s value.

Here is where the misunderstanding begins. Too often we think the value comes from features. When really customers value a product for it’s benefits.

Let me tell you a simple story to illustrate my point. I had a student who was pretty confident that she wanted to build a product that helped private practice doctors retains their patients. She even had the mockups ready. I told her not to build anything just yet, and to not even show the mockups during an initial conversation. She was a little reluctant but she agreed to my experiment.

She approached several doctors and asked them if they had a problem retaining patients. The doctors responded that their problem wasn’t retaining patients, but getting paid on time for the patients who were walking through their doors! In fact, the vast majority of the private practice doctors she met with had a product to help with billing, but it just wasn’t meeting their needs. They needed to reduce the time it was taking for them to collect. Hence the benefit they were looking for was getting paid on time. Imagine what would happen if my student conveyed this benefit to the doctors. They’d probably be interested in signing up, and that’s exactly what happened next.

Whether you’re a technical founder who is a whiz at coding or you’re a non-technical founder who is eager to build a product, you’ve got to take the time to identify the main pain points a customer is experiencing. Knowing the pain points you’re would-be customers are experiencing will help you translate the resolution of them into benefits, which is your initial value proposition.

Then it doesn’t matter what “product” you sell to early adopters. They are interested in experiencing the benefits you spoke about, which you can given them through a Concierge MVP.

In the next lecture, I will provide you with some examples of successful startups that began with Concierge MVPs.

Did you enjoy this lesson? Got any questions for me on it? Please let it the comments below and I’ll be happy to answer it!

Checkout out the previous lessons: