Episode 2

When Players Revolt

"When warnings become prophecies"
21 min read

They fixed the validation bug properly — six hours, no corners cut. But the database migration script Anton wrote Monday night to handle legacy NULL values? Nobody reviewed it. Wednesday 09:03, it runs automatically and defaults 4,847 player inventories to empty arrays. By Thursday morning, the App Store rating is 2.1 stars. Emergency weekend war room. And Lukas asks: 'Why didn't I know about this earlier?' Because rushing always has a cost.

Previously: "The Crunch That Never Ends" — Three months into perpetual crunch, Tomasz threatens to quit, Mariana flags a critical inventory bug, and Lukas overrides her warning: "Ship it anyway." The update launches Wednesday.

Wednesday, 08:12 — Launch Morning

Development team watching launch metrics
"We fixed the bug. Six hours, no corners cut. It's solid."

The development floor had the nervous energy of launch day. That particular hum of anxiety mixed with caffeine. Monitors showed dashboards — server metrics, player count, error rates — glowing in the morning dimness. Anton stood at his desk, coffee in hand, refreshing the deployment status page every thirty seconds. His knee bounced involuntarily. Sweat dampened the back of his neck despite the office air conditioning.

Mariana sat beside him, laptop open to the production logs. Her eyes burned from too little sleep — they’d worked until 23:00 last night finishing the inventory fix. Six hours of careful refactoring, proper validation, unit tests for every edge case. No corners cut. Not this time. Her hands were steady on the keyboard, but her stomach churned with that pre-launch dread that never quite went away.

“Deployment’s at 94%,” Anton said. His accent thickened when he was anxious — Russian baseline, Berlin casual, gaming English all blending together. “Two minutes.” He set his coffee down with a hand that trembled slightly.

“It’ll be fine,” Mariana said. She sounded more certain than she felt. Her mouth was dry. “We fixed the bug. Properly. It’s solid.”

Hassan joined them, laptop under one arm, looking like he’d slept in his clothes. He probably had. Dark stubble shadowed his jaw. His eyes were bloodshot. “Deployment pipeline cooperating today?”

“So far.” Anton pulled up the error dashboard, green status indicators filling the screen. “No red flags yet.”

“Yet,” Hassan repeated. He set his laptop down with a soft thunk, opened a terminal. Black screen, green text. “Give it ten minutes. Something always breaks.”

“Cheerful as always,” Mariana said.

“Realistic,” Hassan corrected. He started tailing production logs, lines of text scrolling past. “Three months doing this. Something always breaks.”

The deployment status changed: COMPLETE — 08:14:23 CET

Anton exhaled loudly, shoulders dropping. “We’re live.” Relief evident in his voice.

They watched the dashboards like soldiers watching the horizon for incoming fire. Player count climbing. 127 concurrent users. 208. 341. Morning rush in Europe, players checking the new update. Numbers ticking up in real-time.

Error rate: 0.02%. Normal. Server load: nominal. Database queries: smooth. Green. All green.

“Looking good,” Anton said. His voice carried cautious hope.

Mariana felt the knot in her stomach loosen slightly. The tension in her shoulders eased. Maybe this time would be different. Maybe fixing it properly actually worked.

Her phone buzzed. Lukas in the team channel:

Lukas WeberLukas Weber Update is live! Great work everyone. Marketing push starts 09:00. Let's make this one count. 🚀

Emoji and all. Lukas loved a launch. Performative enthusiasm.

Mariana refreshed the error dashboard. Still green. 412 concurrent players now. No inventory corruption errors. No silent data loss. The validation she’d added was working exactly as designed — catching edge cases, logging them, preventing the disaster she’d predicted.

“I think we actually did it,” she said quietly, almost afraid to jinx it.

Anton grinned, some of the tension finally leaving his face. “Told you. Russian development, Brazilian QA, Syrian infrastructure. Unstoppable.”

Hassan didn’t smile. He was staring at his terminal, brow furrowed, jaw tight.

