Why maintaining a codebase is so damn hard – with OhMyZSH creator Robby Russell [Podcast #207]

| Programming | February 13, 2026 | 11.9 Thousand views | 1:23:04

TL;DR

Robby Russell, creator of OhMyZSH, explains why software maintenance consumes nearly all development time, as engineers constantly navigate inherited technical decisions while organizations struggle with repository sprawl, orphaned code, and the risks of tacit knowledge walking out the door.

🔧 The Maintenance Reality 3 insights

Developers live inside inherited decisions

Most software work involves navigating constraints from predecessor choices, former self decisions, and existing architecture rather than building from scratch.

Greenfield development is statistically rare

Russell estimates developers spend 99% of their time maintaining existing codebases rather than starting new projects, even when building new features.

Maintenance extends beyond bug fixes

Adding features to existing systems constitutes maintenance because it requires working within established technical constraints and legacy architecture.

📦 Repository Sprawl & Orphaned Code 3 insights

Organizations accumulate abandoned repositories

Companies often maintain 80+ repositories where the majority are untouched for years, creating confusion about what is deployed, what is safe to archive, and what dependencies remain active.

Forking creates permanent hidden burdens

Teams frequently fork third-party libraries to patch urgent bugs, creating long-term maintenance responsibilities when those forks aren't merged back upstream or properly documented.

Code lacks clear ownership

When developers leave organizations, they often take irreplaceable tacit knowledge with them, leaving behind codebases that require forensic analysis to understand architectural decisions.

⚖️ Strategic Maintenance vs. Rewrites 2 insights

Rewrites risk institutional amnesia

Starting fresh underestimates the complexity embedded in production systems and often represents an expensive way to forget lessons learned from years of iteration.

Production complexity is invisible until lost

Teams routinely underestimate the time and energy invested in existing working systems, viewing rewrites as cheaper than refactoring until they rediscover edge cases the hard way.

Bottom Line

Treat maintenance as the primary job of software engineering by documenting architectural decisions and distributing knowledge across teams, rather than betting on risky rewrites or accepting accumulation of orphaned code.

More from freeCodeCamp.org

View all
Notion Workers – Full Tutorial 2026
1:21:00
freeCodeCamp.org freeCodeCamp.org

Notion Workers – Full Tutorial 2026

Notion Workers enable custom automations and external data integrations through code, but this tutorial demonstrates how AI tools like Claude Code and Codex allow non-developers to build and deploy three functional workers without traditional programming knowledge.

1 day ago · 7 points
Build Your Own OpenClaw Using Vercel, Composio, Supermemory
1:07:23
freeCodeCamp.org freeCodeCamp.org

Build Your Own OpenClaw Using Vercel, Composio, Supermemory

This tutorial demonstrates how to build a production-ready AI agent inspired by OpenClaw using Next.js and the Vercel AI SDK, integrating Composio for external tool access and Supermemory for persistent conversation learning, all deployable via Vercel with AI-assisted development in Cursor.

6 days ago · 10 points
Build a Self-Healing CI/CD Pipeline with AI
59:59
freeCodeCamp.org freeCodeCamp.org

Build a Self-Healing CI/CD Pipeline with AI

This tutorial demonstrates how to build a self-healing CI/CD pipeline that leverages N8N and OpenAI to automatically detect build failures, analyze error logs, generate code fixes, and open pull requests without manual intervention.

9 days ago · 9 points