Tag Archives: Agile software development

user stories

User Stories: Estimate User Stories Using Hiten Shah’s New EAT Method

I don’t know about you but I HATE kale… That stupid leafy green vegetable with the ANDI score of 1000. It’s really hard to chew, and any time I see it on a menu, I skip it! But I get there are a lot of kale converts who go around saying, “Eat your veggies, especially kale!” OK, I know what you’re thinking, “What does this have to do with building software products and estimating user stories?”

Everything.

Just like we have to buckle down and eat our veggies (including kale) to stay healthy, there are a number of things we need to do in order to have accurate estimates for user stories that will ensure shipping a product consistently.

In the last episode of Build, we mentioned how a number of the current approach fall short. If you were left wondering what to do next, don’t fret, because in, today’s episode, Hiten Shah, the founder of Product Habits is back. He’ll be introducing a new approach to coming up with product estimates for user stories, and it’s coincidentally called the EAT method.

As you watch the episode you’ll learn:

  • How to perform each step of the EAT method — Explore, Adjust, and Task
  • What you CANNOT do with this approach
  • How this approach reduces ambiguity, which is the #1 cause of delays and scope creep

After you watch the episode you might think: “Ugh not another approach!” OR, “This is never gonna fly at my company!”

After you watch the episode you might think: “Ugh not another approach!” OR, “This is never gonna fly at my company!”

Well that’s why we want you to let us know what your concerns are in the comments below. We’ll be addressing a number of them in next week’s episode!

Listen to the episode on iTunes!

You can listen to this episode of Build on iTunes.

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

Check out these additional resources on estimating stories for your product:


Episode Transcript

Poornima Vijayashanker:        In the last episode of *Build*, we explored a number of approaches to estimating work, and shared some of the shortfalls when it comes to over-, under-, or just not estimating altogether. If you missed the episode, I’ve included a link to it below. In today’s episode, we’re going to suggest an altered approach to estimating that you can adopt and adapt for your team, so stay tuned.

                   

Welcome to *Build*, brought to you by Pivotal Tracker. I’m your host, Poornima Vijayshanker. In each episode of *Build*, innovators and I debunk a number of myths and misconceptions related to building products, companies, and your career in tech. Now one of the most elusive processes is coming up with estimates for user stories for a project or for a task. You’ll remember in the last episode, we shared some of the shortfalls of the current approaches. In today’s episode, we’re going to suggest an alternate approach that you can adopt and adapt to fit your team and your product’s needs.

                   

To help us out in today’s episode, Hiten Shah is back. You’ll recall he has built a number of products. His most recent project is called Product Habits. Thanks for joining us again, Hiten.

 

Hiten Shah:         Happy to be here.

 

Poornima Vijayashanker:        Yeah, so let’s go ahead and dive right in. I know we talked about a number of approaches last time, but I’m curious to hear what’s your approach for estimates for user stories?

 

Estimating User Stories Is Like Eating Your Veggies

 

Hiten Shah:         Well first, I have to say it’s like eating your veggies.

 

Poornima Vijayashanker:        OK.

 

Hiten Shah:         With veggies, everyone knows they should eat them.

 

Poornima Vijayashanker:        Right.

 

Hiten Shah:         Many of us are not very good at eating them. We all know the reasons why. It’s for health reasons and to prevent certain diseases and things like that. To me, the idea of getting accurate estimates for user stories is exactly like that. Nobody really wants to do it, but everyone knows they need to.

 

Poornima Vijayashanker:        Well some of us need to buckle down and eat our veggies.

 

What You CANNOT Do With Hiten Shah’s EAT Method

 

Hiten Shah:         Yeah, of course, but first let me talk about what you can’t do with this approach that I’m going to share because what you can’t do sometimes is more important than what you can do.

 

Poornima Vijayashanker:        Sure.

 