“What?” Mariana leaned over, pulse quickening. “What’s wrong?”

“Nothing,” Hassan said slowly. “That’s the problem. It’s too quiet.”

“Maybe things actually work when we fix them properly,” Anton said.

“Maybe,” Hassan said. But he didn’t look convinced.


Thursday, 09:47 — The First Cracks

Marcus at his desk surrounded by support tickets
"273 tickets. All saying the same thing."

Marcus Thompson was drinking his third coffee of the morning when the support ticket count hit triple digits. The bitter liquid had gone cold an hour ago, but he drank it anyway. He’d been watching the counter climb since 08:00 — first a trickle, then a stream, now a flood. His monitor glowed with angry red notification badges.

273 tickets. All saying the same thing. His pulse quickened. Chest tightened.

My inventory is gone.
All my items disappeared after the update.
Years of progress just vanished.
WTF happened to my gear???

He opened the internal Slack with hands that had started to shake slightly from too much caffeine and rising panic.

Marcus ThompsonMarcus Thompson @Katja @Anton @Mariana - We have a problem. 273 support tickets about inventory loss. Players saying all items disappeared after yesterday's update.

Anton PetrovAnton Mikhailovich Petrov That's impossible. We fixed the inventory bug. Validation is working.

Mariana SantosMariana Santos Let me check production logs.

Marcus ThompsonMarcus Thompson Check fast. App Store reviews are coming in. Not good.

Marcus opened the App Store with a sense of dread. Their game’s rating had been 4.2 stars on Tuesday. Yesterday it was 4.1. This morning…

2.8 stars.

His stomach dropped. The number glowed on his screen, accusatory.

And dropping. He watched it tick down to 2.7 as he stared.

The recent reviews section was a nightmare. His throat went dry:

“Update deleted my entire inventory. 500+ hours of gameplay GONE. Uninstalling.”

“How do you ship an update this broken? Do you even test?? Absolute trash.”

“I spent money on gems and now everything I bought is GONE. Refund or I’m reporting to Apple.”

⭐⭐ “Game was fun before this disaster update. Fix it or lose your players.”

Marcus’s phone rang. Claudia, head of marketing.

“Tell me you’ve seen the App Store ratings,” she said without preamble.

“Just checked. It’s bad.”

“It’s catastrophic. We pushed €25K in ads yesterday. Players download, see 2.8 stars, uninstall immediately. Our conversion rate dropped 67% overnight.” Her Italian accent sharpened with stress. “Marcus, what the fuck happened? We launched yesterday. Everything was fine.”

“Everything looked fine,” Marcus corrected. “But players are reporting massive inventory loss. Development’s investigating now.”

“How long to fix?”

“I don’t know. I’m support, not development.”

“Find out. I’m pausing all ad spend until we stabilize the rating. But if we go below 2.5 stars, we’re talking weeks of recovery. Months, maybe.”

She hung up.

Marcus pulled up the support dashboard. 312 tickets now. The count was accelerating.

His desk phone rang. Then his mobile. Then another Slack notification.

The flood had started.


10:23 — Mariana Finds the Truth

Mariana staring at her screen in horror
"We fixed the new code. But the migration script..."

Mariana had the production logs open across three monitors. Player IDs, inventory queries, error traces filling every screen. The validation code she’d written was working perfectly — no errors, no edge cases triggered. Green across the board.

So why were thousands of players reporting inventory loss? The disconnect made her skin prickle.

She filtered the logs by timestamp, fingers flying across the keyboard. Wednesday 08:14 — deployment completed. Wednesday 08:15 to 09:00 — normal operation. Wednesday 09:00 to 10:00 — first support tickets appeared.

But the inventory errors hadn’t started at deployment. They’d started later. Hours later. The pattern didn’t make sense.

She pulled up the database migration logs. Scrolled down. Her pulse quickened.

And there it was. Her breath caught.

