How we use tennis rankings for fixing bugs
refactoring.substack.com
refactoring.substack.com
The implication is that developers are incapable of working on what they are supposed to do by default and introducing a "game" like this is what motivates them to do better.
Do any other job families have to go through similar "break down" and detailed probing of their deliverables?
Software development on average has a lot more complaining about it. I think that's partly because a typical good developer highly values autonomy, and partly because solid software metics are so hard to define.
It's not really 1:1 but it's similarly myopic from management.
I believe metrics are not good or bad per se, it just depends how you use them.
Of course you may use numbers to treat developers like children. But you may use them also to understand problems and find ways to improve, individually or all together as a team.
I don't think the solution is not to measure things at all :)
It's very strange that the author is claiming that it'll encourage getting things done.
Eg: my software has a bug, with a workaround that only affects 20% of my clients, once a month. This bug costs $20 each occurrence. So call this a $400/mo bug.
But we've got other bugs are $4000/mo bugs. Or $6k OTC bugs.
And we know what our dev time costs.
So, stop gaming devs against a broken guessing game.
Use real numbers, if you care about your code. This bug costs $400/mo to exist - spend $4000 of your dev time to fix it.
It's not: can you fix in time-guess for points - that depreciate over time (reducing motivation)
It should be: managers will leave you alone for 16h so you can work this one problem to death. Devs can then finish their tasks and gain confidence and pride.
Gaming devs against each other is not a good long term strategy. Measure the priority and allocate resources from that.
Knowing how much a bug costs is not always trivial.
Guessing how long to fix, or how many "points" a bug will take is complete BS next to real-world values.
Why make devs guess at the future when you could have business manages measure the present?
I never stated that client time was the thing to measure. I'm saying (now repeating) that PRESENT COST is a better basis than FUTURE TIME GUESS.
The whole problem is management wants to maximize dev-time so they try to cram bugs to make your time full - based on a guess. It's ass backwards.
Measure the problem then budget resources to fix.
The difficulty is that "how long to fix" literally has to be a guess. Even with up front investment to investigate the nature of the bug and how to go about fixing it, the end result is still a guess, just a more educated guess.
Unless you're exceptionally good at predicting the future. We should have a sidebar chat if this applies to you.
In practice it's impossible to get accurate ROI estimates for large chunks of the work you do. So being honest about that and using an approximation often doesn't cost you any appreciable accuracy -- and you will definitely spend less time trying to figure out how to precisely cost your bugs.
Don't get me wrong, I'm in favour of using ROI as a lens for prioritizing bugs, I've just never seen anyone make a credible estimate that's more accurate than the nearest order-of-magnitude.
I'm sure this is much easier the bigger you get; Google can estimate how many clicks are lost due to a bug, and clicks are of known value, so you can make a case for this bug being worth $Xm. But for startups I think this is unfeasible because you're working with such small sample sizes.
You DO need to measure the teams output and the way to do that is to measure two things at once. You need to measure the deployment frequency AND the quality of the application at the same time. Report your deployment frequency and uptime together in one page if you have to. Evaluate teams based on team output. Evaluate individuals based on known criteria - the least of which will be coding.
It might become a nightmare, with people burning out over this, or it might play out as a healthy way of tracking metrics on people's work to find ways of improving over time.
People should feel safe about the fact that they are not personally judged over this (or any metric about their work), that we are in this together and we use "points" to understand issues and how to improve together
I'm sure it can be helpful to have some kind of feedback for productivity and output but it could also be seen as a bit patronizing and or paternalistic if you're not careful.
If someone at my company tried to pull shit like this and they weren’t shut down immediately, then I would promptly start looking for my next job.
He also explains that the developers pick their own maintenance tasks for the week, so it’s an additional way to make people accountable for having decent estimates.
When I look at it through that lens I don’t find it nearly as off putting.
Do your developers maybe have too much autonomy, or lack an appreciation for the way bugs impact users/customers?
I've never worked somewhere that we didn't prioritise the backlog, with input from the Product team. You didn't just get to skip fixing bugs because you didn't think it was fun or interesting. Fixing bugs is part of professional engineering. And, lucky us, they're not actually always boring.
Perhaps I missed something from the rest of the blog post, but it seems like a lot of this system could have been unnecessary if the backlog was properly prioritised and/or management made sure developers were aware that bugs have to be fixed. If you have to assign bug tickets to people because they're not getting voluntarily chosen, then you do that.
Edit: I agree with the point of the section that I took my quote from, which is that you need to have retrospectives/team meetings, work on bottlenecks and processes, etc... But none of those are an excuse for not fixing bugs, they're just hindrances.
We tried to prioritize the backlog of small tasks against the rest of regular Sprint tasks, but we couldn't make it work very well (tried to write it in the post)
It's not that people skipped bugs entirely, but we found more success by setting up a fixed time every week
At the end the whole process is exactly what you said: a system to make sure the backlog is properly prioritized and managed, with developers assigning bugs to themselves and telling the rest of the company when they will address them
The choice of 1. as not just a goal, but the number one goal, is a big red flag for me. "As much work as possible" means everyone is incentivized to pick the lowest hanging fruit and simply bang out as many of them as possible. This means any difficult issues simply get postponed as long as they possibly can be, and when someone does pick them up, they won't be happy because their "ranking" will likely suffer. Difficult problems can often be the ones you should address first instead, since they can have larger consequences on the rest of your codebase.
If people are willing to give only pairwise comparisons of options ("I'd rather do project B instead of A, and C instead of D"), is there a handy algorithm that produces from this a ranked list? You encounter this a lot where people don't know enough to give a prioritization of a full set, but know their little corner of preferences.
We also didn't couple strong incentives (e.g. money) with this process, we always kept it at a "fun" level. It's been more than enough to keep people engaged
I'm in the same boat as other posters, I am a hard no on this idea and would never subject my employees to it. When you build employee-facing metrics like this, you end up judging your employees by those metrics. Build smarter metrics.
ETA: "your company culture" is dictated by things like this. So the incentive it creates in your culture is to work longer hours so you can get to the top. This is literally building company culture, and trying to say you can avoid the negative incentive by having a better culture is missing the point.
Like others have said, I think the line between this being healthy and useful, and this becoming a nightmare is fine, and it gets probably harder the bigger the company is.
Thank you for your feedback anyway!
I think you need to be aware and selective in who "we" is here. Do you mean management-"we", peer-"we", personal-"I"? The post you're replying to did a great job of calling out that all of these (and more) could have very different viewpoints on this.
---
I completely agree with the other responders.
At the BARE minimum, you could have changed this "leaderboard" to display only the top three, and coded the app in a way as to hide the remaining developers, as a way of celebrating the "best" developers this week, instead of ranking everyone on the team (and thereby punishing those on the bottom).
Your dev team is not a sales team.
If its your management team deciding task effort level, then you have compounding problems because they do not understand engineering impact. If it is your engineering team choosing engineering effort for each task, you still have created a perverse incentive.
If I implemented this sort of ranking on my team, BY FAR my best developers would consistently be on the bottom of the list. And this list, would in turn, motivate them to stop working on the hard ambiguous problems I need them to solve, and motivate them to steal as many items as possible that my junior engineers could otherwise have accomplished.
Even if my best engineers stuck to high-effort tasks (which they now are motivated not to do), not all high effort tasks are the same difficulty, and they now have a very strong incentive to only work on the easiest tasks in each difficulty level.
If I was on your development team, the introduction of this leadership board would be a Huge, Neon sign to me that code quality and engineering decision making no longer matters, all that matters for job security is writing as much as possible, as quickly as possible.
What's that? My poorly thought out code will result in numerous more bugs than if I had actually put thought into it to begin with? Well guess what? I'm the developer who best knows how to fix those bugs, so the more bugs I create now, the more I'll be able to fix next sprint too! Then I'll still be on top of the leaderboard!
Sure, you might have some internal processes to prevent this, but those are now on a timeline to deprecation as this leadership board comes to define your team culture. And even if your engineering team's internal culture is strong enough to overcome this blight, the game will simply become either how to best ignore this leadership board without upsetting management, or alternatively how to most act as described in the previous paragraph without getting caught.
This reeks of project management applied to engineering, without understanding the nuances of engineering.
It's just for "maintenance" tasks which are limited to 8-12 hours per week. Developers give a task (in a weekly meeting) an effort of low (2hrs), medium (4), or high (8) and choose which tasks they want to get done in the week. If a developer is knocking out 3+ high effort tasks in a week there is 1) a problem with estimating effort and/or 2) a problem with the developer spending way too much time on maintenance tasks. Either one can be addressed.
I am not sure if I would try these ideas out for myself, but I think most of the criticisms here on HN are addressed in the full blog series.
The problem will come when some bright spark decides this should be linked to compensation, and then the metric will be gamed to death and become a rope to hang people with