6 lessons learned about technical debts management in Silicon Valley

This is how I feel everytime I access my Github account

I went to Silicon Valley last month to attend Women in Product Conference and also, learn with tech companies how to solve some problems we're currently facing in our product team.

One of the challenges I was mainly interested in was "how to strike the right balance between product launches and technical debts management"

But first. What does technical debt mean?

Tech Debt happens when you build something fast and not for scale

"Code issues may be related to architecture, structure, duplication, test coverage, comments and documentation, potential bugs, complexity, code smells, coding practices and style. All these types of issues incur technical debt because they have a negative impact on productivity." Technical Debt Concept, Agile Alliance

A tech debt could be an outdated technology or even breaking a monolith application into microservices. Below you will find the things I learned by talking with product people from eBay, LiveRamp, Marketo, Intuit, Blend and Salesforce.

TL,DR

  1. There is no such thing like stop launching new features for one year to reduce the tech debt
  2. Separate a period to manage technical debts during your quarter/year (so it won’t get worse!)

3. Top Down vision about the importance to manage tech debts

4. Take a time to review the technical debts, and prioritize them

5. Build a great outage management with monitors and decent alerts

6. Before removing a feature make sure your users will have alternatives


1. There is no such thing like stop launching new features for one year to reduce the tech debts

Wake up. This is real world and in a real world your company needs to keep improving the product by launching features AND removing technical debts.

This is actually a war-room picture from Google

Why? Because if they stop making new features or improving them they will lose market share for the competition.

In worst case scenarios companies like eBay, Yahoo and LiveRamp had teams who worked exclusively on killing critical bugs for 3–4 weeks in a war-room mode.

2. Separate a period to manage technical debts during your quarter/year (so it won't get worse!)

You can use the rule 80/20: 80% of the time launching new features and 20% of the time removing debts or even, establish that you will remove debts during 3 weeks of the quarter. Every company dedicate at least 20% of the time removing technical debts.

It is super important to be committed to pay your technical debts, no matter if you are a Lannister or not

The most important thing here is to keep a period established for manage the debts so you won't need to stop your team later with critical problems.

3. Top Down vision about the importance to manage tech debts

"How much money does investing on tech debts will bring to me?"

I was talking with Shilpa Vir, Group Product Manager at eBay and she told me that sometimes the General Managers don't understand why it is important to invest time on technical debts. She said:

"It is not about the money you can make, it is about the money you won't lose"

That is why CTO and CPO have an essential role on prioritizing the debts. In most of the cases, they are the people who tell the product team that bugs and refactoring need to be prioritized and why.

4. Take a time to review the technical debts, and prioritize them

A great moment for this is when you are reviewing your Roadmap. Nisha Victor-Kher, Director of Product Management at Intuit recommend including technical debts into Roadmaps to view all problems at once.

5. Build a great outage management with monitors and decent alerts

It could take months but it is pretty important to monitor all your critical operations and also build decent alerts to be prepared when something goes wrong.

Here in my company we have some dashboards spread all over the floor:

We still need to make some improvements about the operations we are tracking

Tips on dealing with outages:

  • Have a monitor and decent alerts when an outage happens!
  • Make sure that you are in proper effort for your manager — inform immediately specific folks
  • Communicate what happened (the problem) and what is going to happen (consequences and solution) to your users

6. Before removing a feature make sure your users will have alternatives

It is crazy how happy Product Managers are when it comes to remove features. But when you ask them about how to make it. Well, it gets like:

Adele crying. It breaks my heart.

This is a challenge I want to face in my career as Product Manager: killing a feature. But I need to confess that I thought it would be easier. It is something pretty intense and here is the steps you should take:

  • Identify who are the people using the feature you want to remove
  • Make sure to find an alternative for your users

If your company has a Customer Success area, talk with them to negotiate what it could be done in each one of the scenarios. Look for things that can be done inside the product (maybe combining 2 features) and outside the product (maybe integrating with other apps, or offering a partner solution). Removing a feature at Salesforce could take more than one year due to all this work.

  • The most important thing: tell people WHY you are killing this feature
Here is an example from Google Maps ;)

You can write the reasons through an email, an article in the Help Center or even, you can make a webinar explaining how it will work right now (without the feature you removed)


The thing is: Product Manager, Developer, Quality Analyst, Technical Leader, Designer or CEO, you should care (more) about technical debts on your daily basis and not only when things get on fire.

If you have any tips on managing technical debts, please let me know in the comments 💌