Every documentation team inherits a graveyard. Some tombs are wiki pages last edited in 2017. Others are PDFs that describe a UI that hasn't existed for two release cycles. The usual fix is to add a warning banner: "This page may be outdated." But banners don't fix broken instructions. They just shift blame.
At golemforge.top, we edit legacy docs daily. We see the same pattern: a doc that was once accurate becomes a liability. New hires follow it and break staging. Engineers stop updating it because 'nobody reads it anyway.' But the page still ranks, still gets linked from support tickets, still confuses someone every week. That's technical debt — invisible, unmeasured, but real.
Where Legacy Docs Fester: Real-World Context
The abandoned wiki syndrome: when old docs become liability
Engineers ignore wikis on purpose. I have watched teams treat their own documentation like a cursed archive—pages that might contain truth but probably don't, so nobody checks. The pattern is predictable: someone writes a setup guide during a sprint two years ago, the architecture shifts three times since, and now that page is a landmine. New hires follow it, fail, and learn to ask Slack instead. That Slack channel then becomes the real documentation, unsearchable, unstructured, and invisible to anyone not already in the room. The wiki stays up, accumulating views from desperate souls, but it breeds distrust faster than knowledge.
The catch is that nobody deletes old pages. Deleting feels risky—what if someone somewhere still references this? So the junk piles up. I once worked on a project where 40% of the internal docs described systems that had been deprecated for over a year. The team knew. They just couldn't bring themselves to pull the trigger. That's debt. Not theoretical, not abstract—it's pages people click, waste time on, and then curse.
Copy-paste rot: how small inaccuracies multiply across pages
One wrong port number, copy-pasted into six guides, creates six broken workflows. That's how it starts—someone updates a config file but not the doc, a junior engineer copies the example verbatim into a readme, and suddenly the error spreads like a virus. I have seen a single stale API endpoint description corrupt three onboarding documents, two troubleshooting runbooks, and a client-facing FAQ. Nobody catches it because the page titles differ. The fix seems small. But multiply that by twenty pages across five repos, and you're spending two days verifying things you already knew.
Most teams skip this: they treat documentation updates as optional cleanup rather than core maintenance. The result? Engineers stop trusting the docs, then stop writing them, then complain the project has no guidance. It's a self-fulfilling cycle. And the rot accelerates—because every new page built on shaky info just compounds the error.
— senior engineer reflecting on a migration gone sideways
Orphaned guides: docs that outlive the system they describe
What happens when a microservice gets retired but its deployment guide stays online? Or when a CLI tool gets rewritten but the old flag references remain searchable? You get orphaned guides—dead pages that rank high in internal search because they have age and links, but lead nowhere useful. The worst part? They look legitimate. They have screenshots, code blocks, even update timestamps from automated CI runs that touched the metadata but not the content.
The sustainability case against legacy docs isn't about nostalgia or laziness—it's about time sinks. Every hour a developer spends debugging a doc that describes a non-existent system is an hour stolen from real work. That sounds fine until you realize your team loses two to three days per quarter per person on this noise. For a team of ten, that's a sprint and a half wasted. Annually. On pages nobody bothered to archive. Or freeze. Or flag as defunct.
You don't need a rewrite of everything. But you need to stop pretending the graveyard is a library.
Two Myths That Keep Bad Docs Alive
Myth 1: Old docs are better than no docs
This lie survives because it sounds pragmatic. A stale architecture diagram is still a diagram, right? Wrong order. Bad docs don't just waste time—they actively misdirect. I once watched a team spend three days debugging a pipeline failure only to discover the 'canonical' setup guide referenced a database version decommissioned eighteen months earlier. That's not documentation. That's sabotage wearing a helpful face.
The catch is visibility. Old docs sit in search results, in bookmarks, in Slack pins. New hires don't know what's rotten. They trust the artifact because it has the company logo and a last-modified date from last year. So they follow the steps, hit a wall, blame themselves, and never report the gap. The doc survives another quarter, poisoning one more onboarding cycle. Meanwhile, the team that 'maintains' it feels virtuous—they didn't delete anything.
Trade-off real: keeping zombie docs costs implicit trust you never measure. Every wrong answer buried in surviving text trains your engineers to stop reading documentation at all. They'll ask a coworker instead. They'll guess. They'll reverse-engineer the running system and never write down what they found. The doc becomes a ceremonial object—referenced in tickets, never in decisions.
'We kept the old deployment guide because removing it felt worse than keeping it. Six months later, nobody could tell me which parts were still true.'
— senior platform engineer, post-incident retrospective
That's the real damage: the choice isn't 'old docs versus no docs.' It's 'documented lies versus clean space you can fill with truth.' Most teams choose the lie because deleting feels like admitting failure. It isn't. Purging broken content is the first sustainable act of documentation hygiene.
Field note: editing plans crack at handoff.
Field note: editing plans crack at handoff.
Myth 2: Rewriting is too expensive — just patch it
Patch culture sounds efficient until you count the accumulated patches. One sentence tweak. One deprecated flag replaced. One 'note: this section may be outdated' slapped on a page that clearly needs rewriting. Each patch costs ten minutes. Ten patches cost an afternoon. A hundred patches cost a sprint—and you still have a Frankenstein document held together by disclaimers.
The math most teams skip: patching a fundamentally broken document never reduces the mental load on the reader. They still have to triangulate between the original content, the three inline corrections, and the two conflicting footnotes added by different authors across different quarters. What usually breaks first is confidence. The reader stops trusting any part of the page, including the parts that are still accurate. You've preserved coverage while destroying utility.
I've seen this pattern in legacy API references especially. A team keeps appending 'deprecated' badges to endpoint descriptions instead of deleting the section and linking to the replacement. The page grows wider, the scroll depth increases, and every reader must perform a manual diff between what's struck-through and what's not. The cost of that cognitive friction across fifty engineers over two years easily exceeds the cost of a focused two-day rewrite—but nobody tracks that invisible tax.
Rewriting feels expensive because it demands a concentrated block of attention. Patches feel cheap because they're small. But small actions accumulate into large debts. The honest question isn't 'can we afford to rewrite?' It's 'can we afford the compounding confusion of not rewriting?' Most teams answer by procrastinating. They patch one more time. The doc survives. The reader loses again.
Rewrite Patterns That Actually Work
The 'scorched earth' rewrite: when to delete and start from scratch
Sometimes the only honest edit is rm -rf. I have watched teams spend three sprints trying to polish a 2016 installation guide that assumed Java 8 and a bare-metal server. Every fix broke something else. The Scorched Earth pattern works when the doc is structurally unsalvageable—wrong audience, dead technologies, contradictory instructions on the same page. You delete everything. Then you write one page that replaces fifty. The trade-off is brutal: you lose institutional memory captured in the margins of those old pages. That one comment from a customer engineer who flagged a rare race condition? Gone. Mitigate it by archiving the old site to a static ./legacy/ directory before you delete. Nobody visits it, but you sleep better.
The catch is psychological. Teams freeze because deleting feels like admitting the original work was worthless. It wasn't—it was just written for a company that no longer exists. Do Scorched Earth only when the doc has fewer than six monthly views and the support team has stopped linking to it. Even then, prepare for one angry email from the engineer who wrote the original. That hurts. But you'll recover faster than from another year of incremental rot.
The incremental rewrite: carving out a single page at a time
Most teams land here by exhaustion. You can't delete the whole thing—regulatory compliance, SLAs, a VP who remembers "the docs were perfect in 2020." So you pick one page. The onboarding flow, because every new hire asks the same three questions. Or the troubleshooting page, because support tickets cite it as the source of confusion. You rewrite that page in isolation, ship it, measure whether time-to-resolve drops, then pick the next. This pattern lets you keep the old docs live as a fallback—no catastrophic failure if the rewrite misses something.
What usually breaks first is style. You end up with a pristine, well-structured page sitting next to a 3,000-word wall of text, and readers suffer whiplash. The incremental rewrite needs a style guide—even a rough one—enforced per page. Otherwise your "rewrite" becomes a patchwork quilt of inconsistent voice. One team I joined had three different command-syntax conventions on three consecutive pages. Users didn't complain; they just stopped reading the docs entirely.
The template-driven rewrite: enforcing structure across old content
Wrong order. Most teams try template-driven rewrites first, because it feels efficient. They create a beautiful template with required sections: Overview, Prerequisites, Steps, Troubleshooting. Then they force every legacy page into that shape. The result? Pages that technically pass the template check but contain placeholder sentences like "Enter your API key here" with no example key, no link to key generation. Template-driven only works if you already have a team that cares about filling the template honestly. It fails when people treat the template as a checkbox.
The smart play: use the template as a lint, not a mold. Define required fields (Objective, Input, Output, Known Gotchas) but allow a "Not applicable" field for pages that genuinely don't fit. Enforce it with automated checks in CI—if a page lacks an Objective line, the build warns you. No manual review bottleneck. The trade-off is overhead: building the template, writing the lint rules, wiring it into your build pipeline takes two weeks. Two weeks where you could have rewritten four pages outright. That said, once the template runs, it catches drift before drift becomes debt. Most teams don't think that far ahead. They should.
'The template never saves you from bad writing—it only makes bad writing consistently formatted.'
— overheard at Write the Docs Portland, 2019
Anti-Patterns: Why Teams Revert to Old Docs
The 'Just Add a Note' Trap
Every rewrite starts with good intentions. Then a stakeholder pings Slack: "Quick one — can you add a note about the edge case we discovered last sprint?" Harmless, right? It's one line. You drop it in, push the draft, and suddenly the fresh doc carries the same scar tissue as the old one. I've watched teams gut entire sections, only to re-insert every deprecated config flag under "Important Notes" because nobody wanted to say no. The trap isn't laziness — it's politeness. That single note becomes three. Then a sub-note. Then a warning block with italicized text so dark it's unreadable. Six weeks later, the rewrite mirrors the original mess, just with newer dates. The catch is that a note feels faster than auditing the upstream code. But every unverified insertion is a time bomb: it kills trust in the new doc before it launches.
The Perfectionist Rewrite That Never Ships
Some rewrites die by a thousand scope-creep commits. A team decides the old docs are "too informal" — so they invent a custom style guide, diagram every data flow, and insist on four review cycles per paragraph. That approach sounds thorough. In practice, it stalls production for three months while engineering moves on without documentation. The worst part? The final product is pristine — and already wrong. The codebase shifted during the rewrite. So the team faces an impossible choice: ship an outdated beauty or start over. Most freeze. They revert to the original bad docs because that mess at least has the right examples, even if the structure stinks. A perfect doc that never ships is more damaging than a mediocre one that does — it creates a vacuum where tribal knowledge becomes the only authority.
The Blind Migration: Moving Content Without Auditing Accuracy
This is the silent killer. A team copies-and-pastes the old doc into a new template, fixes formatting, and calls it a rewrite. No verification. No fact-checking against the current code. I saw a startup do this with their API reference — the "new" doc still referenced a deprecated endpoint that had been dead for six months. When customers hit the 404, trust evaporated. The blind migration feels efficient; you're preserving institutional knowledge, right? But stale content wrapped in fresh CSS is still stale. You've just made it easier for people to trust bad information. The only defensible migration requires a line-by-line audit: test every code sample, check every CLI flag, validate every curl command. Most teams skip this because it's boring and slow. That's the exact moment the rewrite becomes a liability.
Not every editing checklist earns its ink.
'A rewrite that doesn't confirm accuracy is just new paint on a rotten joist.'
— Lead technical writer, infrastructure observability team
Not every editing checklist earns its ink.
Honestly—auditing hurts. I've done it. It forces you to read the old garbage you swore you'd never touch again. But skipping the audit guarantees that your team will revert within two sprints. Not because the new doc is ugly, but because someone will find one wrong command and declare the whole effort unreliable. That single crack is enough to push everyone back to the wiki graveyard.
What usually breaks first is not the formatting — it's the trust. Once you lose that, the old doc becomes the "source of truth" again, no matter how tangled. The fix is brutal but honest: let the rewrite ship incomplete rather than inaccurate. Ship the sections you've verified. Mark the rest as "needs review" and add a last-reviewed date. That transparency beats a perfect facade every time. Your next move this week? Pick three paragraphs from your current rewrite and run the actual commands yourself. If they fail, you've found the rot. If they pass, you've earned one small pocket of trust you didn't have yesterday.
Maintenance Drift: The Hidden Cost of Do Nothing
“We knew the docs were bad. We just didn't realize they were costing us forty hours a week until someone actually measured it.”
— engineering lead, mid-market SaaS migration post-mortem
Time-to-answer: the metric that climbs as docs age
Most teams track deploy frequency, maybe error budgets. Almost nobody tracks how long a developer spends guessing before they find the right answer in the docs. That gap widens silently. I once consulted for a team whose internal wiki claimed a service still used Redis 3.2 — they’d migrated to Valkey nine months earlier. Every new hire burned half a day tracing phantom incompatibilities. That’s not a documentation problem. That’s a tax. A recurring, compounding tax that you pay every single time someone opens a page and has to verify whether the content is true. The worst part? Nobody captures this number. It stays invisible until a manager asks “why did that feature take three extra days” and the honest answer is “because I didn’t trust the docs enough to copy-paste that config block.”
Onboarding friction: how stale docs slow new hires
The cost compounds brutally. Think about your onboarding sequence. If you’re lucky, a senior engineer runs a session. If you’re normal, the new hire gets a README that references a CI pipeline that was decommissioned in 2022. They spend the first week building mental models around dead infrastructure. That’s worse than having no docs at all. No docs force you to ask questions. Stale docs give you false confidence — you’ll try the wrong thing, fail, blame yourself, then ask anyway. You’ve wasted both confidence and time. One fintech team I worked with found that their ramp-to-productivity window for backend engineers was 6.2 weeks — almost double the 3.5-week target. The root cause? A 140-page “developer handbook” that hadn’t been touched in eighteen months. They froze it. Productivity went up.
Support load: when docs generate more tickets than they close
Here’s the cruel irony: bad docs don’t just waste time, they create work. Every outdated error code, every missing prerequisite, every “see the API reference” link that 404s — those produce tickets. Real tickets. Escalated, billed, tracked tickets. I have seen a team of four support engineers spend 60% of their week answering questions that a current, concise troubleshooting guide would have resolved in thirty seconds. That’s roughly 1,200 hours a quarter. At a blended loaded rate of seventy-five dollars per hour, you're paying ninety thousand dollars a year because the docs lie. That’s not a cost of doing business. That’s a leak. And it only grows. Every version bump, every flag rename, every deprecated endpoint widens the gap between what the docs say and what the system does. The decision to ignore it's itself a decision — a choice to keep the leak open.
You can’t fix what you won’t measure. This week, pick one page. The one your team sends to new hires most often. Track how many follow-up questions it generates. You might not like what you find. But at least you’ll know the real price of doing nothing.
When Freezing Is Smarter Than Rewriting
Deprecated systems: mark as frozen, don't rewrite
When a product line is sunset next quarter, rewriting its docs is a gift you give nobody. I have watched teams burn two sprints polishing documentation for a system the company already stopped selling. Misery loves company—but not that kind. The move here is simple: slap a prominent 'Frozen' banner on the page, timestamp it, and walk away. The catch is that your team must agree on what 'deprecated' means. A product in maintenance-only mode still gets bug fixes. A product with zero active deployments? That's a corpse. Don't perform CPR on a skeleton's manual. Freezing preserves the truth as-of-date. Rewriting introduces new errors into a system nobody tests anymore—and that's worse than outdated docs. It's actively misleading.
Low-traffic pages: the 10-view threshold
Most teams skip this: pull your page analytics and sort by views. That page explaining a workaround for a bug that was patched three years ago—sixty-two views total, ever. Rewriting it's a vanity project. I use a simple rule: if a doc gets fewer than ten page views per quarter, freeze it. You'll free up editorial capacity for the docs that actually cause daily friction. The trade-off is real—some obscure pages are critical for a tiny but vocal audience. The trick is to survey those ten viewers before freezing. Send a one-question email: 'If this page disappeared tomorrow, would you miss it?' Four yeses means keep it alive. Two or fewer? Archive it with a redirect to the product's current homepage.
Freezing is not abandonment. It's admitting that some documents serve their purpose by staying exactly where they're, exactly as they're.
— Lead technical writer at a logistics platform, explaining their 'publish & walk away' policy for legacy API docs
Historical reference: docs that only exist for audit trails
Regulatory compliance, internal post-mortems, contractual evidence—some docs are preserved for legal reasons, not reader usefulness. Rewriting them introduces a chain-of-custody problem: the new version might omit a detail an auditor needs next year. The smarter move is a strict 'read-only' label, a locked PDF, and a warning that the content reflects past implementation. What usually breaks first is well-meaning editors who 'fix' a typo in a frozen document. That hurts—because the typo might have been deliberate in the original specification. We fixed this by making frozen docs require two sign-offs to edit: the original author and a compliance officer. Nobody requests that approval. Which is exactly the point.
One pitfall: teams confuse 'historical' with 'embarrassing.' An old doc that describes a terrible API design isn't there to shame anyone—it's there to prove that the decision was documented at the time. Rewriting it to sound better actually undermines the audit trail. Your next action this week: identify three docs in your archive that exist purely for audit reasons. Add a 'Frozen — Historical Reference Only' header to each. Then close the editor tab. You're done with those pages.
FAQ: Open Questions Nobody Answers Honestly
How do I convince my manager a rewrite is worth it?
You probably can’t—not with a single slide deck. Most managers hear “rewrite” and mentally calculate six months of zero visible output. That’s fair. The trick is to stop selling the rewrite and start selling the *cost of not rewriting*. Pull a support ticket. Pick one where a developer spent 45 minutes decoding a deprecated function because the docs still describe v1.3. Multiply that by every new hire, every late-night deploy, every time someone mutters “I think this is wrong but the docs say…” That number is real money. Managers trust direct math over narrative.
The catch is that maintenance budget often lives in a different bucket than feature budget. Your manager can approve a “documentation hygiene sprint” without calling it a rewrite. Call it a two-week experiment: rewrite the five pages that cause the most Slack questions. Measure the drop in interrupt pings. Show the data. Then ask for week three.
One team I worked with framed the rewrite as a “compliance gap close”—the old doc contradicted the live API for three endpoints. Legal nodded. Engineering budget appeared. Wrong reason, same result. Honestly—
“If you wait for the cost-benefit spreadsheet to turn green, the docs will rot into folklore. Ship the first fix, then show the spreadsheet.”
— senior engineer, infrastructure team
Should we rewrite everything or just the top 20 pages?
Neither—not if “top 20” means your analytics dashboard, which counts traffic from bot crawlers and people who clicked the wrong link. Rewrite the pages that hurt the most when they’re wrong. That’s rarely the homepage. It’s the “reset password” flow that silently fails. It’s the page where every third support ticket starts with “I followed the docs and now my account is locked.” Pick for pain, not for page rank.
A full rewrite is a trap in disguise. You’ll spend 80% of your energy on the 20% of pages nobody reads, because finishing a massive batch feels productive. It isn’t. The real work is the seam between old and new—the moment a user lands on a rewritten page, follows a link, and hits a wall of untouched 2019 prose. Partial rewrites create consistency debt: two different voices, two different levels of detail, two different promises about what the product does. That hurts more than bad docs alone.
Better approach: rewrite one complete user journey—install, first action, error recovery—and freeze the rest. Then let the frozen pages rot in a visible archive folder with a banner: “This guide is outdated. Use the newer version here.” Users self-select. Pressure builds to expand the clean zone. That beats a grand plan that stalls after week three.
What if the old doc is technically accurate but badly written?
Then you’ve got the worst kind of debt: correct information that nobody can act on. Accuracy without readability is a locked door with the key visible through the glass. You know the answer is in there, but extracting it costs fifteen minutes and a headache. Over time, the team builds workarounds. They ask the senior dev. They guess. They write their own notes on a Confluence page that will also rot. The accurate doc becomes a reference nobody references.
The trap is assuming that surface-level polish—better headings, a table of contents, slightly shorter sentences—solves the problem. It doesn’t. The core issue is structural: the doc was written to prove correctness, not to guide action. Fixing that means reordering content around the user’s sequence of decisions, not the system’s internal logic. That often requires cutting beloved paragraphs. That hurts the author who wrote them. You’ll get pushback.
What usually breaks first is the error-handling section. Accurate but bad docs explain cause and effect in abstract terms: “If the connection fails, verify the port configuration.” Good docs give you the exact terminal command to run and what the output should look like when it works. That’s not a copy edit. That’s a rebuild. If the original author pushes back, ask them to watch one new user try to use their page. Uncomfortable. Convincing.
Try this week: find one page that scores high on accuracy but low on clarity. Add a single “Quick Fail” callout at the top—a three-step checklist that bails the user out of the most common mistake. Don’t touch the rest of the page. Measure whether support tickets referencing that page drop. If they don’t, it’s probably not an accuracy problem. It’s a trust problem.
Next Experiments: What to Try This Week
Audit one page with the 'time-to-answer' stopwatch
Pick a page your team dreads most—the config reference nobody updates, the setup guide everyone skips. Open it. Now ask a new hire (or yourself, if you're honest) to perform one concrete task: find the install command, locate the timeout setting, or resolve a common error. Start the stopwatch. The goal isn't speed; it's dead reckoning. If that answer takes more than ninety seconds, the page is dragging technical debt forward. I have seen teams shave four minutes off a single procedure just by moving the default values into a table. The catch—people fixate on content quality first. Don't. Measure seconds wasted first. That number is your debt balance. Write it down. Then decide if rewriting that page pays better interest than the next one.
Most teams skip this because it feels crude. Wrong order. A stopwatch is less flattering than a content audit, but it surfaces the exact friction point—and that's what you fix. One page. One timer. One honest failure.
Add a 'last verified' badge with a real date
Drag a text box onto the page template. Write 'Last verified:' followed by today's date. No automation, no 'automatically updated' lie—just a static date that someone must manually bump. Then set a calendar reminder for sixty days. That's it. The badge does two things: it signals to readers that the page has a shelf life, and it forces you to touch the document again before the date goes stale. The pitfall? Teams slap on a badge and think the job is done. No—the badge is a confession. 'We haven't checked this yet.' If the date drifts past ninety days, you have to choose: update or archive. I have watched entire documentation repos shrink by a third inside six months because the badge made neglect visible. That hurts. But it beats pretending everything is current.
One warning: don't add badges to pages you plan to freeze (see section six of the article). A badge implies active maintenance. For frozen docs, use a 'Snapshot taken' label instead. Different signal, different trust contract.
Delete one orphaned page and watch for complaints
Find a page with zero internal links pointing to it—your site analytics or a simple grep will reveal these. Delete it. Don't redirect. Don't archive. Just remove the content. Then wait seven days. The trick is learning what breaks. If nobody screams, you just cut dead weight. If someone does scream, you learn exactly who depends on that page—and that knowledge is worth more than the page itself. A single support ticket that says 'I used that page' is actionable intelligence. It tells you where to focus the next rewrite. Most teams freeze when they find orphaned content, afraid to lose something important. But holding everything because one thing might be valuable is how orphan graveyards grow.
'We deleted five pages nobody touched. One customer complained—turns out it was his only entry point. We rewrote that page in two hours. The other four? Never came up again.'
— Senior docs engineer, cloud infrastructure team
The asymmetry is brutal: you risk a short-lived complaint for a permanent cleanup. That trade-off is the whole game. Try it this week with the smallest, loneliest page you can find.
Comments (0)
Please sign in to post a comment.
Don't have an account? Create one
No comments yet. Be the first to comment!