top | item 41230512

Why Friday Production Deployments?

9 points| miguellima | 1 year ago

Could anyone explain the reason behind making production deployments on a Friday?

I cannot understand the logic behind it.

Why not a Monday, where all company is available to intervene if required?

18 comments

order

coffeeman6|1 year ago

Cynical take: your contract normally says sometimes like "38 hours a week plus any reasonable additional time blah blah"

If there is an outage on Friday night or Saturday it doesn't affect feature work M-F. Company gets free labour.

Less cynial: continuous deployment agile scrummaster culture says you can deploy anytime so choosing a risky time is OK (risk of missing out on poisoning yourself with alcohol on a Friday night).

This is because (ignoring any reality) deployments should never fail or introduce regressions. Agile gods said so! Friday is a flex for agileness.

PrivateButts|1 year ago

Almost always at our company it's because of a push by a higher up who won't be the one staying late when it all blows up. It's bad management at it's finest.

Also, Monday releases usually suck as well. We shoot for Tuesday launches, since Mondays are usually when people are catching up on busy work, or most often out sick. Besides, it gives everyone a chance to review their launch obligations, do final pre-launch checks, and an opportunity to make a go/no go call during work hours, if you shoot for morning launches.

miguellima|1 year ago

Yep, Tuesday looks much better than a Monday.

Phlebsy|1 year ago

There are different levels of risk involved with different types of changes, and there's also risk involved in not making some changes. But aside from that, it is useful to separate the meaning of deployments(pushing a build from a code change to production) from releases(enabling the functionality of that code for users/consumers).

Releases? Sure, you want those to happen early in the week so that you can monitor the rollout and how users interact with it. Deployments? Ideally, deployments change absolutely nothing about the performance characteristics of the system until a feature flag is enabled. There is some cruft in that and it requires cleaning up after yourselves, but when used right it's no different from standing up a new deployable that nobody interacts with yet as far as risk goes.

All in all, if you have a healthy CI/CD setup, use risk mitigating strategies such as feature flags/automated rollbacks, good monitoring/alerting on performance and SLOs, and you're not introducing something like 200+ novel lines of code to an existing workload running in production then I don't see the point in waiting to deploy.

Maybe I'm just too much of a fan of finding things that hurt and making them hurt as much as possible so that we are incentivized to improve them though. If something goes wrong on a deployment/release on Friday, it would go wrong on Monday too. Find what was broken about your process that let it slip through and fix that.

aynyc|1 year ago

Most businesses still operate mainly from M-F. Most software are written for businesses. You can't really afford to bring your clients' business down, that's a lot of potential lawsuits or credits that you need to give back.

miguellima|1 year ago

If they operate from M-F, its likely users noticed nothing during the weekend. But that does not mean, that for example, data ingestion stops during the weekend.

tacostakohashi|1 year ago

At this mid-late career stage... this is a real gotcha with being an employee software developer at BigCo or wherever.

We work on writing code M-F, 9-5, when managers and customers are around so we collaborate and troubleshoot together then and stuff, fine.

We need to deploy, rollback, do checkouts, etc. _after hours_ so it doesn't affect the business. Sometimes it's deploy on Friday night... then some problem is found first thing Monday morning of Sunday night (from Asia Monday users) that requires "urgent" attention, so you end up with both a late start and an early finish to the weekend.

Deploying software is a standard, predictable, part of the job/business hours, so it should really be done during regular hours, or otherwise hire some dedicated "second shift" people to do it after hours / during their _normal_, agreed hours. I don't mind being flexible / "going the extra mile" sometimes... but when it is most weekends, it's a big ask, it's basically working 1.5 jobs for 1 salary.

In practice, usually some staff member who wants to "go the extra mile" will volunteer for this thankless task as a way to get noticed... but instead they end up getting burnt out and jaded, and then quit and find the next sucker to saddle with it.

everforward|1 year ago

Do they not do comp time? Last time I worked at a BigCo, they didn’t hand out comp time by default but didn’t fight if I asked for it.

I just pointed out that it was effectively slashing my compensation per effort, during times I especially didn’t want to work. I proposed either comp time, or bonuses amounting to overtime on our “hourly rate” (salary divided by work hours in the year).

My manager opted for comp time, because he could do that without needing to involve HR and all the pay related people. Apparently no one had ever bothered to ask about it, and had just been working nights and weekends for free.

nevon|1 year ago

My take is that if your deployments carry so much risk that you're afraid to do it on a Friday, you have some work to do. Bringing down the risk of deploying through good observability, automated rollbacks, separate releases through feature flagging, etc. makes deployments almost a non-event and reduces stress by a lot.

Now, obviously there's always _some_ level of risk, but for the vast majority of changes I have no problem deploying no matter what day it is, and I have yet to pay for it with my weekend for the past decade.

ipaddr|1 year ago

That's a rookie move that risks your weekend. Some deploy Monday because everyone is in meetings planing your week and mistakes can be fixed without people noticing. I prefer Tuesday through Thursday because less mistakes are made. Early mornings are good, lunch time has benefits. Don't do it just before you leave or by the time you get home you could be engulfed.

comprev|1 year ago

Thursday for small low risk deployments, Tuesday for higher risk.

miguellima|1 year ago

Agree, Tuesday sounds much better than on Monday.

dyingkneepad|1 year ago

Because the Jira deadline (or perhaps OKR deadline) or whatever other deadline set by a PM or a Manager or HR is Friday, and I have to mark the checkbox or move the ticket as done before the deadline so I can claim I finished stuff on time for the our support agreements on performance evaluation period or whatever.

jf22|1 year ago

I actually like working at companies that regularly deploy on Friday because companies that do that tend to put a lot more effort into quality and testing so you don't waste a weekend triaging issues.

dolleik|1 year ago

As a single developer on a project, I'd rather push Friday so I have all weekend to fix it should something go wrong.

pestatije|1 year ago

if anything goes bad youll have the whole weekend to solve it...similar to why bank bankruptcies are announced friday

coffeeman6|1 year ago

Imagine: kids soccer games, visiting cousins and grandma, date at the opera and essential hygiene like cleaning the house are terra nullis.

But not getting your tickets cleared M-F because of outage is war!