Literary Fiction • Contemporary

The Ghost in the Codebase

After thirty years, Marcus discovers his entire codebase has been replaced by AI-generated equivalents. One last commit becomes his attempt to leave something human behind.

by Michael EakinsDecember 2, 202512 min read2,400 words
Mood: Bittersweet and contemplative
aiprogramminglegacyidentitytechnologyhuman connection

Marcus ran git blame on the authentication module he'd written three decades ago, expecting to see his name scattered through the commit history like old photographs. Instead, the terminal filled with usernames he didn't recognize: ai-refactor-bot, code-modernization-agent, dependency-updater-v7.

Not a single line bore his authorship anymore.

He scrolled through the file slowly, recognizing the logic beneath the new syntax, the same conditional branches he'd debugged at 2 AM in 1995, now wrapped in async/await patterns and type annotations that hadn't existed when he'd written it. His variable names persisted—authenticatedUserSession, saltedHashValue—but the surrounding code had been rewritten, optimized, modernized by algorithms that didn't sleep or doubt or remember the original programmer's intent.

The coffee in his mug had gone cold. Morning light filtered through his home office blinds the same as every workday for the past five years, since the company went fully remote. The same IKEA desk, the same two monitors, the same mechanical keyboard that had outlasted three laptops. Everything familiar, except the code.

He opened another file. Same story. And another. The pattern held across the entire repository: his commits replaced systematically over the years, each improvement made by increasingly sophisticated AI tools the company had adopted to "maintain velocity." The Git history showed his contributions as context—deprecated, superseded, refactored into oblivion.

Marcus was 58 years old and no longer existed in the codebase he'd built.


The Slack message arrived at 10:47 AM, three minutes after he'd closed the terminal in a haze.

Sarah Chen (Engineering Manager): Hey Marcus, got a few minutes for a sync?

He knew that phrase. "A sync" meant the meeting he'd been expecting since the last quarterly review, when his performance ratings had dipped into "meets expectations" for the first time in twenty years. He'd watched younger engineers implement features in hours that once took him days, their workflows powered by AI assistants that completed entire functions from comments.

His typing felt heavy as he responded: Sure, sending you a cal invite.

The video call opened with Sarah's carefully neutral expression, the one managers practiced for difficult conversations. Behind her, a wall of books about leadership and agility. He'd given her a few of those books when she'd joined the team six years ago, fresh from bootcamp and terrified of merge conflicts.

"How are you doing?" she asked, and he appreciated that she didn't pretend this was casual.

"I ran git blame this morning," Marcus said. "My name's gone. Thirty years of commits, and it's all been replaced."

Sarah nodded slowly. She'd probably prepared for this conversation, anticipated the objections, the hurt feelings. "The modernization bots have been aggressive. We needed the codebase on current frameworks for the security audit."

"I get it." And he did, intellectually. The code was better now—faster, more testable, less prone to the subtle bugs that crept into human-written edge cases. "But it feels like I've been erased."

"You haven't been erased, Marcus. The architecture is still yours. The system design, the data flow patterns, the way authentication integrates with session management—that's all you. The bots just rewrote the implementation."

"Ship of Theseus," Marcus said quietly.

"What?"

"The philosophical thought experiment. If you replace every plank in a ship, is it still the same ship?"

Sarah's expression softened. "Marcus, I need to talk to you about the Q4 reorganization."

There it was.

"The engineering leadership team has been discussing role evolution. The company's moving toward a model where AI agents handle most implementation. We need senior engineers focusing on architecture, system design, and working with stakeholders to define requirements." She paused. "We're creating a new Principal Architect track. It's a senior IC role, prestigious, good comp. We think you'd be perfect for it."

Marcus heard what she wasn't saying: the coding role he'd held for three decades no longer existed at the company. They were offering him a face-saving pivot into management-adjacent work—endless meetings about design docs and trade-offs, mentoring junior engineers on problems that AI would solve faster anyway.

"What if I don't want to be an architect?" he asked.

Sarah's pause lasted too long. "Then we'd need to discuss transition plans. The market's tough for senior individual contributors focused on implementation. Most companies have shifted to the AI-augmented model."

"So I become an architect, or I'm out."

"That's not—" Sarah stopped herself. "Look, you've given thirty years to this company. We want to make this work. But I can't pretend that implementation roles aren't changing. It's not just us. It's everywhere."


After the call, Marcus sat staring at his monitors. One displayed the codebase, the other showed his terminal history: thousands of commits, pull requests, code reviews. A Git log of his adult life.

He thought about Julia, his wife, who'd left seven years ago when his obsession with fixing a production outage had meant missing their anniversary dinner. "You love the code more than you love me," she'd said, and he hadn't been able to argue convincingly. The code had felt permanent in a way relationships weren't. You could always roll back a bad commit, refactor a messy function, fix what was broken.

Except the code wasn't permanent either.

He opened the company's AI coding assistant, the tool he'd been avoiding except when absolutely necessary. The cursor blinked in an empty file, waiting.

// Marcus Chen
// December 2, 2025
// Last commit

He didn't know what to write. A function? A class? A final flourish of human ingenuity before the tools made him obsolete? Everything he could write, the AI could generate faster, cleaner, with better test coverage and documentation.

His fingers rested on the home row—ASDF JKL;—muscle memory from typing classes in 1983. Back when computers filled rooms and programming meant punch cards and batch processing. He'd evolved through every wave: structured programming, object-oriented design, functional paradigms, agile methodologies, DevOps culture, cloud-native architectures. Each transition had felt revolutionary at the time. This one felt terminal.

