Featured image of post Chapter 2: The Comfortable Cage
Fiction Career Development

Chapter 2: The Comfortable Cage

Three years before the crisis, David settles into the comfortable rhythms of corporate life—the free lunch, the friendly coworkers, the slow erosion of thirty-seven dreams into guilty background noise.

Chapter 2: The Comfortable Cage

Three years earlier.

The badge beeps. Green light. David walks through TechCorp’s glass doors for the thousandth time.

9:47 AM. Seventeen minutes late. No one cares. The engineering floor doesn’t start until ten—“flexible hours,” they call it.

He looks like everyone else here. Button-down untucked, dark circles from scrolling too late, jeans that cost more than a week of groceries used to. The elevator reflects him back: indistinguishable.

Seventh floor. Open-plan. Long wooden tables, expensive coffee, kombucha on tap. Sarah from DevOps waves. He waves back. Everyone is nice here.

His monitor wakes. Three Slack channels. Two calendar invites. A pull request waiting for review.

He wrote that code three days ago. Six hours of work. A feature that lets users customize dashboard widgets. The analytics say 2% of users will touch it. But a competitor has it, so they need it too.

David reviews. Approves. Merges.

Somewhere, a server updates. A feature no one needs joins millions of others.

Alex texts: Lunch today?

David tries Thursday. Alex is in Seattle. Next week, then. Both know it won’t happen.

Slack: “Great Q3 launch! Hit 97% OKRs!”

Nights and weekends for that. Pizza boxes. “Crunch time.” They shipped an onboarding flow nobody asked for, backend tweaks nobody noticed.

His mother asks about houses. Will look this weekend, he lies. This weekend: sleep, takeout, the novel he never starts.

Noon. Sprint planning. “Prioritize Q4 roadmap. Discuss technical debt.”

Technical debt—code built fast and broken, never fixed. Just pile more features on top. It works. Makes money. Stock goes up. Everyone gets bonuses.

Kevin pulls him into a conference room. “You’re getting promoted. Senior Engineer. 15% raise.”

David’s stomach tightens.

Fifteen percent. Down payment in eighteen months. Expensive coffee without guilt. Parents proud. And harder to leave.

“Thanks,” he says.

“You’ll interview junior engineers too. We’re scaling.”

David wonders if he’ll recognize himself in them. The ones who think shipping code will feel different than college. Who think “making an impact” means more than optimizing conversion rates.

Through the glass wall: eighty people at desks. Headphones. Pair-programming. Laughter from the kitchen.

Good people. Smart people. Building someone else’s vision for salary and benefits.

David opens his Notes app. Past grocery lists to a document from two years ago: “Ideas.”

Thirty-seven entries. Startup concepts. Problems nobody’s solving. The last one from six months ago.

He hasn’t added anything since.

Sprint planning in fifteen minutes. He closes the app. Straightens his shirt.

The city sprawls below. How many people calculating the exact dollar amount that would make them stay?

How many winning?

At his desk: Jira tickets. “Implement A/B test for button colors.” “Refactor authentication module.” “Add logging.”

Necessary. Reasonable. Uninspiring.

He accepts them all. Joins the planning call. Camera off. Says just enough: “Sounds good.” “I can take that.” “Two days seems reasonable.”

For six hours he writes code. Tests. Refactors. The world falls away.

This is why he became an engineer. Not the meetings. The craft. Making something work beautifully.

Even if the thing being built doesn’t matter.


October becomes November.

The promotion is official. David’s new title appears in his email signature: Senior Software Engineer. His salary increases by $18,000.

His mother calls. “Your aunt heard about your promotion. She’s very proud.”

David sits in his apartment—the nice one he moved to six months ago. Floor-to-ceiling windows. In-unit washer-dryer. The kitchen has granite countertops he’s never cooked on.

“That’s nice,” he says.

“You don’t sound excited.”

“I am. Just tired.”

“You’re always tired.” Her voice shifts. Concerned. “Are you taking care of yourself?”

He looks around. Takeout containers on the counter from the past three days. He meant to throw them out. The apartment smells faintly of old Thai food and recycled air. When did he last open a window?

“Yeah, Mom. I’m fine.”

They talk for seven more minutes. She tells him about his cousin’s wedding. His father’s new glasses. The neighbor’s dog that barks at 6 AM.

