Monthly Archives: May 2018

The Cost of Supporting New Features

Everyone wants more features.

It’s like a car that has a toaster and a rocket engine. Sometimes that can totally make sense.

Plenty of people have covered the dangers of new features and I’m not going to talk about that the cost of building new features. Let’s assume that the new features are important for your market. What I want to talk about is the cost of supporting new features. Say you have a development team of ten. What percentage of that team is available for new development and which need to hang back on bug fixes and minor improvements?  At GoReact we’ve been able to maintain a sub-25% bug allocation for the past two years and we’ve really felt free to work on functionality that’s good for new customers and partnerships. But even with 75% of our resources we haven’t churned out 75% new features. Pointy-haired boss is wondering why at this point, right? Let him wonder. You will always have work in a couple of areas and your ability to anticipate and manage those pipelines as the needs ebb and flow is a critical piece to continued success with development projects. For me this means balancing the bugs, new features, internal projects and changes.

Kudos to the Phoenix Project for making this approach available for the general masses. It took me a year to read this book after a friend and coworker recommended it, and I regret that I lost an entire year of this perspective. It’s now required reading for my team and I keep a fresh copy at my desk for any new-comers. The sooner you understand what is really happening and what is really needed to run year after year, the sooner you regain the reigns on your team’s ability to really make the business move.

Those of us who have been around the block a few times know the pitfalls that come with maxing out development on new functionality. Don’t get me wrong here, I’m talking about sustained focus, like years.*  After huge pushes like this you can turn around to find out that your existing customers are leaving you because their product–the one that you built last year–is falling apart. Almost all of the time this is a bad thing, so unless you’re pivoting your product to a new market and pretty much leaving the old one behind, you’d better run some quick calculations.

Now here’s where I get a little fuzzy, so you’ll have to finish these equations out for yourself

Your velocity for new development (Vn) is what’s left over after you subtract velocity wasted on bugs (Vb), spent on changes (Vc) and invested in internal projects (Vi). In my experience the internal projects are usually small and pretty easy to prioritize where they support Sales, Marketing or Support. Hint: one of those is a cost center. That leaves bugs and changes.

This simple little ditty came to me during a daydream I had while in a product meeting. I’ll walk you through it and then we can have a good laugh about it. Your change velocity (which is refactoring, rearchitecting, server and configuration changes) can be calculated by examining the size of your code repository (R), multiplying that by the sum of the features that Marketing (Fm) and your customers (Fc) think you have and then you multiply that by the number of people on your Sales team. Then you divide that by the number of QA (Eq), product (Ep) and developer employees (Ed) on the team.

The equation for bugs is pretty similar but the numerator is your repository size and the number of features you actually have. This is all tongue-in-cheek but either way it seems like these are the only hockey stick graph (exponential growth) the product development team every sees!

Alright in all seriousness, we know that:

  1. Bugs are best mitigated by talented QA team members and a development team absolutely devoted to testing. We’ve saved ourselves a lot of customer heartache by ensuring that our code is the best possible quality and we attribute that as the reason our customers stick with us so long, second only to product-market fit.
  2. Changes increase as the code and features increase. This part is actually pretty simple math, but never ignore it.

We also track the velocity ratio between our top projects and what we call our “tribute” work. The latter for bugs, small UI tweaks, very minor updates and any out-of-band refactoring. We’re holding at about a 3:1 ratio. This means the next four hires are only going to give us three heads to focus on new projects.

Here is the real key: find your ratios and plan for those as you make hiring decisions.

  • Understand how much of your time is spent in each of your types of work
  • Understand what the business really needs in each type of work
  • Understand how the ratios can change as you:
    • Add more features
    • Add more code
    • Refactor for reusability and modularity

* I have to qualify something here. Sometimes teams start to feel some burnout after huge pushes and new features are often the scapegoat. There is a whole area of discussion around helping your team understand why new features are necessary and why bug pushes can be critical for a company’s success. There are also horrible stories about how managers misuse “death marches” and fail to do necessary research and justification for their projects. These big, hard projects can be a harbinger for the death cycle but they can also be just what it takes to succeed.  If you’re in a position to question your company’s approach, I feel very strongly that it’s always on you to get your questions answered and either alleviate your concerns or confirm your suspicion.

I loved Good to Great and although it’s getting dated the principles keep coming up.

Companies that fall into the Doom Loop genuinely want to effect change—but they lack the quiet discipline that produces the Flywheel Effect. Instead, they launch change programs with huge fanfare, hoping to “enlist the troops.” They start down one path, only to change direction. After years of lurching back and forth, these companies discover that they’ve failed to build any sustained momentum. Instead of turning the flywheel, they’ve fallen into a Doom Loop: Disappointing results lead to reaction without understanding, which leads to a new direction—a new leader, a new program—which leads to no momentum, which leads to disappointing results. It’s a steady, downward spiral. Those who have experienced a Doom Loop know how it drains the spirit right out of a company.

 

Eyes wide open. Success is predicted and planned for.