[2026-02-12 09:03:47] Running migration: inventory_schema_v2.sql
[2026-02-12 09:03:49] WARNING: NULL values detected in legacy player_inventory.item_data
[2026-02-12 09:03:49] Applying default value: [] (empty array)
[2026-02-12 09:03:52] Migration complete: 4,847 rows updated

Her stomach dropped. The coffee she’d drunk earlier threatened to come back up. Cold sweat broke out across her forehead.

The bug wasn’t in the new code. It was in the database migration. The script that ran automatically after deployment to update the old schema to match the new one. The thing they’d been too rushed to review.

Someone had written a migration that assumed all legacy inventory data was valid. When it found NULL values — corrupted data from months of tech debt — it “fixed” them by setting inventory to an empty array.

Wiping thousands of players’ items in the process.

She opened the migration file. Read the SQL. And found the comment at the top:

-- Migration script v2.1
-- Author: Anton Petrov
-- Date: 2026-02-10
-- Note: Quick fix to handle legacy NULL values. Defaulting to empty array.
-- TODO: Investigate why NULLs exist in production. Low priority.

Mariana SantosMariana Santos @Anton - The inventory bug. It's not the validation code. It's the migration script. Line 47. You're setting NULL inventory values to empty arrays. That's wiping player data.

Anton PetrovAnton Mikhailovich Petrov Блядь.

Anton PetrovAnton Mikhailovich Petrov Fuck. I added that as a safety check. I didn't think...

Mariana SantosMariana Santos How many players?

Anton PetrovAnton Mikhailovich Petrov Migration log says 4,847 rows.

Mariana SantosMariana Santos 4,847 players just lost everything.

Anton PetrovAnton Mikhailovich Petrov Can we rollback the migration?

Mariana SantosMariana Santos Not without rolling back 24 hours of live gameplay for everyone. And we don't have backups that granular.

Hassan Al-RashidHassan Al-Rashid Who approved this migration?

Anton PetrovAnton Mikhailovich Petrov I wrote it Monday. Deployed it with yesterday's release. Nobody reviewed it. We were rushing.

Hassan Al-RashidHassan Al-Rashid Because Lukas demanded Wednesday launch.

Mariana SantosMariana Santos And now 4,847 players paid the price.


11:34 — War Room

Emergency meeting in conference room
"Why didn't I know about this earlier?"

Lukas called the emergency meeting in Conference Room A. The big one, glass walls, everyone could see them from the open floor. Fishbowl visibility. The entire development team watching through transparent walls.

Katja, Marcus, Elif, Anton, Mariana, Hassan, Claudia, and Lukas himself. The damage control team. They filed in silently, the air thick with tension. Someone had forgotten to crack a window — the room smelled stale, recycled air and stress sweat.

Lukas stood at the head of the table, laptop showing the App Store page. 2.1 stars now. The number glowed accusingly. Fifty-three new one-star reviews in the last hour. His jaw was set, knuckles white where he gripped the laptop edge.

“Explain,” he said. Voice cold. Controlled.

Mariana spoke first. “Database migration script. Written Monday during the rush to fix the inventory validation bug. It defaulted NULL values to empty arrays. 4,847 players affected. All inventory data lost.”

“Can we restore it?”

“No,” Hassan said flatly. “We don’t have backups at that level. Player inventory is gone.” Each word landed like a hammer.

Lukas’s jaw tightened. A vein pulsed in his temple. “How did this get into production?”

Anton raised his hand slightly, like a student confessing to breaking a window. His face had gone pale. “I wrote the migration. Nobody reviewed it. We were moving too fast.” His voice cracked slightly on the last word.

“You wrote code that deleted player data and didn’t have anyone review it?”

“I wrote a migration script to handle edge cases I didn’t understand,” Anton corrected. “Under time pressure. While trying to ship on your Wednesday deadline. No, I didn’t have time for review. You told us to ship, so we shipped.”

The room went silent.

Lukas turned to Katja. “Why didn’t I know about this earlier?”