The phone rang. His sister, calling from Seattle.

"Hey stranger," Karen said. "Still coding at all hours?"

"Actually, I might be done coding."

He explained the morning's revelation, the meeting with Sarah, the choice between architect or exit. Karen listened without interrupting—one of her talents that made her the good therapist she was.

"So what do you want to do?" she asked when he finished.

"I don't know. I feel like I don't know anything anymore."

"That's probably a good sign," Karen said. "Dad didn't know anything either when Boeing laid him off in '93. He was 55, been an engineer for thirty years, suddenly unemployable. Remember what he did?"

Marcus did remember. Their father had taken three months off, then opened a small woodworking shop. Made furniture by hand—chairs, tables, cabinets—each piece unique, imperfect, human. He'd been happier in those final fifteen years than Marcus had ever seen him during the Boeing decades.

"Dad could afford to walk away," Marcus said. "He had the pension, the severance. I've got mortgage payments and Julia's alimony and retirement accounts that won't be enough if I quit now."

"You could take the architect role," Karen suggested gently.

"And do what? Attend meetings while AI writes the code? Watch my legacy get replaced one module at a time until nothing human remains?"

"Maybe that's not what it means to leave a legacy."

Marcus sat with that thought, watching his reflection in the darkened monitor. When had he gotten so old? The gray hair, the reading glasses permanently perched on his head, the tired eyes of someone who'd spent three decades staring at screens.

"The code was supposed to last," he said quietly. "That's what we told ourselves, right? That software is permanent, that good code lives forever. But it doesn't. It rots and gets replaced and eventually you're just git blame history that no one bothers reading."

"So maybe," Karen said, "the code was never the point."


That afternoon, Marcus opened a new file in his editor. Not a work file. Something else.

# The Apprentice's Guide to Programming

## By Someone Who's Been Doing This Since 1995

Dear Future Engineer,

If you're reading this, you're probably learning to code in a world where AI
does most of the implementation. Good. That means you won't waste years
debugging off-by-one errors or tracking down memory leaks. Lucky you.

But here's what I learned in thirty years that no AI will teach you...

He wrote for three hours, fingers flying over keys with the old muscle memory, crafting not code but wisdom. The lessons weren't about syntax or frameworks—those changed every five years anyway. They were about why we build software, how to think about systems, what matters when you're designing something that will affect real people's lives.

He wrote about the 2003 outage that taught him the importance of graceful degradation. The refactoring disaster of 2011 that showed him technical debt isn't technical—it's human, the accumulation of rushed decisions and compromised principles. The mentoring relationship with Sarah that reminded him engineering was about people, not just machines.

The AI couldn't write this. It could mimic the form, generate plausible-sounding advice, but it couldn't know the terror of pushing to production at midnight or the satisfaction of fixing a bug that had puzzled everyone else or the quiet pride of watching a junior engineer you'd mentored land their first senior role.

By 6 PM, he'd written 10,000 words. Not code. Just human knowledge, passed down like craftsmen had always passed knowledge, through stories and examples and hard-won experience.

He published it to his blog—a domain he'd registered in 2003 and kept renewing despite posting maybe twice a year. Within an hour, a former colleague commented: "This is incredible, Marcus. I wish I'd read something like this when I was starting out."

Then another: "Sharing this with my team. The section about empathy in system design is exactly what new engineers miss."

Then more. Within a day, the post had been shared on Hacker News, Reddit, LinkedIn. Programmers from around the world commenting about their own experiences, their fears about AI, their gratitude for someone articulating what they'd felt but couldn't express.


Two weeks later, Sarah sent another meeting invite. Marcus joined the call expecting a follow-up about the architect role. Instead, she was smiling.

"Your blog post blew up," she said. "The leadership team read it. They want to talk to you about creating a new role: Senior Engineering Mentor. You'd work with new hires, run training programs, document institutional knowledge—basically do what you did in that post, but full-time."

Marcus felt something shift inside him, like a compiler optimization rearranging internal state. "Teaching?"

"Teaching, documenting, preserving the human knowledge that gets lost when AI writes all the code. Someone on the board called it 'organizational memory preservation.' I call it the Marcus Chen role."

He laughed, surprising himself. "I don't know the first thing about teaching."

"You just taught 50,000 engineers on the internet," Sarah pointed out. "I think you'll figure it out."


That evening, Marcus opened his codebase one last time. He navigated to the authentication module, the one that bore no trace of his original commits. He understood now that this was okay. Code was meant to evolve, to improve, to be superseded by better approaches. Clinging to it was like his father clinging to aerospace engineering when the world moved on.

His legacy wasn't in the code. It was in the engineers he'd mentored, the approaches he'd pioneered, the wisdom he could pass down. The human elements that AI could observe but never fully embody.

He created a new file in the repository:

# PHILOSOPHY.md

## Engineering Principles and Practices

This document captures the human reasoning and values that guide our technical
decisions...

Not code. Not documentation in the technical sense. Something else—the ghost of humanity persisting in a machine-written codebase.

He committed the file with a simple message:

feat: add engineering philosophy guide

The code will change. The principles shouldn't.

- Marcus Chen

Then he pushed to main, closed his laptop, and went to call his sister back. He had a lot to learn about teaching, and Karen would know where to start.


This story explores themes discussed in my article AI Agents Reshaping Engineering Teams and connects to my prediction about reasoning models becoming commoditized by 2027.