Hiten Shah:         What typically happens is that you have no estimates for user stories, or you have agile with points, or you have some kind of waterfall process, or you have some kind of build, measure, learn, lean startup process going on. If you’re not actually doing accurate estimates for user stories, you end up running into all these issues. My method will make it so that you don’t have to run into these issues. The issues are more issues of what I would call interpersonal communications between team members and teams. They involve things like, believe it or not I’ve seen this, engineers getting yelled at for not doing their job, so to speak, which would be actually creating the software.

                   

Another example would be we end up sort of like scapegoating and saying that it’s this person’s fault, or that person’s fault, or this team’s fault. You can’t do that with your engineers if you take this approach. I think partially most importantly of all, if you’re actually able to be deliberate and take the approach I’m going to share, you’re just going to make it so that you don’t have this lack of clarity across the board. I think that’s the most important thing. When there’s a level of ambiguity on a team about what’s going to happen, when it’s going to happen, all that kind of stuff, it leads to all these problems of culture, leadership, management. So you’re actually preventing a ton of problems if you can do this method.

 

Poornima Vijayashanker:        OK, so what’s the approach?

 

EAT (Explore, Adjust, and Task) Method For Providing Hourly Estimates For User Stories

 

Hiten Shah:         Yeah, so the approach is called the EAT method. The whole idea behind it is to do this three step process. It’s an acronym for each of the three steps. The first step is explore, second step is adjust, and third step is task. The thing is, the whole goal behind it, is to get 100% accurate estimates for user stories. That means that you’re down to 15 minute blocks, or hourly blocks, of estimates for user stories from engineers.

 

Poornima Vijayashanker:        Wow, so people who normally can’t estimate user stories are suddenly going to be able to give you an hourly estimate of how long something is going to take?

 

Hiten Shah:         Yeah, it’s like magic.

 

Poornima Vijayashanker:        Yeah, it sounds like that.

 

Hiten Shah:         Like eating your veggies over your lifetime right, and being a healthy person.

 

Poornima Vijayashanker:        Yeah, I think you’re going to have a dive in a little deeper.

 

Explore: Do Technical Research To Uncover What It’s Going To Take To Build A Software Product

 

Hiten Shah:         OK, sure. The first step is explore. In that step, there’s one sort of piece of that step that’s most important. What I named it is technical research. The reason for that is product people are used to doing user research, they’re used to doing customer research, and so research is a word that they’re used to, and it’s something that the nonengineers start. What that involves is creating essentially a technical research outline.

 

There’s many different ways you can do it, but a high level of it is you’re explaining exactly what you want to build, and you’re also including the reasons you want to build it. Majority of time, depending on your organization, the reason you want to build something should be because there’s a customer need, customer paying, or a business problem you’re trying to solve, or a combination of both. Then from there you’re actually going all the way down to if you have mock-ups, if you have any kind of sketches, you’re putting it together.

                   

Then my favorite part of it is when at the bottom you would write this whole idea, or this section, called open questions. These are questions you might have. You can already kind of figure out, you might have already figured out some of the things that might be tough or not tough. Then what you’re doing is you’re not just keeping that to yourself, you’re not just keeping that on your team with your close folks who helped you write it, you’re actually providing that to your engineers before they build anything, and before they even think too much about the problem ideally. That’s their opportunity to evaluate it. So, that’s the first step.

 

Poornima Vijayashanker:        OK.

 

Adjust: List Out Open Questions That Need To Be Answered

 

Hiten Shah:         Then the second step, which is sort of the adjust period, involves after they’ve taken a look at it, made comments, often times they add their own open questions because they have questions for you too, and so it’s just a way to get this communication very deliberate instead of making it all happen in conversations that are either not recorded or just not setup in a way where people can look back at it.

 

From the commenting and the open questions, you’re able to adjust what you’re going to build. This is the critical piece because if that middle piece of adjusting doesn’t happen, that’s where estimates for user stories completely fall down and that’s where you run into all the problems we mentioned earlier in the previous episode about scope creep, and padding. All these things are a result of actually not communicating, and not adjusting what you want to build based on what the engineers tell you is going to be difficult, hard, easy hopefully.