Katja stared at him. “You did know. Mariana flagged the inventory bug six days ago. I told you it was critical. You said ship anyway.”

“I said fix it and ship.”

“We fixed the validation code. But we didn’t have time to audit the entire system. That’s what happens when you compress six days of work into thirty-six hours.”

“I’m not accepting that.” Lukas’s voice was cold. Ice. “This is development’s responsibility. You deploy code, you own the outcome.”

Mariana laughed. Sharp, bitter. The sound cut through the tension like breaking glass. Heat flooded her face — anger, frustration, exhaustion all boiling over. “We own the outcome? We told you this would happen. I flagged the bug. Katja escalated it. Anton and I worked until 23:00 fixing what we could. And now you’re standing here asking why you didn’t know?” Her hands were shaking. She pressed them flat against the table.

“Mariana—” Katja started.

“No.” Mariana stood abruptly, chair scraping against the floor. The sound echoed in the silent room. “I’m done pretending this is normal. We knew this update was risky. We knew we were rushing. We knew corners were being cut. Everyone in this room knew. And we shipped it anyway because Lukas said Wednesday was non-negotiable.” Her voice was steady now, cold with fury.

She turned to Lukas. “You want to know why you didn’t know? Because you don’t listen when we tell you. You hear ‘this is risky’ and you hear ‘make it work anyway.’ So we make it work. Until it doesn’t. And then you ask why nobody warned you.” Her chest heaved. Adrenaline made her hands tremble.

Lukas’s expression was unreadable. Stone. When he spoke, his voice was quiet. Dangerous. “Get out.”

“What?” The word came out strangled.

“Get out of this meeting. You’re clearly too emotional to be productive.”

Mariana stared at him. Blood pounded in her ears. Then at Katja, who said nothing — wouldn’t even meet her eyes. Then at Anton, Hassan, Marcus — all of them silent, looking down, looking away.

She grabbed her laptop with shaking hands and left, the door handle cold under her palm.

The glass door closed behind her with a soft click that felt deafeningly loud. Through the window, the development floor watched — fifty pairs of eyes tracking her walk of shame.


14:17 — Damage Control Plan

Elif reviewing player metrics
"This isn't a PR crisis. This is an existential crisis."

After Mariana left, the room stayed silent for exactly eleven seconds. Then Elif spoke.

“We need a plan. Immediately.”

Lukas nodded. “Agreed. Options?”

“First,” Elif said, “we need to stop the bleeding. Marcus — how bad is support?”

“427 tickets and climbing. Players are furious. Some threatening chargebacks, refunds, reporting us to Apple.”

“How many affected players are paying users?” Claudia asked.

Elif pulled up her analytics dashboard. “Migration affected 4,847 accounts. Of those, 1,203 made in-app purchases in the last 90 days. Average spend: €47 per user. Total affected revenue: approximately €56,500.”

“Fifty-six thousand euros of paying players just had their progress deleted,” Claudia said quietly. “This isn’t a PR crisis. This is an existential crisis.”

Lukas rubbed his temples. “What do we offer them?”

“Full inventory restoration if we can,” Elif said. “If we can’t — and Hassan says we can’t — then compensation. Gems, premium currency, exclusive items.”

“How much?”

“Enough that they don’t request refunds. Figure €30 per affected player minimum.”

“That’s €145,000,” Lukas said.

“Cheaper than losing them permanently,” Elif countered. “These are paying users. Retention value over 12 months is €180 per player. If we lose them, we lose €870,000 in future revenue.”

Lukas was silent for a moment. Then: “Do it. Compensation package by end of day. Marcus, draft the support response. Elif, coordinate with marketing on the public statement.”

“And development?” Katja asked quietly.

“Emergency fix. All hands. Cancel everything else. I want this solved by Monday.”

“That’s three days,” Hassan said. “We don’t even know if it’s fixable.”

“Then work the weekend and find out.”

Anton spoke carefully. “Lukas, the team is exhausted. We’ve been crunching for three months. Now you want another weekend—”

