A ira do vento e do peito

O vento hoje sopra forte e traz uma sensação de medo. Minha janela frouxa faz barulhos em sinfonia com o vento que rosna, em um vai e vem. Hoje foi um dia assustador. Respiro fundo. Meu corpo parece…

Smartphone

独家优惠奖金 100% 高达 1 BTC + 180 免费旋转




3 simple productivity metrics for every software team

If you want to know how well a business is doing, you usually ask about the revenues and customers. These two metrics are easy to understand for everyone, and they generally give you a good idea of the success of an organization.

But when it comes down to measuring the performance of the team, things can quickly get murky. Velocity, throughput, lead time, cycle time, MTTR, FCR, coverage, churn… There’s no shortage of metrics, but they’re often technical, domain-centric and hard to get out of the box.

As a result, we tend to rely only on tracking sales at the end of the funnel while hoping that productivity stays the same. And it’s only after customers have started to leave us that we look back at the way we work to understand what went wrong.

I want to offer here three simple metrics that every software team can use to measure and improve how they work. It doesn’t matter what tech stack you have, if you’re doing continuous integration or continuous delivery, if you have a monolith or microservices. These metrics are designed to be easy to adopt and share with your team. And by focusing on them, you will be very likely to increase productivity and get happier customers.

I need to start here by making a distinction between the act of deploying to production and the act of releasing to your customers. The code for a feature might be in production, but it’s only released if people can use that feature.

The other benefit is that it reduces the risks of development. Your team will be getting more familiar with your deployment workflows, and you will have a natural drive to start automating your processes. It also means shipping smaller batches of changes to production. Thanks to that you will be less likely to release conflicting changes, and it will be easier to troubleshoot problems.

Finally, getting a rapid development cycle helps accelerate the decision-making process. Your team can reach a consensus much faster if they know that they can iterate within weeks instead of months. But if your product team knows that they’ll have to commit to a version for months, then you’ll start to see them discussing even the most trivial change in color or text for days.

Sometimes teams can ship code often, but the changes going to production have been soaking in a staging environment for several weeks before that. There can be good reasons for that, but I would advocate reducing the time it takes a developer to know how their work is affecting production. Not only will you minimize context-switching for developers but it’s also a great start to foster a better DevOps culture.

The DevOps movement is about recognizing that teams are more efficient when they share the responsibility of the production environment instead of throwing code over the wall to the Ops team. Having a fast cycle time allows you to change the definition of done from “you reached staging” to “your code is in the hands of customers”. It is a subtle but critical difference that helps drive better customer focus and increase the quality of the work.

So far we’ve been focused on increasing the velocity of the team. But we need a control metric to know that we are not sacrificing quality over speed. I’m a big advocate of continuous integration and continuous delivery but it can take time to get a good CI culture. However, there’s still a simple formula that you can use to make sure that you’re moving fast while not breaking things (too much): take the number of bugs that have been caught or reported in production, divide it by the total number of users in your system.

Once you understand what your baseline is you will need to make sure you do not have spikes happening after a release. It’s virtually impossible to ship bug-free code, but you can control that you’re not dropping the quality of your releases significantly. Don’t misunderstand that for me saying that you shouldn’t try to catch bugs before production. Au contraire! Knowing how many bugs get past your team, and having a goal to reduce that number will most likely push you to implement tests to catch regressions early.

You will need to work on all three metrics together to improve your productivity. If you focus on one and forget the others you risk making tradeoffs that are detrimental overall. For instance, you can quickly reduce your bugs/users count by not shipping more features. But there’s a high chance that your product will become stale. Or you can start releasing every day by shipping broken code to your customers — causing people to rapidly abandon your product.

But if you focus on driving all three metrics together, you will automatically have an incentive to improve your workflows, adopt better automation, and get closer to your users. Then, as you get comfortable, you will start bringing in more sophisticated metrics to help you optimize things even more.

Add a comment

Related posts:

An Ode to Financial Freedom

Financial freedom isn’t an objective. It’s a way of life. There are two types of people: those who work for money and those who have there money work for them. We all have choices to make as life…

Return to Prominence

The most common tree in America from which timber (lumber) was harvested prior to 1904 was the American chestnut tree. In 1904, the Chestnut Blight (Cryphonectria parasitica) was introduced in…