Even The Most Seasoned Product People Have Trouble Estimating User Stories                   

A lot of times even the most seasoned product person and the most seasoned engineers don’t generally have an idea of what’s easy or hard, what’s going to hypothetically take a long time or not, without actually diving into the details. This gets everyone on the same page about that.

 

After that process, sometimes it takes multiple back and forth to get a really good document that outlines a technical research, ideally anyone on the engineering team that could work on this is able to take that and start tasking it. Actually it’s engineering tasks in sort of your task management tool, or whatever the tool engineers are using, Pivotal Tracker for example. Then instead of putting points, that’s the time when engineers are able to put in minutes and hours. I like 15-minute chunks is what I’ve found to be most valuable for my teams as part of this process.

 

Iterate As You Go Along To Avoid Misconceptions And Miscommunications Around User Stories

                   

This is one of the things that’s more of like what we would call a process improvement. When you do process improvement, it takes iterations to get it right. But what I’ve noticed is when the teams are deliberate and the product people really bought in to sort of wanting to do better and same with the engineers, this process completely reduces all that ambiguity and misconceptions, and miscommunications that happen when people are just assuming things about what to build and how long things are going to take. By then, the engineers are very comfortable providing very detailed estimate for user stories.

 

Poornima Vijayashanker:        This is pretty novel, and I know that if I’m hearing this for the first time, I sure as heck am going to be opposed to it because I’m thinking I’ve got to get my whole team to buy in, there’s new things I’ve got to do, all this technical research. I’m not sure I’m going to adopt this in the next week or even month. I think I’m going to have to slowly unveil it. I think our audience is going to have a lot of concerns for the two of us, but I think we should just stop right here.

 

Hiten Shah:         Yeah, I have good news. I’ve heard it all before, so I’d love to hear it from them.

 

Tell Us Your Concerns Or Objections To The EAT Method And Estimating User Stories

 

Poornima Vijayashanker:        Awesome. Well, Hiten and I now want to know what are your concerns with the EAT approach? And doing estimates for user stories in this 15-minute interval with overall hourly estimates for user stories? Let us know what they are in the comments below. That’s it for this week’s episode. Be sure to subscribe at our YouTube channel to receive next week’s episode, where we’re going to dive into these concerns. And hopefully address a lot of the objections that you’re going to get from your teammates and your boss. Ciao for now.

                   

This episode of *Build* is brought to you by our sponsor, Pivotal Tracker.

Estimate User Stories

Estimate User Stories: Why It’s Hard to Provide Accurate Estimates For User Stories Under Popular Product Management Methodologies

Interview with Hiten Shah Founder of Product Habits On Why Popular Product Management Methodologies Provide Inaccurately Estimate User Stories

What’s probably the MOST popular and frustrating question you’ve come across when building a product: “How long do you think it will take to do task X?” People ask you this because they want you to accurately estimate user stories.

But it’s frustrating on so many levels…

First, if our “accurate” estimate is off, there goes our ship date!

Next, we need to give a response that seems “realistic”, i.e. is going to meet the expectations or deadlines set by someone else.

Third, we need to be a fortune teller and anticipate things that come up in the course of completing task X.

Finally, we have to do it the moment we’re asked because we’re expected to know how long any task will take.

I don’t know about you, but despite building and launching a number of software products over the past 14 years, I still struggle with estimating how long a task will take to complete.

There are a number of approaches and methodologies that have sprung up over the years such as Waterfall, Agile and Lean whose goal is to provide a framework that helps engineers, designers, and product managers to estimate user stories: how long something will take to build and ship. However, as you’ve probably experienced, each one of these misses the mark.

In today’s episode we’ll dive into the aftershocks you may experience when it comes to following one of these approaches and providing product estimates.