“I want the problem fixed before we lose more players. Is that clear?”

Anton’s jaw tightened. But he nodded.

“Good.” Lukas closed his laptop. “I want hourly updates. Development works around the clock until this is resolved. No excuses.”

He left.

The remaining team sat in silence.

Katja looked at the faces around the table. Hassan, dark circles under his eyes, wedding ring glinting as he closed his laptop. Anton, staring at nothing, probably replaying the migration script in his head. Marcus, already drowning in support chaos.

“I’ll go talk to Mariana,” Katja said quietly.

Nobody responded.


16:53 — Katja and Mariana

Katja and Mariana on the rooftop terrace
"When does this stop being my problem?"

Katja found Mariana on the rooftop terrace, smoking a cigarette she’d bummed from someone in marketing. Mariana didn’t smoke. But today, apparently, she did. Her hands trembled as she brought it to her lips.

“I didn’t know you smoked,” Katja said.

“I don’t.” Mariana took another drag, coughed — harsh, hacking. Her eyes watered. “But I also don’t usually get kicked out of meetings for telling the truth.”

Katja sat on the concrete ledge beside her. The stone was cold through her jeans. Berlin stretched out below them — Prenzlauer Berg rooftops, construction cranes scattered across the skyline, the TV tower in the distance like a needle piercing gray sky. February wind cut through her jacket, biting at exposed skin. She pulled her collar tighter.

“He shouldn’t have kicked you out.”

“But you didn’t stop him.”

“I should have.”

Mariana crushed the cigarette under her shoe. “Katja, I need you to be honest with me. Are we actually going to fix this? Or are we just going to patch it with enough duct tape and premium currency to make the players shut up until the next disaster?”

“I don’t know.”

“That’s what I thought.” Mariana pulled her jacket tighter against the wind. “I’ve been here eighteen months. First year was great — small team, smart people, solving interesting problems. Last six months? It’s been crisis after crisis. And every time, the answer is work harder, move faster, ship anyway.”

Lukas WeberLukas Weber Where's Mariana? Need her on the emergency fix team.

“Do you? Because from where I’m sitting, you know it’s broken but you keep playing along. You escalate issues to Lukas, he overrules you, and then you tell us to make it work anyway. So what’s the point of having a CTO who won’t actually fight for development?”

The words landed hard. Katja had no defense. Because Mariana was right.

“I’m trying,” Katja said quietly.

“Are you? Or are you just trying to keep everyone happy while the whole thing burns down around us?”

Katja had no answer.

Mariana stood abruptly. “I’m going home. Tell Lukas if he wants me working this weekend, he can apologize for kicking me out of that meeting. Otherwise, I’ll see everyone Monday.” Her jaw was set, eyes red-rimmed.

“Mariana—”

“When does this stop being my problem, Katja?” Mariana’s voice cracked, tears threatening to spill. “I flagged the bug. I did the work. I fixed what I could. And now players are furious, the game is review-bombed, and I’m the one getting yelled at for being ‘too emotional.’ When do I get to say this isn’t my fault?” Her hands were fists at her sides, nails digging into palms.

She left before Katja could respond, footsteps echoing on the concrete stairs.

Katja sat alone on the rooftop terrace as the sun dropped lower over Berlin, painting the sky in shades of bruised purple and orange. The city hummed below — traffic, construction, sirens, life continuing regardless of whether a gaming studio was collapsing under its own dysfunction. The wind picked up, carrying the smell of exhaust and distant rain.

Her phone buzzed. Lukas.

Lukas WeberLukas Weber Where's Mariana? Need her on the emergency fix team.

Katja stared at the message. Then she turned off her phone and sat in the cold for another twenty minutes.


Saturday, 02:47 — The War Room Never Ends

Development team working through the night
"We're not fixing the system. We're just patching the symptoms."