David says “uh-huh” at the right intervals. When they hang up, he can’t remember a single detail.


November becomes December.

Holiday party at TechCorp. Open bar, catered food, a DJ playing music nobody dances to.

David stands near the appetizer table with Sarah and two other engineers. They’re talking about the latest reorg. Who got promoted. Who didn’t. The politics of it.

“Did you hear Chen applied for Staff?” Sarah says. “Third time.”

“He’s not going to get it,” Tom says. “Not political enough.”

They talk about Chen like he’s not a real person. Just a piece in the game. David eats a spring roll. It’s good. He eats another.

Kevin—his manager—walks over. Slightly drunk. Friendly. “David! There’s my senior engineer. How’s the new salary treating you?”

“Good. Thanks again.”

“You earned it, man. That authentication refactor saved us three weeks. Leadership noticed.”

Leadership noticed. David wonders who “leadership” is. Faceless VPs who read metrics. Who care about quarterly numbers. Who laid off eighty people last year to hit profit targets.

“Glad to help,” David says.

Kevin leans closer. Whispers conspiratorially. “Between us—I’m pushing for you to interview lead engineer candidates next year. Get you into the hiring pipeline. Good for your career.”

His career. The ladder. The next rung.

David nods. Smiles. Says thank you.

Kevin claps him on the shoulder and wanders off.

Sarah rolls her eyes. “Lead engineer interviews. Great, more meetings.”

“At least the pay bump is good,” Tom says.

They talk about pay for ten more minutes. RSU vesting schedules. 401k matching. Health insurance deductibles.

David excuses himself. Goes to the bathroom. Stares at himself in the mirror.

He’s wearing the same button-down he wore to his college graduation. It fit better then. His face looks older. Not in a good way. Tired. The fluorescent lights make his skin look gray.

When did he last feel excited about anything?

The question arrives without warning. He can’t answer it.

David washes his hands. The soap smells like fake lavender. Returns to the party. Stays another hour because leaving early would be noticed.

Drives home at 9 PM. The city is decorated for Christmas. Lights strung across buildings. Inflatable Santas. Everywhere, the performance of joy.


December becomes January.

David’s calendar fills. Q1 planning. OKR setting. One-on-ones with Kevin. Tech talks he doesn’t care about. An all-hands where the CEO talks about “exciting growth opportunities” while the stock price declines.

On January 17th, a Tuesday, something shifts.

It’s not dramatic. No lightning bolt. Just a moment that cracks something.

David is in a conference room. Fourth floor. Windows overlooking the parking lot. There are seven people in the meeting. The topic: whether to deprecate a legacy API that three customers still use.

The product manager—Jen, nice enough—argues they should keep it. “Three customers is three customers. We can’t just abandon them.”

The engineering director—Michael, not nice—argues they should sunset it. “It’s costing us maintenance hours. Three customers don’t justify the overhead.”

They debate for thirty minutes. Data gets pulled up. Spreadsheets. Customer lifetime value calculations. Engineering hour costs.

David sits quietly. Listening. Watching.

At some point, Jen says: “But what about the users? Don’t we have a responsibility?”

Michael doesn’t even pause. “Our responsibility is to the bottom line. That’s how we stay in business.”

The room nods. It’s the right answer. The practical answer.

David feels something cold settle in his chest.

He thinks about the three customers. Real people somewhere. Using this API in their products. Trusting that it’ll keep working. Now about to be deprecated because the spreadsheet says they’re not worth it.

The meeting ends. They vote to sunset the API. Jen will send the deprecation notice. Engineering will archive the code. The three customers will get six months to migrate.

David walks back to his desk. Sits down. Opens the code for the API they just voted to kill.

It’s not elegant code. Written five years ago by someone who left the company. But it works. And someone is using it.

He closes the file.

Opens his Notes app. Scrolls to “Ideas.”

Thirty-seven entries. He hasn’t looked at this in—what? Four months? Five?

The last entry is from September. Six months ago. “Micro-learning platform - adaptive flashcards.”

He reads through them. Some are stupid. Some might be good. All of them gathering dust.

David closes the app.

Checks his email. Seventeen unread. He processes them mechanically. Yes. No. Will circle back. Looks good.