Next week we’ll tackle an alternate approach that may seem too good to be true…

To help us out, I’ve invited Hiten Shah, who is the founder of a number of software products such as Crazy Egg, Kissmetrics, and his most recent project is called Product Habits.

As you watch the episode you’ll learn the following:

  • Why we suck at estimating even if we’ve been doing it for a while
  • Why we’re surprised each time our product estimates miss the mark
  • What happens if we decide to “pad” our estimates
  • What happens when we get rid of estimating altogether
  • Why a task we think a task is 80% complete but really it’s more like 50% complete

Have you tried one of these approaches? Let us know in the comments below what you experienced when you did.

Listen to the episode on iTunes!

You can listen to this episode of Build on iTunes.

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

Check out these additional resources on estimating stories for your product:


Episode Transcript

Poornima Vijayashanker:        Welcome to *Build*, brought to you by Pivotal Tracker. I’m your host, Poornima Vijayashanker. In each episode of *Build*, innovators and I debunk a number of myths and misconceptions related to building products, companies, and your career in tech. One of the most elusive processes has to be estimating how long a project or a task is going to take. And no matter how many times we do it, we somehow just always miss the mark because things come up. Well, in today’s episode, we’re going to share some of the aftershocks you may experience despite what approach you take when it comes to estimating. In a future episode, we’ll dive into an alternate approach in how your team can adopt and adapt it to fit your needs.

                   

To help us out in this episode, I’ve invited Hiten Shah, who is a founder of many products. His most recent project is called Product Habits. Thanks for joining us today, Hiten.

 

Hiten Shah:           Thanks for having me. Happy to be here.

 

What Happens When We Don’t Accurately Estimate User Stories Or Tasks

 

Poornima Vijayashanker:        Yeah. You and I have been building products for a number of years. We’ve built a lot of different ones. And I know myself being an engineer and a product owner, no matter how many years I put in, I just constantly miss the mark no matter what. I either end up underestimating or overestimating. Let’s dive right in and talk about what are some of the problems that happen when we don’t accurately estimate user stories.

 

Hiten Shah:           Yeah. I think, when we’re building products, we don’t generally think about how long it’s going to take to build them even though we pretend we do. We end up creating a road map with a bunch of timelines and we don’t actually talk amongst the team, because, usually, a product can’t be built by a single person.

If it could have been built by a single person, then you don’t have to worry about it as much because that single person has all the answers. One thing that ends up happening is you end up having surprises that come up that you didn’t think of. You’re thinking about using a certain technology, let’s say such as Twilio or SendGrid or an API and the engineer has never used it before. They get in the weeds of it and they realize it’s going to take longer than they think. And then your estimate is blown up and you’re off. That’s a very common problem.

 

What Causes Scope Creep In Product Management

                   

There’s a few others, too. One other one that I’ve seen people hit continuously is this idea of scope creep. We’re both product people. You happen to be an engineer. I happen to be more a marketer. But we love product and building them and teaching other people how to do it, too.

One of the aspects of that is we might still be learning and doing research as the product is being built, and we all of a sudden have this great idea we want to add. We go in and kind of blow up the whole process and expect that the timeline is not going to change or don’t even think about the timeline and say, “Hey, we’re going to build this new thing on top of the thing we’re doing.” Or, “Can you add this little tweak?” And not realizing how disruptive that is to the process of building the product itself.

 

What Happens When Communication On A Modern Software Team Breaks Down

                   

Another thing that’s very common is that if you aren’t communicating very well with your team, especially the engineers when you decide that you’re going to build something, what ends up happening is the best thing that they can do if you haven’t spent enough time communicating early and often is they end up padding. They end up actually adding a whole day—or worse yet—a week or months to a rough estimate. We call it a rough estimate because it’s rough.

                   