The development floor at 02:47 on a Saturday morning had the surreal quality of a place that should be empty but wasn’t. Fluorescent lights hummed overhead, too bright for the late hour. Empty coffee cups littered every surface. The air smelled like stale pizza and desperation. Anton sat at his desk, fifth coffee of the night — the mug read “git commit -m ‘final final FINAL’” — staring at database queries until they blurred. His eyes burned. Hassan was beside him, scrolling through server logs, shoulders hunched with exhaustion. Across the room, Nikos and Dimitri argued in Greek about rollback strategies, voices hoarse and frustrated.

Mariana had come in Friday evening. Not because Lukas apologized — he hadn’t. But because the team needed her. And despite everything, she still cared about the work. Still cared about the players whose data they’d destroyed.

She stood now at the whiteboard, mapping the data corruption with fingers stained red from dry-erase markers. Red markers for affected players. Blue for potential recovery paths. Green for confirmed lost causes. The colors bled together at the edges.

Most of the board was red. So much red.

“We can recover approximately 40% of affected inventories,” she said. Her voice was hoarse from hours of meetings. “Players who made purchases in the last 7 days — we have transaction logs. We can rebuild their items from receipts.”

“And the other 60%?” Anton asked.

“Gone. Unless we have backups we don’t know about, or Hassan pulls a miracle from the database transaction history.”

Hassan didn’t look up from his laptop. “No miracles. Transaction history only goes back 72 hours. Anything older is rotated out. It’s gone.”

Lukas WeberLukas Weber Update? Are we on track for Monday deploy?

Mariana SantosMariana Santos We'll have partial recovery by Monday. 40% of affected players. The rest are permanent data loss. Compensation package ready. Full postmortem report by Tuesday.

Lukas WeberLukas Weber Why only 40%?

Mariana SantosMariana Santos Because we don't have the infrastructure to do better. This was in my original bug report. Insufficient backups, no staging environment, compressed timeline. All predictable outcomes.

Lukas WeberLukas Weber I need better than 40%.

Mariana SantosMariana Santos Then build a time machine. Otherwise, this is reality.

She underlined the last point twice.

“We’re not fixing the system,” she said. “We’re just patching the symptoms. Next month it’ll be something else. Different bug, same cause.”

“So what do we do?” Hassan asked.

“I don’t know.” Mariana capped the marker. “But I know working until 03:00 on a Saturday fixing a disaster we predicted a week ago isn’t the answer.”

Lukas WeberLukas Weber I need better than 40%.

Mariana SantosMariana Santos Then build a time machine. Otherwise, this is reality.

She put her phone face-down on the desk with more force than necessary. The screen cracked against the surface.

The development floor was quiet except for the hum of servers — that constant mechanical drone that never stopped — and the click of keyboards. Outside, Berlin slept. Streetlights cast orange halos through the windows. Inside, the team that had warned about this disaster worked through the night fixing it anyway. Because that’s what they always did.

Hassan closed his laptop with deliberate care. His movements were slow, weighted with exhaustion. “I’m going home. My wife is barely speaking to me. I’ve been here 19 hours. Monday we’ll finish what we can.” Dark circles shadowed his eyes. He looked ten years older than he had on Wednesday morning.

“Lukas said—” Anton started.

“I don’t care what Lukas said.” Hassan stood, grabbed his jacket. “He doesn’t get to decide when my marriage falls apart. I’ll be back Monday. The database will still be broken then.”

He left.

Anton looked at Mariana. “He’s right, you know.”

“I know.”

“So why are we still here?”

Mariana stared at the whiteboard — red markers, blue hope, green reality. “Because if we’re not here, it doesn’t get fixed at all.”

“And if we are here, we burn out and quit like Tomasz.” Anton shut his laptop. “I’m going home too. Girlfriend’s birthday is Sunday. I already missed Valentine’s Day for the last crisis. Not missing this.”

One by one, the team left. Nikos and Dimitri, still arguing in Greek as they headed for the elevator. Linnea, mascara smudged under her eyes. Sofia, carrying her shoes because her feet hurt too much to wear them.

