Ask HN: How do you balance support and sprint tickets?

126 points by throwawayops123 ↗ HN
Our DevOps/SRE team has been trying to do Scrum for over a year but the sprints are always derailed by support work.

They've tried to add support tickets to the sprint as they come in, but that changes the sprint scope and renders the "velocity" metrics useless.

They've tried to exclude support tickets from the sprint and keep the scope very small. Some weeks it works, other weeks they overdeliver by a lot (because there were fewer support tickets and they got a lot of tickets from the backlog).

I'm thinking Scrum is useless for that team but management insists all engineering teams must use scrum.

Do you have any advice for managing tasks in a team that has support/adhoc and project tickets?

121 comments

[ 5.0 ms ] story [ 205 ms ] thread
I'm a dev on an MLOps team, we also do Scrum like you. We keep support tickets out of the sprint and also have a weekly rotation for support work. It's far from perfect, some weeks are just plain rotten and someone has to go off their ticket work to help. But it has worked well enough for us in the year since we introduced it.
That's how I've seen it done in a few places:

* The team does short sprints.

* One lucky soul handles all support requests for the duration of the sprint, having no officially planned work for the sprint.

The staff take it in turns to be the "support-person", and if they have a lot of tickets they work a lot. If they have few then they might sneakily do some work, or help colleagues with their own stories/tickets.

> * The team does short sprints.

How short is short?

By value. Don't overthink it, don't arbitrarily call them 'bugs', 'support', 'features' etc.

Just do the most valuable thing first. Ship. Repeat.

You triage which will get done and your velocity goes down if you have a lot of support tickets. This will make your velocity a meaningful metric over time, reflecting your rate of production toward new features.

Orrrr.....you assign points to the support work as well, your team hits their 50 points every week or else they get hit over the head by management as to why they weren't on track.

It sounds like OP is doing this. The point would be that even doing that, you're not making progress on team goals. (Your goals are instead being set by the interrupting tickets.) There might be 200 pts/wk or whatever, but it isn't going to be going into the project your PM is wanting it to.
We designate a support person every week (like a rotating position) and don't count with their dedication (or just a small percentage) for the sprint.

This also helps avoiding constant interruptions or context switching to the whole team that are now handled by the designated person of the week.

What's really great about this system if you're consistently seeing more support work than the designated support person can handle it's a highly legible signal to management that support work for your team requires >1 full time engineer. This makes it significantly easier to advocate for paying down tech debt or creating self-work workflows for people filing tickets.

As an added bonus, this incentivizes better documentation of your system via runbooks (I'd rather point someone at a doc than walk them through a problem when it's not my week).