Those are some of the more kind of common problems that come up when you’re building something and trying to get estimates and actually think you have the right great estimates, which is the most common thing. And then all of a sudden all these things happen that you are probably are not conscious to about what kind of problems they cause in terms of being able to ship something on time.

 

Poornima Vijayashanker:        Right. I think two other things I’m curious to hear your take on are large tasks. How do you actually divide them up and then the follow through? You think you’re 80% way there and then you discover actually you just finished 50%.

 

What Causes Scope Creep? Large Tasks That Aren’t Broken Down.

 

Hiten Shah:           Yeah. I see companies creating, even in my own companies, so much work that is not actually broken down enough. You might think that it’s easy to add a button somewhere, so you say, “OK. This is a button.” You think it’s a small task. Maybe you’re not the engineer, because often times you’re the product person, or even if you are the engineer. Then the engineer, whether you decided to do it as an engineer or the product person, you get into the task and all of a sudden you’re like, “I have to add the button.”

There’s all these other things that need to change whether it’s the user interface, or you’re missing a certain component, or what that button does is more complicated than you thought. What ends up happening is this seemingly small task is actually a large task. It’s usually because you haven’t thought through all the things that you need to think through when you add something like that. And I’m talking about a button. Imagine a whole feature. Right? And considering that to be a small task when it really turns into a large one. I think the most common thing I see is that these things you consider small are actually large.

 

What Causes Scope Creep? Thinking That Tasks Are ‘Simple’ Or ‘Small’

                   

Another common thing is not realizing that what you’re asking for is actually a large task. Right. Like adding a messaging feature or things like that. Even a lot of times, I’ve had emails come in to me from people who are customers saying, “You can send me SMS as notifications. It will take one hour using Twilio, another two hours through your database and you’re done.”

 

Poornima Vijayashanker:        Great. Come on down and write it for us.

 

Hiten Shah:           You want to do it for me? I’ll hold you to the three hours, because it’s never as long as people say it is.

 

Poornima Vijayashanker:        Yeah. There’s a lot of different approaches we also like to take when it does come to estimating. Even though we know all these problems, we still continue to take an approach. Right? Let’s dive into the approaches.

 

Well-Intentioned Product Methodologies: Waterfall, Agile, and Lean Startup

 

Hiten Shah:           Yeah. I think one of the most common approaches that is very still operated by in a lot companies is what we call waterfall, which is one task happens after another task, after another task. A lot of times people are waiting on these things. This is actually the reason another process was invented called agile, which I know both of us are familiar with. Where you’re essentially—the way I would describe it is you’re trying to do things much more efficiently by basically having more regular meetings and having, I guess, smaller batches of work.

What ends up happening there is you create this sort of system that works almost on a weekly basis at best. It means that you have a cadence of following up on all the tasks, we call it agile because you’re supposed to be more agile with it and it’s more nimble than waterfall and that’s completely true, but you lose a lot in the process. Those are the two common ways that I’m most familiar with.

                   

Then there’s a third way, which I think is more inspired by things like *Lean Startup*, which again I like to say that we both probably grew up with that so to speak, around us. That’s where you are even more hyper—I would call that more hyper agile than anything else, where you’re adding in the component of much more customer feedback in the process, because agile wasn’t necessarily invented at a time when customer feedback was a popular thing.

 

Poornima Vijayashanker:        Right. What are some of the painful after effects of using agile?

 

How To Estimate User Stories In Agile

 

Hiten Shah:           What ends up happening with agile—one of my favorites, and there’s a lot of tools out there that facilitate this—is the idea of adding points to an agile process. What you end up doing is you’re officiating time. You’re saying that something that would take one to three hours is like one point. Or something that would take three to six hours is two points or three points. And they have all these things like Fibonacci sequences. There’s a lot of fanciness around points, when you’re really trying to understand time not points. The reason that points exist is because—and not that I think this is necessarily bad, it’s better than other methods—but some engineers decided that they wanted a metric that wasn’t time.

 

Poornima Vijayashanker:        Right.

 