By 03:30, only Mariana remained, staring at the whiteboard full of problems she couldn’t solve alone. The office felt cavernous in the silence. Empty desks stretched in every direction. The server fans hummed. Her reflection stared back from the dark windows — haggard, hollow-eyed.

Her phone buzzed one more time. Not Lukas. Katja. The screen’s glow illuminated her face in the darkness.

Katja MüllerKatja Müller Go home. Please. This can wait until Monday.

Mariana SantosMariana Santos Can it? Or will Monday just be another crisis because we didn't work hard enough this weekend?

Katja MüllerKatja Müller Mariana. Go home.

Mariana looked at the empty development floor. The cold coffee cups. The whiteboards full of half-solutions. The disaster that everyone saw coming but nobody could stop.

She grabbed her jacket and left.


Monday, 10:15 — The Aftermath

Monday morning standup meeting
"We shipped partial recovery. 1,947 players restored. 2,900 permanently lost."

Monday morning standup had the hollow atmosphere of soldiers after a lost battle. Everyone present. Everyone exhausted. Nobody making eye contact. The development floor smelled like old coffee and defeat. People shifted their weight, avoided looking at each other. The energy was flat, dead.

Lukas stood at the front of the development floor, hands in his pockets, expression unreadable. “Update on the inventory recovery?”

Anton spoke. “We shipped the recovery package Sunday night. 1,947 players got their inventory back from transaction logs. The other 2,900 are permanent losses. They’re getting compensation — €35 in premium currency plus exclusive items.”

“App Store rating?”

“Recovering,” Claudia said. “2.4 stars now. Slowly climbing. We issued a public apology, compensated affected players, and paused all marketing spend. Estimated revenue loss for February: €47,000.”

Lukas nodded slowly. “And the root cause?”

Silence.

Katja finally spoke. “Database migration deployed without review during compressed timeline. Underlying causes: no staging environment, insufficient backup strategy, pressure to ship regardless of identified risks.”

“Who’s responsible?”

More silence.

Anton raised his hand. “I wrote the migration. I own it.”

“You wrote it under time pressure I created,” Lukas said quietly. Everyone looked up, surprised. “Katja escalated the inventory risk a week ago. I overrode her. This disaster happened because I prioritized launch date over development concerns.”

The floor was dead silent.

“Moving forward,” Lukas continued, “we’re implementing mandatory code review for all database migrations. Hassan gets budget for proper staging environment. And we’re hiring a second DevOps engineer immediately.”

Hassan spoke carefully. “That’s good. But it doesn’t fix the core problem.”

“Which is?”

“We keep saying yes to everything. 147 priorities, all marked critical. Teams working 60-70 hour weeks for three months. People burning out. This inventory disaster is a symptom. The disease is we’re trying to do too much too fast with too few people.”

Lukas was quiet for a moment. Then: “Noted. Katja, let’s discuss capacity planning this afternoon.”

He left.

The standup dissolved. People drifted back to their desks, the crisis not quite resolved but at least temporarily contained.

Mariana sat at her desk, staring at her laptop. The recovery code was deployed. The compensation was sent. The players were angry but slightly less angry. The App Store rating was slowly recovering.

Everything was back to normal.

Which meant nothing had actually changed.

Her phone buzzed. Elif.

Elif YılmazElif Yılmaz Coffee? Need to talk.

Mariana SantosMariana Santos When?

Elif YılmazElif Yılmaz Now. Café down the street. My treat.

Mariana grabbed her jacket. As she headed for the elevator, she passed Katja’s office. The CTO was on a call, gesturing with one hand, stress visible even through the glass.

Trying to fix a system that didn’t want to be fixed.

Mariana wondered how long Katja would last before she burned out too.


Next Episode: "The All-Hands Disaster" Lukas calls an emergency all-hands meeting Monday morning. Nine department leads. One brutal interrogation. Everyone blames everyone else in a circular firing squad. And Katja realizes: nobody actually knows what's happening across departments. They're all flying blind.
×
×