At 4:47 PM, his mother texts: Your cousin is pregnant. You’re going to be a… second cousin?

David types back: Great. Congratulations to her.

But he thinks: I’m 28. My cousin is building a family. Alex just proposed to his girlfriend. Sarah is buying a house.

And David is—what? Comfortable. Successful. Moving up the ladder.

To where?

He doesn’t add a thirty-eighth idea. Doesn’t delete the thirty-seven. Just closes the app.

The screen goes dark. His reflection stares back.

He looks tired.


January becomes February. February becomes March.

David’s calendar stays full. The meetings blur together. Planning. Retrospectives. Design reviews. Coffee chats with junior engineers who think working here is exciting.

He does his job well. Ships code. Reviews PRs. Participates in discussions. Says the right things.

But somewhere—quietly, invisibly—something is dying.

It’s the part of him that once believed this work mattered. That building software was building the future. That solving technical problems was changing the world.

Now he knows: most problems aren’t worth solving. Most features aren’t worth building. Most meetings aren’t worth having.

But the salary is good. The benefits are good. His mother is proud. His father is relieved.

So David stays.

The golden handcuffs, tightening one day at a time.

On March 15th, he goes to lunch with a college friend. Marcus—different Marcus than high school. They meet at a Thai place downtown.

Marcus works at a startup. Terrible pay, long hours, uncertainty. He complains about it for twenty minutes. The broken deployment pipeline. The founder who keeps changing direction. The runway down to four months.

“But,” Marcus says, fork hovering over his pad thai, “at least I care about what we’re building. You know? Like, it might fail. Probably will. But I’d rather fail at something I care about than succeed at something I don’t.”

He looks at David. “You get it, right?”

David chews slowly. Swallows. “Yeah.”

But he doesn’t get it anymore. Or he does, and that’s worse.

When lunch ends, Marcus pays for both of them. “You can get next time. I know you’re probably saving for a house or something.”

David doesn’t correct him.

Walks back to the office. The badge beeps. Green light. The elevator to the seventh floor.

At his desk, he opens his Notes app without meaning to. Muscle memory. The list of thirty-seven ideas.

He hovers over the “+” button.

Thinks about Marcus. The startup that might fail. The certainty that failing matters if you care about what you’re failing at.

Thinks about the API they deprecated. The three customers who didn’t matter enough.

Thinks about sixteen-year-old David in a library. Hearing Jobs’s voice. Thinking there was another way to live.

He doesn’t add an idea.

Doesn’t delete them either.

Just closes the app. Returns to Jira. Picks up the next ticket.

At 7 PM he’s still at his desk. Most people have gone home. The office is quiet. Just the hum of climate control and distant keyboard clicks.

David saves his work. Closes his laptop. Stands up.

His lower back aches. How many hours did he sit today? Eight? Nine?

He walks to the window. The city sprawls below. March evening. Not quite spring. The light is fading.

Jobs’s voice echoes from ten years ago: Don’t let the noise of others’ opinions drown out your own inner voice.

David wonders if he still has an inner voice. Or if he traded it somewhere along the way. For salary. For security. For the look of relief on his father’s face when David said he got promoted.

He stands at the window for a long time.

The city below pulses with life. People heading home. To families. To partners. To lives that make sense.

David feels nothing about that. Not envy. Not contentment. Just—distance.

Like he’s watching through glass. Separate. Safe. Numb.

This is the cage. Not cruel. Just comfortable.

The kind you don’t notice until you’ve been inside it for years.

David picks up his laptop bag. Badges out. The badge beeps. Green light. A thousand times. Ten thousand.

How many more times will he hear that sound?

He doesn’t know.

But he knows he can’t stop. Not yet. The mortgage his parents want him to get. The wife they want him to find. The life they want him to build.

All requiring this. The steady paycheck. The career advancement. The responsible choice.

David drives home. Orders delivery. Thai food, ironically. Eats in front of his laptop.

The Notes app is closed. The thirty-seven ideas are sleeping.

Tomorrow he’ll wake up. Badge in. Do it again.

The comfortable cage.

Safe.

Shrinking.

Killing him slowly.


End of Chapter 2

© 2022 - 2025 Shane Zhang

All Rights Reserved