What I tell people new to on-call
ntietz.com
ntietz.com
On-call is you agreeing to give your time, your weekends, your freedom to your work. It's beyond the standard 8-5. Don't trade that for free.
I do not like on call. I don’t actually mind the work but I don’t like the entitlement companies have towards it.
I feel like unionization would be a better route to this sort of benefit than trying to get a legislature to pass a bill for a group of people that are already very privileged.
For the former, I’m certainly not going to call you dudette. And it seems widely accepted that dude is gender neutral.
As for bro … I can understand why it bother girls, but I always remember my close friend who says bro so much he frequently uses it even with his wife!!
Needless to say I declined and left soon after.
I still remember getting paged when I was explicitly NOT on the pagerduty rotation at my tenth anniversary dinner with my wife. Ruined the whole day. And I wasn't making particularly good money.
If you aren't free to do what you want, you should be getting paid like you're at work.
You should be paid 2x - 3x when you're working overtime.
Some (many?) employers make this difficult, and you should try to leave them.
What I mean to imply is that it is an issue that is naturally fixed by improved development, and that fixing does require development skill, but the organization can hamstring their developers to prevent them fixing the issue even if they could.
Incidents happen as code changes. Even once you fix it, the changing nature of the code can introduce more issues
If it is unacceptable to cause that downtime, you write code that makes the downtime much less likely
My random guess is that the "downtime" is fairly proportional to the scale difference with megas probably taking the edge.
There are so many systems held together with baling wire it was rare to go a day without a significant outage, usually multiple. Everyone who was remotely knowledgeable about tech was basically a firefighter.
I think my sweet spot is somewhere between once a week and once a month, spread across the whole team.
Also, for secondary/shadow on-calls, you will need to remind the primary to loop you in, as they will be busy.
Try not to be on-call too often, but also try not to be on-call too little. You need exposure to the latest types of events happening and don't want to get rusty. Once every 1.5 months is a good balance for me.
My current company has a rotating week of oncall. Happens every 2 months or so. Oncall gets paged first and is expected to be available 24/7. But if they escalate further, whichever dev or manager it gets escalated to is expected to be available 24/7
By 24/7, I mean, they don't tell you that you're allowed to sleep. They just fired a manager for not being willing to wake up in the middle of the night for pages
Edit: also a bunch of people on our team think it's normal to ping and ask for help on non oncall stuff outside of business hours (like 7 or 8)
Edit 2: I forgot to add, we are not paid anything extra for oncall (or any additional work time outside of business hours). It's salaried
Also generally if you’re ever asking if something is abusive, the answer is usually yes.
If the oncall is too heavy, you should have split oncalls for day and night.
> But if they escalate further, whichever dev or manager it gets escalated to is expected to be available 24/7
This doesn't sound right, since that effectively means everyone is always oncall. You should clarify what the policy actually entails.
My philosophy is that if an employer is infringing on your personal life, they need to compensate you for that.
As a senior+ IC I am in a 6 week rotation as the escalation path for 6 teams. Any page goes to the team's on-call + whoever is on-call for escalation that week.
Every few months I will be paged when I am not on-call as a SME, and those responses are optional, but frowned on if you miss and don't have a good excuse.
This is not official policy, but it's been the in-practice unwritten stance of every manager in every company I've worked at.
But… doesn’t that mean that everybody is technically on call? There the main person answering the pager, but if the expectation is that they can pull in reinforcements as needed, that means everyone should be ready to get pulled in to action at all times.
On call pretty much just comes with the job, and always has.
If you don't remember the invention of "devops" that's especially true . . .
I don't know if I'll ever see things like devops and agile die the horrible deaths that they deserve - but I do wish engineers would at least learn to think for themselves and not drink so freely of the kool-aid that CEOs peddle.
Management always takes good ideas and extracts the absolute worst stuff from them, if they don’t just make up shit on the fly that wasn’t even a part of the original good ideas.
(Edit: grammar)
Maybe for you but not for everyone and I bet outside Silicon Valley startup land and certain industries it is probably less common than you think. I work in government which is basically 8-5 local business hours. Production issues can take days, weeks, months to fix and deploy depending on priorities. Most of my dev friends have never had on call roles either. Plenty of companies have enough staff to have around the clock coverage. Just trying to add an additional perspective.
Always has is a bold assertion. I've worked for companies which produced consumer level software on an annual cycle that was pressed to physical CDs, and there was not even a concept of on-call. Bugs that got reported went from customer support, to QC to corroborate, and finally triaged out to the R&D department where they would be fixed within normal work hours.
This idea of 100% 24/7 on-call to fight fires in an industry where the vast majority of engineers are working for insurance companies, social media, e-commerce, etc. This ain't life and death people, let's get some perspective.
This can also be generalized "produced software on a release schedule".
I would assume that the vast majority of software engineers are not working on supporting the operation of online/SaaS services, but rather develop products.
Reinforcements may get pulled off planned work, but only as a last resort, and only during business hours. Unless the situation would kill the business and the triage isn't enough.
Strategies like automated disaster recovery processes (yet with manual initiation), coupled with rotating who walks the DR plan during the periodic practice, can mitigate the absolute worst case scenario.
I guess that's a model. But every runbook I've seen has a clear call to escalate if the conditions don't seem to match.
Sometimes the runbook will have procedures to disable things until the business day, in which case you don't need to page anybody, but the service will be degraded until the responsible party can manage it. If the procedure doesn't work, someone will get paged.
IMHO, the most important part of a runbook is the escalation process. And probably the most important meta task of an on-call rotation is tracking escalations and ensuring they're dealt with.
Norms depend on your business, but if you get a lot of escalations outside of business hours, you either need to fix your stuff so it doesn't need escalation, or you need to staff your stuff so escalation is to people who are in their business hours.
Edit: I'll also add that reducing incident frequency is good, but when it drops from once a quarter to once a year, new hires won't get osmositic training anymore. When it drops from once a year to once every other year, team muscle memory will have atrophied. It's worth doing some periodic training/refreshing when things are running well.
Also, if there's a bottleneck where an oncall needs to rely on a teammate with more experience with the subject matter, then make sure that's noted down in a retro. Hopefully an action item can be made up and completed where said person does some knowledge transfer, at least into a run book or other documentation.
Effectively: a drill!
You can do some amount of drills with periodic disaster recovery tests --- twice a year do a manual failover of a colo, etc.
Additionally, paging someone when they should be sleeping is also abusive.
If you need 24/7 coverage, pay for follow-the-sun.
Most of what we do isn't actually that important.
My current job does this, they expect you to respond to pages at 4am
You're telling me this isn't a thing other places?
Edit: I should add that the secondary gets paged more often while the primary is new to the team and doesn't know how to fix everything. In return, you go on call 1/n less often in the future.
If I need to sleep in after a bad night, it's always been fine.
I agree, I'd like to see enough written down that no outage ever has a bus number of one. But I haven't been seeing that anywhere. I've resorted to this one time ever, and the super senior founding teammate was very engaged and assured me that it was the right call.
> pay for follow-the-sun
This seems likely to create a huge team of devs who are seen as interchangeable, no longer paid amazingly well, and don't have enough to do every day.
Also, IME it's been relatively rare for issues outside of business hours to require calling in people who aren't really on call. I think the article is pointing out that it can be the right thing, not that it's necessarily a common scenario. And during business hours, being pulled away from your other work to help handle an incident is obviously a much easier pill to swallow.
Whatever happened to hiring people in schedules that will cover the 24/7 shift.
Manufacturing companies don't have "on calls" they have 12/12 shifts, or 3x4 shifts.
I was a DBA back then. The author of the posts talks about calling for "back-up", back then they would page me (still just pagers then) and say the database was down. Most of the time the database wasn't down, and there was no real evidence the database was down, they were just calling for "back-up".
I've worked at many jobs since then, including at startups, never did an on-call rotation at any of them since the DBA job. If it's important, you should probably have fully awake people scheduled to deal with it.
To me that's different than supporting a release of code that you wrote. I mean if we really have to do this release at 9 PM and I'm the guy who wrote it, I'll probably show up, after I slept all day. But I'm no longer your database buddy that you commiserate with during the night when everything goes to shit since no one else will answer the pager.
This implies that everyone is effectively on call 24/7.
You have a primary and secondary. No one else should be paged unless they’re on the rotation at that time.
It isn't about calling in everyone on the same team.
What I meant was like, paging a subject matter expert on your own team.
Or, maybe, if you're large enough... hire night shift people. I have friends who cut their teeth on night shift ops.
I have friends who work more on the sysadmin side of things, and on call for them just seems like extra work. They're glued to their laptops answering requests.
I'm considering picking up on-call duties in my new role. In my last company they expected us to do on-call as part of the job but only during what they defined as "working hours" which didn't fit with my schedule. That was one of the reasons I left that particular role. But here they give an 18% salary boost for the on-call duties, and I love debugging hard production problems which is a huge plus.
Bye-bye support trauma.
Not willing to pay for three shifts? Shut the system off.
Similarly to the "Heroism isn't…" section, I'd say: Breathe. I've been asked "how do you stay so calm when something is going wrong?" and the honest truth is I'm scared! Or at least, I have that pit, in my stomach, going "oh no it's not working, will we figure this one out?" It's just not a useful thing. Tell that fear to take a backseat, and attempt to let the more logical side of you problem solve. And like TFA says, call for help if you need it; two minds are better than one.
At the management level, you can also do a sort corollary to basically everything in TFA too: "call for help": your engineers need to be able to call for help. That means retaining experience, so that the younger engineers can learn from the older ones, and hopefully not trial-by-fire their entire career, and have someone they can fall back on for help. Same goes for the experience devs, too: it means you need two experienced devs. I've been the only experienced person on the team, and it sucks, because I don't have the answer to everything. "It is your job to see that issues get addressed." — at the management layer, you need to make sure the incentives are focused on that, not something inane, like "mean time to resolution". Time to "the incident in PagerDuty is closed" is meaningless, and will be gamed to something like "we closed the incident because the immediate instance of the problem / symptom has been dealt with". You want the actual, underlying root cause debugged and fixed, and ideally, that eng should never see that entire class of problem again. But this means understanding the root cause, and understanding the system well enough to see the problem through to conclusion, which often means things like "ok, this needs to be fixed, *and I need to prioritize someone familiar with that portion of the system to fix it" — and all too often, that follow-through just doesn't happen. And when it doesn't, your eng pays for it, in the form of getting woken up. "Don't sacrifice your health" — are your eng sacrificing their health? Is your on-call experience too often? (At the lowest, I've been oncall 100% of the time. That was too often!)
I won't accept jobs with on-call rotations anymore.
Took me a good few months after changing jobs to not get crazy anxiety every time my phone rang.
After working in a much healthier on-call setup later in my career supporting a large SaaS, I actually really like it. High stakes produce quick learnings.
Not for everyone, but everyone should try it (and be compensated FFS).
They'd have been better off using a hand-written comic style font like Blambot.