The breakdown of this though is that sometimes management thinks "oh all (internal, I assume?) support is solved with the cost of only 1 headcount" and then they just let that rotating week become more and more hellish. Then never prioritize anything to make it better because the maximum "impact" of that work is taking the footprint from "1 eng per week" to "1 eng per week" (zero perceived "real" impact. And if you provide alternate metrics to correctly show the load, they'll just say, well clearly it still fits into 1 eng week, good job, keep it up).

And eventually employees burn out and start mailing in that week and now suddenly nobody cares except the other teams having trouble getting support, but apparently that is a diffuse enough complaint that nothing ever came of it.

Not that I speak from experience...

The problem here is bad management. If it wasn't for this failure mode they would find another way to mess people up. No process works well under bad management, except perhaps some variant of anarchy/direct democracy.
I'm not sure I understand - you'd have a constantly growing backlog of support tickets and the time for things to be resolved would grow dramatically. More and more people internally would be complaining nothing was getting sorted.
Under bad management the growing backlog is translated into ever more overtime and hurried low-quality band-aids.
All systems fail in the face of sufficiently bad management, at which point your only recourse it to convince someone higher up the chain that there's a problem. Legibility can make convincing people easier, but nothing is fool proof.
How many people in your team?
We do the same in a 6 member team
We do the same with a 3-person team. The on-call person spends one week of the two-week sprint focused on support, and usually picks up a few smaller tasks/backlog items to fill in the time if it's a slow support week.

That works out to leaving one team member a full sprint for a deeper heads-down task.

To alleviate some of the extra load on the on-call rotation, we dedicated a decent portion of our sprints to automation for a few quarters, which allowed us to reduce some of the recurring manual tasks and ease the load on the on-call role. Now the on-call person will usually see an average 15hrs of support on the regular (of a 40hr week), down from damn near 35hrs.

That is to say there was about 20hrs of automatable tasks that had been shouldered by one team member for years. When that person left the tasks were placed onto the on-call rotation as a duties as a way to ensure every team member became familiar with these tasks instead of being siloed into a single person (there was a scramble to learn those tasks as this person was offboarded, and a rough couple of months as we skilled up on these).

Do you track the designated support person's work? If so, what does that look like?
Not OP, but my team uses tickets to track support work. We use JIRA. We have a service project (SWS) and a software project (SWE). If someone is working on support, you'll see their names on SWS tickets.
That requires (mostly) homogeneous knowledge of everyone in the team though
We do the same but count the person's availability at 100%, instead we just create and story point the support ticket as usually taking more or less half the sprint (our support time is half the time of the sprint).
DevOps lead here; technically we have 2 week sprints, but we use kanban and basically add support tickets for each item that the team needs to work on during the sprint. This means that sometimes our "burndown" is more of a level line, but when that happens my manager understands, and we either determine the type of work that would reduce it or discuss adding more capacity. For tracking types of support tickets that come in, we try to determine which ones we can automate or heal completely so that those types of tickets dry up. Those items get roadmapped and worked down... eventually. It works OK, not perfect but I haven't found a better method so far, and everyone's happy with my team's work.
Is it an option not to introduce support tickets into sprints?
Most doctor's offices set aside x% of time for scheduled visits and y% of time for acute visits each day.

We do it similarly. We generally reserve 20% of our time for production support and 80% of time for new development. If we have fewer production issues that week, we get more new development done. If we have more production issues that week, get get less new development done.

We have one generic production issue story where we put small things and we'll create a fully fleshed out story for larger production issues.

If we have a trend of having too many production issues then we raise that as an issue itself and get to the bottom of what is causing it.

> I'm thinking Scrum is useless for that team but management insists all engineering teams must use scrum.

All 'support' created tickets go into the backlog then, earliest they can possibly be addressed is next sprint. (Assuming you want the rule to change/it be someone else's problem/proposed solution.)

As a bit of an aside, I'm a bit curious about your role/the org structure that you seem to have oversight over SRE as well as other teams' working processes, but also have 'management' imposing roughly what they look like from above?

Don't do Scrum when your work priorities changes more often than your sprint length. If they want to do Agile, do Kanban. Or Scrumban. Something where the process fully supports popping a new ticket to the top of the priority stack.

If there is any one thing teams new to Agile need to learn, it is that Scrum is just one choice among many. And nowhere near as universally useful as people seem to believe.

Or do scrum with one week sprints. If the priorities are changing daily that needs to reorganize the entire team. Maybe its not the time to do feature work.
Scrum with 1 week sprints mean you spend a considerable amount of time in useless meetings (retro, planning 1 + 2, and so on).
Not necessarily, those meetings should be much shorter if you only plan for one week.
Scrum usually arrives the same way grain arrives in the stomachs of fois gras ducks, so unfortunately I suspect the team has no choice in the matter.
This. Scrum is not adequate for this.

What we used to do (while growing the SRE team from ~8 to 30) was having dedicated teams on specific projects. Each had their own scheduling system as they saw fit. AND a weekly rotating support duty which took precedence: teams had to allocate someone from their own capacity to this duty.

The importance was to adequately rotate everyone, to pair a senior and a junior in the support team, and to be available to them to debrief, or to reallocate high priority/criticity tasks to more expert members, if required.

Also, if the support queue was empty, they could do maintenance/exploratory work, but NOT their own team project work.

Nice strategy. I used to be in a large DevOps team and similar startegy was the eventually adopted.
Your point cannot be overstated, I find scrum great for new product work, but pointless for maintenance that comes in ticket by ticket.

HOWEVER; The counterpoint would be if you are doing new product work and your priorities are changing faster than a week or two you have either an exceptional situation or this should be a canary that you have something really wrong with your priority directions.

In the latter case scrum is being a useful tool in bringing this to your attention.

I’ve always found that Scrum is suited for 2 environments only:

1. Pre-customer development

2. Contract development shops where you bill by the sprint

I’ve never seen good outcomes in a live product environment.

Usually the answer is Kanban for smaller teams or Scaled Agile for larger teams IMO…but the situation the OP is dealing with looks like they are prioritizing preventative work to stop these support tickets from having to come in in the first place.

Prevention measures for unplanned work are critical.

>> or Scaled Agile for larger teams IMO

I STRONGLY disagree with this, conceptually, logically and in practice. Scaled agile approaches make you plan your sprints way further in advance and account for emerging (or sustainment) work with the use of reserving a percentage of capacity. This works about as well as riding out a run of bad luck at the casino while you wait for the odds to balance out. Scaling "up" the existing practices to a department or company level will not help an interrupt-driven team. Scaled agile doesn't work for pure development teams; i'ts even less likely to work for an SRE team.

Again, this will depend on the size of the team. Planning on a longer time window while giving dev teams a time to coordinate, get everybody on the same page about what you're doing and why...works. It works extremely well.

It gets the plan in front of everybody so you can discuss the tradeoffs and risks too. There's an entire open session as part of it called R.O.A.M. where risks to the ability to deliver the plan are discussed, not just with the tech people but with the business folks too.

That portion of PI planning is where you call out things that could break the plan. Emerging (or sustainment) work is one of those risks and you have to call it out, then once it's called out you have to discuss what the organization is going to do to prevent it. Capacity isn't going to just spring forth out of nowhere, so what are we pushing off if there's more of it than expected? Do we need to prioritize preventative work to make sure we don't have problems? Do we need some type of infrastructure, monitoring system or automation in our devops process?

Everywhere I've been, the PI Planning process has led to less "we have to do this now" and more "we need to see if this can be included in the next PI", which creates significantly less disruptions to the development team focus. The only remaining interruptions should be production issues (preventable) or significant market shifts (rare).

It doesn't work when people try to adhere to that plan so rigidly that it becomes a waterfall system.

LeSS beats Scaled Agile hands down IMHO
Reading about LeSS, it looks like it's basically the same thing? As long as you're doing PI Planning you're a step above virtually every other org out there. It looks like it could be a good fit for some groups I know who aren't quite big enough for SAFe though, while still drilling in the same core ideas.

IMO the biggest issue with Scaled Agile always comes down to leadership IMO. It's not supposed to be rigid. It's supposed to be adapted to your organization and put the plans in the hands of the developers.

The horror stories about SAFe that I've seen on here usually end up with me asking a few followup questions and those questions make it clear that something was terribly wrong. One guy on here told me they did PI Planning for 2 full weeks, which is abject insanity.

"Scaled Agile" is another way of saying Waterfall but allowing you to expense 20% of your team overhead for scrum masters.
When I was on a support team that was part of a development team, the support people always used Kanban. We were fortunate that management never had a problem with this. We still had daily standups, just to keep in touch with each other, but we did no sprints.
I've never seen the velocity metrics be not useless, so I'd sacrifice those. Or people need to realize that yes, a team that also does support will have widely varying progress towards project goals depending on support work load, that's not a problem. Who really cares if a team "overdelivers" because they got less interruptions than expected?
Just do kanban. It's made for this.

> management insists all engineering teams must use scrum.

They aren't doing scrum. At the very least, just "do scrum" externally and internally do kanban. Management is clearly dumb enough to believe it.

Every sprint we have 1 person in rotation for bug duty. It works quite well. Overtime role takes some refactoring and tech depth as part of bug duty.

I have a blog post on the subject a while back: https://blog.rstankov.com/bug-duty-process/

I think this is what you are saying but to reword it for how we do it.

We have one "on duty" person each week/half-week/two-weeks. Their priorities are:

1. Support tickets.

2. Whatever they want (usually code cleanup).

They aren't expected to get any project work done. We also track the amount of time that they are spending on support tickets. If it is getting high we move more cleanup tasks into the regular project work cycle.

If you have oncall you can often co-locate these as well (oncall is priority 0).

The main risk is that if your support load gets high than there is no room for cleanup/automation which can become a feedback loop causing more support load. I haven't seen a good solution for this other than keeping track of the load and scheduling proper "project work" to address it when it gets too high.

The only sane approach. If someone is on support they also work to lessen the support load permanently. Recurring issues with no root cause analysis and fixes are deadly to a team.
Yes. Hiding errors leads to a lot of issues down the way.

This is part of the process. If an issue requires deeper work, it moves a proper task in a sprint.

We try to fix the easiest issues first so the deeper problems bubble up.

How the person in the support role knows that an issue is deeper? It comes from experience. Thus everyone does 1~2 week of support.

Go through the motions of Scrum and just reduce the amount of stuff in the sprint to compensate for the lack of work. If they are looking for points consistency, fiddle with the estimates to get the right numbers.

Scrum is an accounting tool. Apply all the shenanigans that one might find in financial reports to it.

At my first job, we just edited estimates after the fact to hit the velocity target management wanted.

Split the team and have a few members dedicated to support tickets on a rotating basis. Or just abandon Scrum sprint planning cycles and run Kanban. You may have to escalate the issue with management. In most organizations if you go up high enough you'll eventually find someone willing to make an exception based on proper justification.
> Some weeks it works, other weeks they overdeliver by a lot (because there were fewer support tickets and they got a lot of tickets from the backlog).

OK, this is a problem because why? Some weeks it works, and other weeks they accomplish more than expected... and this is a problem why??

Like, what's the actual problem here, if good progress is being made on features and bugfixes?

My guess it's a problem if management is trying to use "scrum" to treat developers like sweatshop workers who they wring the most possible production out of. How can we know what the most possible production is, if they have a different amount of time to work on it every week?!?

We could come up with different arithmetic ways to solve this. Assign "points" to support tickets too (even after the fact, how much time they actually took?) to include them in your "velocity". Or keep track of how much time is being spent on support to, to "normalize" the velocity of the other stuff accordingly (different way of doing the same thing).

But personally I do not really want to help companies become better at treating developers like sweatshop workers to wring maximal productivity out of. I'd rather realign to "agile" it was originally intended, to empower developers to bring value, not to treat them as commodified interchangeable widgets to exploit and burn out.

but, I mean, exploitive companies gonna company I guess.

> I'm thinking Scrum is useless for that team but management insists all engineering teams must use scrum.

Which they also insist means relying on those "velocity" metrics? Can you do "scrum" without "velocity" at all?

> OK, this is a problem because why? Some weeks it works, and other weeks they accomplish more than expected... and this is a problem why??

OP didn't mention it but it doesn't take much effort to imagine many weeks will have lower velocity because of influx of support tickets. Management focused on metrics won't be much happy.

I'm in a similar boat. Furthermore, people tend to overlook that many new issues -> lots of routing effort (e.g. reading the ticket to see what team it best fits and then which person) which further cripples mid- to low-level management.
Support Tickets are like fires. Typically, there are folk waiting around in case of fire to render aid.

Rotate who the "fireman" is on the team, they are out of Sprint and just fix. Spreads internal knowledge around too.

TLDR: support should absolutely tank velocity, make the org feel your pain. If they want better velocity they need to invest in shoring up issues.

One thing to consider… support tanking your velocity is a feature, not a bug.

Sounds like you need investment in support tooling etc that can lessen that burden. Velocity will improve when support is less burdensome.

This is obviously not one-size-fits-all advice but worked well for a previous org I was at. If the sprint work will have a side effect of fixing support or support is so intense it requires a majority of the team you HAVE to fix that first regardless if sprint/scrum/kanban, etc. if velocity was super high for a few sprints but regressions/bugs were introduced they could impact future velocity, so those high velocity sprints weren’t as productive as you thought. It’s never just one number.

The org I worked at with the absolute worst support/sprint structure also had the only code base I considered “unsalvageable”. They refused to do anything to improve existing processes and spent half of every team’s time on the same support issues on an endless loop. They never had the measurements needed to actually figure out where to improve clients experiences.

(comment deleted)
Do you do any type of Root Cause Analysis tracking?

If that many tickets are coming in and disrupting everything, I’d be using that to prioritize addressing the causes so the disruptions stop.

If you’ve ever read The Phoenix Project, this is well illustrated when they talk about prioritizing preventative measures for “unplanned work” and they map out in detail why it’s such a huge problem.

(comment deleted)
To deal with this we have multiple devsupport devs that sit with support and handle urgent issues, anything larger/multi-day goes into the sprint queue/backlog to be triaged for the next sprint.
We have designated support person which changes weekly. He is the first line of contact in our team and reacts to support tickets. Of course he can't resolve them all by himself but he delegates them further if help is needed. He doesn't even try to do any sprint tickets. This arrangement has so far worked quite well.
Isn't the classic answer to take urgent tickets and allow that to show up in decreased velocity?

I have never worked anywhere, including using scrum, where I could avoid incoming issues for 2 weeks at a time.

At the end of the day, better systems, better code, less technical debt means less support. Issues with previous work might indicate a false velocity of the past, releasing low quality.

There are long term maintenance exceptions that happen to all code bases, that have nothing to do with quality, like supporting new platforms or unpredictable platform changes, those can go in as backlog tasks.

The real question is what you are using "velocity" for? Is it to help get a feel for work you can complete, or is it a metric to be judged by management to evaluate you?

> Isn't the classic answer to take urgent tickets and allow that to show up in decreased velocity?

It should, but I've been surprised by some companies interpretation of "product velocity" to just mean "how many tickets does each developer complete per 'sprint'".

That's not product velocity, that's just some micromanagement nonsense so they can measure/push devs. No wonder many devs hate "agile" like this.