Hiten Shah:           They literally said, “It can’t be time, because we cannot estimate user stories.”

Why Software Engineers Created A Complex Measurement For Time

Poornima Vijayashanker:        Because they basically didn’t want somebody to know that something was going to take only 15 minutes or five hours.

 

Hiten Shah:           Exactly. Your minimum there is an hour at best. Often times it’s much more. The thing is every team that I’ve seen implement agile with points in different ways. Their whole buckets around the number of points something takes is all different. What ends up happening is that engineers now feel great because they have a velocity score. And they can talk about how many more points they’re doing every week or how many points they’re doing every week as a total. And that’s really hiding what I would call the truth, which is how long did something actually take.

 

Poornima Vijayashanker:        Yeah. I know one of the alternatives is to just get rid of estimates all together, but you’ve probably experienced what that’s like. Talk about what results when you get rid of estimates.

 

What Happens When You Get Rid of Providing An Estimate For User Stories

 

Hiten Shah:           Sure. If you get tired of agile for whatever reason—and usually this happens because somebody that’s a non-engineer is really not into it, because they don’t understand what a point is even though it has timings and stuff. Then estimates are completely removed, which means points are removed and then there’s just tasks. Then you run into some of the problems from earlier.

Is it a small task? Is it a big task ? What it really boils down to…if you have no ability to understand how long something’s going to take or even how many points, let’s say, then you end up not knowing how to prioritize what you work on. If there’s just 10 tasks and all of a sudden the engineer’s working on one and then you ask the engineer, “Oh. How are you doing?” They’re like, “Oh, it’s going to take another week.” Well, if I had known that task you took was going to take another week or two weeks or whatever, I probably would have told you to work on something different because our customers are waiting for things. Right.

                   

And that tends to be one of the bigger problems that happens, which is this communication breakdown because nothing is estimated, whether it’s points or hours or whatever way people want to do it. And you end up having a massive communication issue and then you have these fiefdoms that get created. You have engineering not against, but against product, against sales, against marketing. And everyone’s just waiting for product, everyone’s just waiting for things to ship so you can make customers happy.

 

What Happens When You Pad Your Estimates

 

Poornima Vijayashanker:        Right. One of the alternatives to both these is to create a buffer. Let’s pad the system so that as an engineer I don’t look bad and as a product person you feel like, oh, OK, there’s some wiggle room. But we know that that has its shortfalls. Let’s talk about those.

 

Hiten Shah:           Yeah. Of course. I think padding is probably one of the worst practices, and you might as well have no estimate user stories or no points or anything like that, because you’re essentially saying that whatever estimate I give you, I don’t know. I don’t know. I’m going to pad it.

Then you get in this padding mentality and then you still end up with the same problem that you actually didn’t have a real estimate, and things are such a moving target that you failed to ship, you failed to actually do proper planning. You end up having a business where you’re actually not getting the product you need in your customers’ hands fast enough so you can actually grow the business. I think padding leads to a whole different set of issues, because what ends up happening in the worst way I can say to you—and I’ve already said it in pretty aggressive ways—is that everyone’s lying to everyone else. That doesn’t help with prioritization or getting anything done either.

 

Poornima Vijayashanker:        Well, thank you for taking the time today to share the shortfalls of these three approaches. I can’t wait til next time when you unveil your approach for estimates.

 

Hiten Shah:           Yeah. Can’t help but share solutions with problems.

 

Poornima Vijayashanker:        Thank you.

 

How Do You Estimate User Stories And Tasks?

                   

Now, Hiten and I want to know, have you tried one of these three approaches? And how have they fell short for you? Let us know in the comments below. And that’s it for this week’s episode. Be sure to subscribe to our YouTube channel to receive the next episode where Hiten is going to dive into his approach for doing estimates. Ciao for now.

                   

This episode of *Build* is brought to you by our sponsor, Pivotal Tracker.

 

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.