
I’ve been reading the excellent (hardcover) of Dungeons & Dragons: Lore & Legends, which is both a cool book and an exercise in how to fit in multiple ampersands into your title. Videogames can still teach them a thing or two about obtuse naming, though! And yes, I’m looking at you, Kingdom Hearts HD 2.8 Final Chapter Prologue.
If you’ve ever rolled a saving throw and sat through a digital transformation roadmap presentation, congratulations! This one’s for you. It turns out fifty years of D&D is basically a worked example of technical debt, and once you see it, you can’t unsee it.
There’s a comment in Lore & Legends where they say that it’s the most played tabletop role-playing game, and they go to some lengths to show a little of the history. Most-played doesn’t mean perfect, and this is something Gygax and Arneson understood while fabricating it out of the whole cloth of a probably-70’s-influenced-hallucinogenic-lifestyle.
Let’s see what we can learn from D&D.
Phase 1: Basic D&D, our MVP (Minimum Viable Product, not Most Valued Player)
- The feature: “Elf is a class.”
- Technical debt: Hard-coded dependencies.
- Reality: In the startup phase (1974), you don’t need distinct objects for Race and Class. You just need to ship. So you hard-code CustomerType == Elf. It’s efficient, it works, and it hits the market. It’s also racist af, but these were the guys who made the dark-skinned elves evil later on, so … maybe it’s a matter of degrees.
- Lesson: Premature optimisation is the root of all evil, but hard-coding business logic is the root of all future suffering.
D&D basically bundled three classes (Fighter, Mage, maybe a Thief-ish thing) and a race into one object to save memory. Five years later, when someone wants a Dwarven Wizard, you have to tell the board it will take six months to re-architect the back end. Or, longer! AD&D took a long-ass time to come out.
Phase 2: AD&D, our v1, or maybe v2
- The feature: Distinct races/classes/multiclassing… but THAC0.
- Technical debt: Bolted-on patches for elf-is-a-class, and now we’ve got a magic number nobody understands and 17 tables to explain it.
- Reality: Yeah, elf-as-a-class is bad architecture. We split the database tables, but let the business rules breed. Now we have this hell on Earth: Elves can be Fighter/Mages, but only up to level 7. Why? Well, the original developer (Gygax/Arneson) put a number in the code to balance server load, and they’re on their way out of the company.
- Reality Bites: Consulting Firm X arrives and delivers Unearthed Arcana. Now we have Barbarians, Cavaliers, and Acrobats. They’re cool as shit, man, but it was pure consulting feature creep. The core system is still creaking, but fixing that is hard, so we bolted on a Cavalier tablespace that broke the existing combat system. Lucky there’s a human DM to referee!
- Lesson: Documentation is fine, but without core logic, it’s just archaeology in the present. AD&D is the pure mainline of adding exceptions rather than refactoring the rule.
We now have something like 34 rule books just so your Thief can be a Mage. And you still can’t be Dwarven Wizards, because we somehow missed the user request while building new modules based on consultant thinking.
Phase 3: Third Edition, the Saviour
- The feature: The D20 system, man. Everything’s a Feat, now. There are actual standards.
- Technical debt: Over-engineering. And have you looked at System Mastery?
- Reality: We fired the old team and rebuilt the stack from scratch with a unified API (D20). The whitepaper makes it look beautiful, and for a while, we all believed. Then we allowed third-party vendors (by way of the OGL) to write plugins. Now we have 4,000 “Feat” classes interacting in unpredictable ways. This is the SAP implementation that was supposed to simplify everything but now needs a team of 40+ BASIS consultants and a confusion of architects just to process a grapple check (invoice).
- Code fork: Pathfinder (Salesforce) stepped in. 3.5e (SAP) announced a sunset of support to force an upgrade to 4e. Paizo (Pathfinder) said, “Look dog, we’ll support your legacy stack forever.” It turns out that some customers just want stability and recognition of their sunk cost.
We haven’t really solved how many rule books we have, and now they’re being made by the entire world. There are now specific rules on how a thief, wearing armour and wet, can swing across a pit using baling wire, while on fire, and in the dark. But that means combat takes 6 hours per turn. And best not use that crystal ball to look at Pathfinder and the OGL too hard. It’s probably nothing.
Phase 4: Fourth Edition, aka the Digital Transformation that Wasn’t
- The feature: Powers, cooldowns, grid-based combat. We designing for computers, man!
- Technical debt: No one actually read the User Story.
- Reality: Management looked at The Market (World of Warcraft) and decided the software needed gamification (…ignoring that it was already a game). They wanted it streamlined (…which was probably fair). They issued the edict: balanced architecture for all. Every class (microservice) looks identical.
- Failure: It was technically sound code! It was balanced! It ran smooth. It’s a shame it had the soul of a business case. This is the classic, “We migrated to the cloud and forced a new UI on the staff, and now the entire Accounts Payable team quit.”
- Lesson: Culture is king. You can’t refactor it out of your user base. Efficiency != effectiveness, and efficiency at the cost of engagement is a net loss.
These were dark times. I, having bought all the D&D editions up to this point, had serious questions. WTF is going on? Who TF is doing it? Why is this a videogame, but slower? I didn’t actually mind the art style that caused an anaphylactic response in some people, but I minded that each combat turn had 24 levers.
At least mages got cantrips that didn’t suck, amirite?
Phase 5: Fifth Edition, or The Platform Strategy
- The feature: Bounded accuracy, Advantage/Disadvantage, rulings not rules.
- Technical debt: Let’s offload QA to the end user.
- Reality: The vendors (all of them) realised they couldn’t fix the code. So they released a simplified linux kernel (5e) and let the community build the plug-ins. Before you wonder if we’ve been here before, we have! We just have a better way of it not sucking. Enter:
- Community Support: 5e is a sort of barren OS. It worked because influencer marketing (Critical Role, Stranger Things) and third-party developers (Larian) built the use cases. 5e’s an iPhone, and comes with an amazing App Store.
- Lesson: Well, two. First is that 5e was built on community, which is arguably the best thing that Gygax did. The man understood that you start there, and build up (or, once you have a market you’ve made, you can sell them a bunch of stuff). The second is related, in that the solution to technical debt is to stop writing code and start building a brand. Let your users fix bugs via homebrew (open source contributions). And whatever you do, do not change your licensing model to try getting a tithe from them.
Oh, wait.
Phase 6: Fifth Edition, but Better
- The feature: Backwards compatibility and a unified digital ecosystem.
- Technical debt: Trust bankruptcy.
- Reality: Corporate looked at the thriving, community-driven 5e ecosystem and decided they were leaving money on the table. If there’s one thing the techbros taught them, it was that investing in content is for chumps, but monetising other people’s work is how you get rich. In a masterstroke of hubris, the executives attempted a hostile takeover of their own API by trying to revoke the Open Game License. The user base (composed entirely of people who perform complex probability math for fun and have a highly tuned sense of injustice because they play heroes slaying evil) immediately revolted, cancelled their SaaS subscriptions (D&D Beyond), and started building competitor frameworks (the ORC license). The vendor panicked. They dumped the core rules into Creative Commons to appease the mob, then pushed the 2024 update out the door. It promises to fix the lingering bugs of 5e without breaking your old code. It’s heavily marketed as backwards compatible (not, actually, a lie), which is enterprise-speak for, “We are too terrified of our users to actually refactor anything. Please come back.” Meanwhile, the entire update is quietly, desperately structured to herd you toward their proprietary, monetised Virtual Tabletop.
- Lesson: You don’t own other people’s work just because you wrote the original code. Trust is the single piece of infrastructure you cannot restore from a backup. Attempting forced vendor lock-in on an open-source community is just funding your competitors’ R&D.
Remember Pathfinder? Yeah, 2e is going better than ever. Wizards have had to do their best charm offensive ever to put the toothpaste back in the tube. They put literal mindflayers and lizardfolk in charge of the company that made a community based on joy, and were surprised by how badly that turned out.
If D&D’s fifty-year architecture struggle teaches us anything, it’s that technical debt isn’t just about code. It’s about the compounding interest of every compromise you make between what the user actually wants and what the vendor wants to sell them. Or, the exec layer needs to work out what’s good for users, not just shareholders.
So, when you look at your own enterprise stack, or you’re sitting in the next strategic alignment meeting, ask yourself a few questions.
- Where is your “Elf”? What legacy assumption is still dictating your roadmap simply because it was easy to hard-code a decade ago?
- Are you buying Unearthed Arcana? Are you paying external consultants to bolt on shiny new Acrobat modules just to distract everyone from the fact that your core database makes no mathematical sense?
- Or are you about to pull a 4e? Are you solving a problem your users don’t actually have, in the name of corporate efficiency, while slowly dismantling the culture that made the system work in the first place?
Technology changes, and the vendors will always try to sell you a new edition. The saving throws remain the same. Roll for initiative.
Discover more from Parrydox
Subscribe to get the latest posts sent to your email.