Pixel Spree enters Q3 planning under heavy pressure from leadership to deliver ambitious new features. Lukas pushes for aggressive growth targets, ignoring the infrastructure gaps that nearly caused disaster during the summer event. Katja and Stefan must team up to convince him that investing in operational realism and staging parity is not a distraction, but a prerequisite for survival. Meanwhile, the development team continues to adapt to TDD, finding that their new practices are put to the test when forced to estimate under pressure.

Lukas was in his element when he had a whiteboard marker in his hand.
He drew a thick, upward-sloping arrow across the right side of the board, ending in a bold circle labeled Q3: 2.5x DAU.
“This is where we need to be by September,” Lukas said, tapping the circle with the marker. “The summer event proved the demand is there. Claudia’s marketing campaigns are converting at record rates. But to keep them, we need features that drive retention. Real-time multiplayer lobbies. Global matchmaking. A live tournament system.”
He slapped three large, neon-pink sticky notes onto the board.
Katja didn’t look at the pink notes. She was looking at her laptop, where the Navigator dashboard showed a different set of numbers.
“Lukas,” she said, her voice quiet but carrying that flat, unyielding tone she used when she was about to talk about physics. “We barely survived last weekend. Hassan’s connection pool fix and Mariana’s cache invalidation tests are the only reasons the servers didn’t melt. We don’t have the infrastructure to support global matchmaking, let alone live tournaments.”
“We survived,” Lukas said, turning to face her. “That’s the point. The team reacted. We patched. That’s what live ops is.”
“No,” Katja said, closing her laptop with a soft click. “That’s what firefighting is. Live ops is supposed to be a controlled burn, not a three-alarm emergency where my lead backend developer is writing cache tests at midnight on a Tuesday.”
Stefan watched Lukas’s jaw tighten. He’d seen this dynamic in a dozen studios: the product lead chasing the next growth milestone while the engineering lead tried to explain that the foundation was already cracking.
“We have to grow, Katja,” Lukas said, his voice dropping an octave. “The board is looking at our Q2 numbers. If we don’t show a clear path to retention in Q3, the next funding round is going to be painful. We can’t spend three months refactoring.”
“It’s not refactoring,” Stefan said, pushing off the window sill. “It’s operational realism. You’re planning a high-speed race on a track you haven’t paved yet.”
Lukas turned to him. “We paved it. We have a staging environment. We have load testing.”
“You have a staging environment that doesn’t mirror production,” Stefan said. “And your load testing is a script that runs against a single database node with simulated data that doesn’t match real player behavior. That’s not a track, Lukas. That’s a drawing of a track.”
Lukas looked at the pink sticky notes, then back at Stefan. “We don’t have the luxury of waiting. We need to estimate these features. If the team says they can do it, we do it.”
“And if they’re estimating under the assumption that the track is paved?” Katja asked.
“Then we’ll find out during the estimation session,” Lukas said. He capped the marker. “Tuesday afternoon. Let’s see what the developers actually say.”
The backend team’s corner of the floor was hot. The afternoon sun was hitting the glass facade of the building, and the portable fans were mostly just moving the warm, coffee-scented air around.
Mariana was staring at the Jira ticket for Global Matchmaking.
“This is a joke, right?” she said, looking up at Stefan.
“Lukas is very serious about it,” Stefan said.
“It’s a three-month project on its own,” Mariana said, tapping her pen against the desk. “If we write tests first, design the schema properly, and handle the edge cases—split-brain scenarios, regional latency, matchmaking queues—it’s twelve weeks of solid work. And that’s assuming we have a stable database to write to.”
“We don’t,” Sofia said quietly. She was looking at the database schema on her second monitor. “The current matchmaking logic is hardcoded to a single regional database. If we go global, we need read replicas in three regions. We need to handle replication lag. If we don’t, players will get matched, but their inventory states won’t sync in time. They’ll lose their items.”
“So we pad the estimate,” Anton said, spinning his chair around. He had a half-eaten apple in one hand and a stylus in the other. “We tell Lukas it’s a forty-point ticket. He screams. We negotiate down to thirty. Then we build the simplest, dirtiest version that doesn’t crash on his phone, and we let Hassan deal with the replication lag in production.”
Mariana glared at him. “No. We’re not doing that anymore, Anton. We spent all of last week fixing dirty code because we didn’t write tests first. I’m not going back to Friday night deployments where we pray the database doesn’t corrupt.”
“TDD is nice when you’re writing pure functions, Mariana,” Anton said, taking a bite of the apple. “But when Lukas wants a tournament system by August, you don’t have time for theology. You write the code, you ship it, and you pray.”
“That’s not theology,” Stefan said, leaning over the partition. “That’s risk management. If you estimate the feature without estimating the infrastructure work required to make it safe, you’re lying to Lukas. And more importantly, you’re lying to yourselves.”
He pulled a dry-erase marker from his pocket and drew a small grid on the glass partition.
“Let’s visualize the dependencies,” Stefan said. “To build Global Matchmaking, what do you need first?”
“Read replicas,” Sofia said.
“And to test read replicas?”
“Staging parity,” Mariana said. “We can’t test replication lag on a local machine. We need a staging environment that actually mirrors the multi-region setup.”
“And how long does it take Hassan to build that staging environment?” Stefan asked.
The room went quiet. The only sound was the hum of the server rack in the corner and the distant rattle of the U-Bahn outside.
“Hassan is already working sixty hours a week,” Mariana said, her voice dropping. “If we ask him to build a multi-region staging environment while maintaining the current live ops, he’ll quit. Or collapse.”
Anton looked at the grid on the glass. The smirk was gone.
“So the estimate isn’t thirty points,” he said. “It’s the entire infrastructure.”
“Exactly,” Stefan said. “Now let’s put that on paper.”
“This is unacceptable,” Lukas said.
He didn’t scream, but the vibration in his voice made the glass of water on his desk ring.
“I asked for estimates on three features. You’ve handed me a proposal to spend the first six weeks of Q3 building a staging environment and configuring database replicas. That’s not a roadmap, Katja. That’s a strike.”
“It’s a reality check,” Katja said. She placed the printed dependency graph on the desk between them. “Look at the red lines, Lukas. Those are the single points of failure. If we build the tournament system without staging parity, we are launching a feature that we cannot test under load. We will crash. Not 12% error rates like the canary launch. Complete, catastrophic database lock.”
“We can’t tell the investors we spent July building a staging environment,” Lukas said, pacing behind his desk. “They don’t care about staging. They care about features. They care about retention.”
“They’ll care when the retention drops to zero because the game is unplayable for three days,” Katja said.
“We can mitigate,” Lukas insisted. “We can launch in one region first. We can throttle the tournament entry.”
“And how do we test the throttling?” Stefan asked.
Lukas stopped pacing. He looked at Stefan, his eyes narrow. “We test it in production. Like we did with the canary.”
“The canary worked because we had a fallback,” Stefan said. “And because Hassan and Mariana worked thirty hours straight to write circuit breakers. You can’t run a business on heroics, Lukas. It doesn’t scale. Eventually, the heroes get tired and go work for companies that don’t ask them to burn their weekends to cover for bad planning.”
Lukas looked at the dependency graph. The red lines were thick, connecting Global Matchmaking to Staging Parity and Database Replicas.
“Is there no middle ground?” Lukas asked, his voice suddenly sounding very tired. “Can’t we build the features and the infrastructure in parallel?”
“No,” Katja said. “Because the developers need the staging environment to write the tests for the features. If they write the code first and we build the infrastructure later, we’re just repeating the same mistake we made with the summer event. We’ll have perfect code running on an imaginary track.”
Lukas sat down slowly. He stared at the paper for a long time.
“I need proof,” he said finally. “If I’m going to tell the board we’re delaying the tournament system, I need more than a dependency graph. I need undeniable evidence that the current setup will fail.”
Katja looked at Stefan.
“We can give you that,” Stefan said.
The operations room was the only place in the office that was cold. The air conditioning was cranked down to 18°C to keep the local test servers from overheating, and the hum of the fans was a constant, low-frequency vibration in the floorboards.
Hassan hadn’t shaved in three days. He sat in his ergonomic chair like he’d grown into it, his fingers flying across the keyboard.
“We simulated 100,000 concurrent users trying to join a tournament lobby simultaneously,” Hassan said, not looking up. “We used the actual traffic patterns from Saturday’s launch, but we scaled them to the Q3 target.”
He hit a key.
On the center monitor, a graph showed database connection latency. The blue line climbed steadily, then suddenly spiked vertically, turning a bright, angry red.
“There,” Mariana said, pointing at the spike. “That’s the connection pool exhaustion. At 65,000 users, the database stops responding to new connection requests. The application servers start queuing the requests, which causes memory usage to spike. Within ninety seconds, the entire cluster goes down.”
Lukas leaned closer. “But we increased the connection pool last week.”
“We increased it to 500,” Hassan said. “But the tournament system requires persistent connections for matchmaking. It’s not like a standard API call where you connect, read, and disconnect. Players stay connected while they wait for a match. At 100,000 users, we need at least 2,000 concurrent connections. The database CPU hits 100% before we even get close to that.”
“And the cache?” Lukas asked.
Mariana pulled up her terminal. “Here are the test results from the cache invalidation suite I wrote on Tuesday. Under tournament conditions, the cache invalidation rate is 94%. We’re essentially bypassing the cache entirely because player states are changing too fast. The database is getting hit with every single request.”
Lukas stared at the red line on the screen. It was flat at the top, representing a complete system freeze.
“How long would it take to recover from this in production?” Lukas asked.
“If we don’t have read replicas?” Hassan looked up, his eyes bloodshot. “Two hours to restart the cluster. Another hour to clear the queued transactions. And we’d probably lose about 5% of player progress data because of uncommitted transactions.”
Lukas was quiet. The cold air of the room seemed to settle on his shoulders.
“This is the evidence you wanted,” Katja said, appearing in the doorway. “We’re not guessing, Lukas. The data is telling us exactly where the wall is. We can either stop before we hit it, or we can hit it at full speed.”
Lukas stood up slowly. He looked at Hassan, then at Mariana, and finally at Stefan.
“Okay,” he said. “How do we present this to the board?”
The board meeting had lasted three hours.
Lukas had presented the slide deck himself. He hadn’t used the word “refactoring.” He’d used the term Operational Realism Initiative. He’d shown the dependency graph, the database latency spike, and the projected revenue loss from a three-day outage.
The board had approved the budget in twenty minutes.
“They didn’t even argue,” Lukas said, leaning back in his chair and staring at the ceiling. “They just looked at the red line on Hassan’s graph and asked if six weeks was enough.”
“Data is a great stabilizer,” Stefan said, wiping the last of the pink marker from the whiteboard. “When you show people the physics of their system, the arguments stop being about opinions and start being about constraints.”
Katja smiled, a real one this time, without the defensive edge she’d carried all week. “We bought ourselves six weeks of sanity. Hassan can build the staging environment. Mariana can write the load tests. We can actually pave the track.”
“But the pressure doesn’t stop,” Lukas warned, looking at her. “We still have to deliver the tournament system by September. The board expects us to hit that 2.5x DAU target. We’ve just shifted the risk from the launch to the execution.”
“That’s where we want the risk to be,” Stefan said, writing STAGING PARITY in green marker on the board. “Execution risk is something the team can manage with good practices. Operational risk is just gambling.”
He turned to Katja. “The team is ready. Mariana is already writing the test cases for the multi-region sync. Sofia is mapping the database schema. Even Anton was asking about how to write unit tests for the Unity matchmaking UI this afternoon.”
“Anton?” Katja asked, raising an eyebrow.
“He still claims it’s theology,” Stefan laughed. “But he wants to make sure his UI doesn’t look stupid when the backend replication lag kicks in. Sarcasm is his way of showing he cares.”
Outside, the Berlin sky was turning that deep, cool violet that only happens in mid-June. The streetlights along the canal were flickering on, and the sound of music from a nearby beer garden drifted through the open window.
Katja stood up and grabbed her bag. “I’m going home,” she said. “And I’m turning my phone off until Monday.”
“I highly recommend it,” Stefan said.
Lukas looked at the green notes on the board. “Six weeks,” he muttered. “Let’s make sure we don’t waste a single day of it.”
“We won’t,” Katja said.
She walked out, her steps lighter than they’d been in months.
Stefan watched her go, then turned back to the board. The green notes looked good in the evening light. They weren’t features. They weren’t flashy. But they were real. And for the first time since he’d arrived in Berlin, the team was building on solid ground.
Navigator — Katja Müller — 19 June 2026, 21:14
Q3 planning week. The hardest fight of the year, and we won it.
Lukas pushed hard for an aggressive feature roadmap — global matchmaking, live tournaments, real-time lobbies — without addressing the infrastructure debt we’ve been carrying since Q1. He wanted to believe the summer event’s survival meant we were ready for scale.
Stefan and I had to force the confrontation. We used the dependency graph to show how every single feature was blocked by our lack of staging parity and multi-region database replicas. But the turning point was the load test data. Hassan and Mariana simulated the Q3 traffic targets and showed exactly where the database connection pool would collapse. The red line on that graph was undeniable.
The board approved our ‘Operational Realism Initiative’ without a fight. We have six weeks dedicated to building a proper staging environment, automated load testing, and database read replicas.
Navigator signals from this week:
- 100% of backend commits included test files.
- Estimation accuracy improved as developers mapped dependencies explicitly on the glass partition.
- Hassan’s logged hours dropped to 42 hours this week — a massive improvement from the 60-hour weeks during the summer event.
- Anton is engaging with TDD, asking how to write unit tests for the Unity matchmaking UI to handle replication lag.
We’ve bought ourselves time and sanity. But the execution risk is high. We have six weeks to pave the track before we have to run the race. If we fail to build staging parity now, we won’t get another chance.
But for tonight, the phone is off.