Deploy Frequency is a Vanity Metric
It’s 10:30 on a Monday morning. Daily standup time. You walk into the room where it’s been held every day since the company moved into this building. The room is named Anyone Can Change The World, which is also the title of the talk your CEO gave over five years ago when the company debuted at TechCrunch Disrupt.
Your teammates begin to shuffle in, one after the other. Engineers aren’t usually morning people, and it is a Monday, so it’s not really the cheeriest crew. You pull out your iPhone and open up Hacker News. Something about “Goodbye Microservices” is at the top of the page. You can’t help but tap the link. Someone cracks an awkward joke about MongoDB, breaking the silence. A few of the engineers snicker.
It’s 10:33 on a Monday morning. Your manager closes the door. Seconds later, it violently bursts open. You look up from your phone. It’s Mark, the Vice President over all of engineering. The head honcho himself. You’ve seen him in the hallways a few times but never actually interacted with him.
He demands to know how many times the team deployed code in the last seven days. You’re the Tech Lead so you figure it’s your turn to take one for the team. “I think maybe three times, what do you think Ja…” He cuts you off. “THREE times? Is this amateur hour?”
He demands to know the last time the team deployed on a Friday afternoon or even on a weekend. You already know where this is going. Your heart begins to beat fast. Your Amygdala screams for you to run away. You manage to stitch a few words together, “it’s been a while, maybe a few months?” He rolls his eyes and storms out of the room. Anyone Can Change The World goes dead silent for the next minute or so. And then as if nothing happened, the standup routine abruptly resumes. You know it’s not over yet.
The next day a new face appears at the standup. She introduces herself with a smile, “I’m Sarah, pleased to meet you all.” She then informs us that our new top priority is to improve velocity. She says she’s “here to help.” You look around for your manager to see if he’s got anything to say, but he’s conspicuously AWOL.
You pull out your phone under the table and quickly look Sarah up in the company directory. Under her badge photo are the words “Senior Principal Engineer” in bold. She reports directly to Mark. The last time you had the privilege of chatting with a big wig like her was during your interview, almost two years ago.
“Developer velocity is our competitive advantage! So this team is going to deploy every single day including Friday, Saturday, and Sunday until we’ve proven to ourselves that this team’s velocity meets our engineering standards,” Sarah declares, with a cool-yet-commanding demeanor. Nobody has the guts to chirp back with the obvious question, “what if there’s nothing to deploy?” You think about how cool it would be to have the kind of casual charisma Sarah throws around. That’s probably how she got the impressive title.
You saunter back to your desk and sink into your lime green Steelcase chair (more expensive than an Aeron, but the optics are more in line with the corporate value of “frugalness”). You reminisce about all the times you’ve bragged to your engineer friends about your “super nimble” team that is constantly deploying all the time. One of them works at Salesforce, where they only deploy once a quarter. You’ve made sure to bring that up every time you all get drinks.
The team hasn’t deployed on a Friday or on a weekend in a while. There hasn’t really been a reason. At some point along the way you all agreed that any non-critical changes which passed code review on a Friday can wait until Monday, just to avoid any weekend surprises for the on-call. That reminds you of a photo on Instagram the other day. It was posted by one of the other engineers on the team, Aliyah. It was her with the kids at a park on a lazy Sunday afternoon.
Ultimately there’s nothing actually preventing weekend deploys. It isn’t a hard rule, just a courtesy. The deployment process is fully automated and battle-hardened. Unit test coverage is over 95%. There are dozens of end-to-end tests running continuously in production. Release and deployment are fully decoupled. All of this has built up the confidence to fire-at-will, but always there’s the chance of an unknown-unknown creeping into a deploy every once in a blue moon.
You need to pee. Each person you pass on the way to the bathroom is obviously judging you. Your team is now the laughing stock of the company, or at least that’s what you keep telling yourself. You think about how disappointed your therapist would be about this kind of negative thinking.
Sarah joins your team’s Slack channel. Minutes later you see a follow-up email from her about the team’s new direction. You had been asking to work alongside more senior engineers for a while now, but this wasn’t exactly what you had in mind.
A few days pass. The answer to the question everyone was afraid to ask is now abundantly clear. To ensure there is some code to deploy every day, the team has been dividing what would have been one pull request into two, at least, three ideally. You pull up the fancy “developer metrics platform” that the company pays six-figures for annually. It shows the team’s median pull request size is 317 lines of code, which seems pretty small to you already. Every day the team spends around a third of the standup figuring out exactly how to smear code across the week to hit the at-least-once-daily deploy target.
One of the newer engineers, a bright-eyed new grad named Carlos, comes to you in confidence, frustrated that he’s had to break his code into two patches. His opening salvo: “this is fucking ridiculous.” You know Carlos is making peanuts. A few months back, your manager went to grab coffee before your weekly one-on-one and he unknowingly left a browser window open to Carlos’ HR page. You couldn’t help yourself. Carlos’ initial grant was only 2,200 shares, one tenth of what you got. Poor guy.
The feature he’s been working on for a day or two can’t even be released until the second patch goes out. Even though patch #1 was deployed this morning, patch #2 is scheduled for tomorrow, so he needs to wait another day to flip open the release gate. You try to cheer him up, making something up about how sometimes temporary inefficiency is the cost of realizing those big bets. You know that’s hot garbage, but what else are you supposed to say? His mood seems better after your chat. You give yourself a figurative pat on the back.
A few weeks pass and the team has been religiously deploying code every single day, without missing a beat. You’re proud, even if it’s sorta perverse. You go look at the backlog in JIRA. “Jesus Christ, I hate JIRA” you mumble to yourself. You notice the team’s backlog has grown longer than it’s ever been, by a lot.
That’s not something you really had to think about before. Before, you pretty much knew intuitively how much work the team could take on at any given time. This whole “velocity” effort has thrown a wrench in the works. By all indications the team has actually slowed down, about 30% in your estimation. This is a debacle. You start to wonder if you’ll somehow end up taking the fall.
The next morning Sarah surprises you with a Slack message out of the blue. It’s the first one she’s ever sent you, which does strike you as odd in the moment. “Hey, how about a quick drink after work tonight? Smuggler’s Cove?” You love Smuggler’s Cove. You agree to meet in front of the office at 6 and ride over together.
What could this be about? Oh, right, this is the beginning of the end. It’s when she’ll push you into the street right before the speeding bus runs you over. At least your favorite bar will be the scene of the crime. Maybe they’ll bury you there.
It’s 6PM and you’re outside on the sidewalk, anxious. Your phone buzzes. It’s Sarah. “Running 10 minutes behind!” Whatever. You’re two years into this company, your demise can wait another ten minutes. A few minutes later she sends another message saying she’s summoned a Lyft. Good news, that’s $13 back in your pocket. And while you definitely couldn’t get away with expensing it, they won’t even think twice about approving her Expensify report.
A silver Toyota Corolla pulls up right as Sarah walks out of the building. “Oh great, good timing!” she says excitedly. You get in and put your seatbelt on. You may be unable to salvage your job at this point, but at least they won’t find your bloodied corpse in the back of a subcompact without a seatbelt on.
As soon as the door closes, Sarah blurts out “how stupid is all of this bullshit?” You’re a bit stunned. What is she even talking about? Thankfully her rant continues. “I mean, it’s kinda fucked up how we’re actually shipping less shit but the execs are getting a hard-on about you guys deploying on Sunday.” Is she testing you? You’ve never heard her swear before, not even once. And isn’t saying “hard-on” like some kind of HR violation? You seem to recall something about a yellow light from the state-mandated anti-harassment class.
Nothing consequential quickly comes to mind, so you fire back with the old reliable “what do you mean?” She laughs. “Oh honey, have you not been watching the backlog?” All you can come up with is the rationalization that has carried you for the past few months. “I know, but I thought this was just us… I mean… the team showing what we’re made of, a temporary setback.”
Sarah looks at you like some kind of battered puppy. She takes a deep breath, sucking in enough oxygen to sustain a lengthy screed. “We’re all adults here right? I mean, this whole thing has nothing to do with reality. Mark started counting deploys years ago when the team was struggling to ship. Something dumb like that was probably the right thing back then, but now we‘re fucking light years beyond that kind of childish shit.”
“But he’s waxed poetic about deployments at so many conferences now that it’s basically his personal fucking brand. At this point admitting that it’s just a vanity metric would be tantamount to heresy. Like the Pope saying there’s no God or something.” She randomly breaks out in song “what if God was one of us? A slob like one of us…” and then chuckles at herself.
“Buck up kiddo, we’re a god damn unicorn. The next raise will probably be at $5 billion.” She pauses. Her eyes dart towards the car’s soft ceiling. She’s clearly calculating something. “You’re two years in at IC5 right? So you’ve vested like what, half of a 20,000 share initial grant? That’s like a million bucks. Aren’t you pumped about that?”
Your initial grant was actually 22,000 shares, so there’s an extra $100,000 on the table, an absolutely insane amount of cash on it’s own. In the six years since graduating from Virginia Tech with a Computer Science degree, you’ve managed to pay off your student loans and scrape together $20,000 in savings. That seemed like a lot the other day when you checked the Bank of America app, but this discussion has quickly put things into perspective.
“It’s not like we can actually fuck it up at this point. We’ll go public in 18 months and you’ll get your million bucks or whatever. Sure your team may have slowed down a bit, but if the company’s destiny actually depended on one little engineering team cranking out a few extra features, we’d be so fucked.”
“John Q. Public is way more excited about owning a piece of the tech company where Mark fucking Carson runs engineering. They won’t care about a few missing features. The guy is a living legend. King of Ship Mountain! Quick Cummin’ Mark!” That’s apparently her Trumpesque nickname for him. It strikes you as kinda funny, but uh, again, yellow light? She laughs. You struggle slightly to hold onto a neutral disposition.
The Lyft pulls over and you spot a familiar face loitering in front of the bar. It’s Jesus, one of the bouncers. Jesus is the opposite of the techie type that surrounds you most days. He lives in Vallejo, where he grew up, an hour and a half away. He drives into the city four days a week. You don’t even own a car. You’re pretty sure he’s only nice to you because of the $500 in bar tabs you rack up every month or so. That’s alright though. It still feels good.
Jesus smiles warmly and drops his signature opener, “what’s up boss?” You give him a big hug and fumble through the Cool Guy Handshake. Not to be upstaged, Sarah loudly clears her throat and switches to her finest sarcastic voice. “Oh, this is your shit huh? Big man about town.” You laugh.
You walk downstairs together and sit at the bar. You order the booziest zombie on the menu, one for each of you. The bartender is a new guy. He asks you for a card. You hand over your Chase Sapphire Reserve. He cracks a joke, alluding to the two of you being on a date. Without hesitation, Sarah playfully claps back. “Hey asshole! You can fuck right off with that sexist shit. Can’t a girl get a drink with a coworker?” She flashes her engagement ring. It’s cradling the largest diamond you’ve ever seen outside of a jewelry store.
You turn to your left and stare directly at Sarah. “Don’t be rude. What?” she demands. “A million bucks eh?” you ask, almost rhetorically. She relaxes and grins. She has the perfect response ready.
“A million fucking bucks, kid.”
Your phone buzzes. It’s a LinkedIn notification. Your manager has invited you to connect. You haven’t seen him around the office for a few weeks. Now that you think about it, he’s been missing since Sarah first came around. For a while Slack rendered the little palm tree emoji next to his name, so you didn’t think too much about it.
You tap the notification. While waiting for the app to load, you’re reminded exactly how much you hate LinkedIn. After accepting his invite, you open his profile. It lists his current gig as some “.ai” thing you’ve never heard of. His job history is missing the 18 months he spent managing your team.
A slightly guilty feeling of relief rushes over you. That speeding bus? It wasn’t headed for you after all.