home / writing

Dungeons, Dragons & Development

Date: 2025-04-21

Creating custom (“homebrew”) D&D worlds and developing software are surprisingly similar as creative disciplines. In both, you create vast interconnected “worlds” which must remain cohesive while evolving over time.

I have been roleplaying and building worlds for a decade this May1. In that time, I’ve learned a tremendous amount about what works in worldbuilding and how to build player trust as a game master2 (GM). When I’m not at the table with friends, I’m programming – graduating soon with a Computer Sciences degree from the University of Wisconsin-Madison. The creative challenges faced by worldbuilding GMs parallel those of software engineers, particularly in managing complexity, sustaining creative momentum, and designing flexible systems that adapt to change.

Building Worlds

Creating homebrew worlds mirrors designing software. The worldbuilding process is an asymptotic journey toward an ideal. You begin with an empty canvas, add and strip away elements, and refine towards a “just right” state that can never be fully reached. This gap between vision and implementation persists regardless of effort invested. At the end of this process, the creator has established consistent rules and a living, breathing fantasy world.

The Isles
Map A. The Isles (2020)
Aldria
Map B. Aldria (2021)
El'kora
Map C. El’kora (2024-)

This model works equally well for programming. Programmers build “worlds” of their own, maintaining coherence internally through well-structured code and externally through intuitive interfaces. We design data structures, algorithms, and establish design patterns. Like worldbuilders, programmers must understand how each component affects the entire system.

One challenge in both disciplines is adding new elements without disrupting the existing system. As a GM, when I introduce a new culture or type of magic, I must weave it into existing lore without creating contradictions. When I created a seafaring merchant kingdom (Tayrest on map A), I ensured their cultural practices made sense given their proximity to existing nations. Similarly, software engineers adding features must ensure compatibility with existing functionality while avoiding regression issues. In both domains, you must anticipate how additions will ripple through your creation.

This extends to knowledge management, where both roles struggle with documentation debt. Many GMs compile extensive world wikis, campaign notes, and NPC directories that gradually become unwieldy. Software engineers face identical challenges with technical documentation that quickly falls out of sync with evolving codebases. The struggle to maintain current reference materials creates friction that compounds over time.

In summary, both disciplines creators balance ambitious ideas with practical constraints. The art lies in crafting worlds resilient enough to evolve without collapsing under their own complexity.

Fighting Bloat and Feature Creep

When designing a world or software, it takes willpower to stop adding more. I hyperfixate on current projects and build them up with all my creative energy. But you’re not building the world to build the world – you’re building it to tell a story! And the most important part is how it ends: a refined, precise, complete story that serves a purpose. The world is merely a tool to deliver that story to your players.

Building intricacies in my world is therapeutic, but I have to rein myself in and remember that while my mind has near-bottomless capacity for this, my players have limited mental bandwidth and playtime. Much of what I create will never see the light of day, and it shouldn’t. Players can only absorb so much information during sessions, and what seems crystal clear to me often gets lost in translation.

Software engineers face this same struggle. The excitement of introducing new functionality can lead to bloated codebases that become difficult to maintain and confusing for users. Developers must remember that users want software that solves their problems efficiently, not necessarily software that does everything imaginable.

The focus to design a refined, precise, and complete world – rather than an endlessly expanding one – distinguishes the very best creators. One must balance introducing enough content that the system feels hearty and fully fleshed out, but not so much as to create an overwhelming noise-to-signal ratio.

Preventing Burnout

The creative drive that fuels both worldbuilding and programming can be all-consuming. I’ve definitely had nights up past 3 AM sketching political conflicts between fictional kingdoms or perfecting an NPC’s backstory my players might never even meet. This passion is a double-edged sword, driving creation but leading to burnout when unchecked.

Screenshot of wiki-style lore respositories I've written with hundreds of pages
Wiki-style lore respositories I’ve written (where each page contains a character, location, or info page, etc.)

Game masters often feel pressure to constantly innovate, balancing preparation with improvisation as player actions derail planned scenarios. After months of this cycle, even the most enthusiastic GM can find their creative well running dry. The cruel irony is that the hobby once chosen as an escape transforms into something they themselves now feel the need to escape from.

Software developers battle similar demons. The pressure to deliver features, fix bugs, meet deadlines, and stay current with evolving technologies creates a perfect storm for burnout. Both roles demand a constant outpouring of creative and technical solutions, with limited recognition of the mental cost.

Boundaries are good. “But Nico-Nico! Does that mean you advocating for work-life balance? And in this economy!?” I think so. For GMs, this might mean limiting worldbuilding to defined time blocks. For developers, it means timeboxing problems and recognizing when good enough is truly good enough. As my professor AnHai Doan once said, “There is nothing perfect in life!”

Don’t be afraid to prioritize self-care. If you’re overwhelmed, cancel a session – your players will understand. While software engineering sometimes requires sprints for critical deadlines, balance these with recovery time. Your mental health deserves protection, and well-rested work will always outshine what you create while exhausted.

The bottom line: pace yourself. Some weeks that means canceling a session to recharge. Other weeks it means pulling an all-nighter because you’re genuinely excited about what you’re building! Make those choices consciously, not out of obligation. Be sustainable and know your limits.

Adaptating to Change

One of the most important lessons from a decade of GMing is that player agency is sacred.

For players to truly invest in your world, they must know unequivocally that their choices matter. This trust isn’t built through elaborate pre-scripted monologues that rival Lelouch’s “Obey Me, World”, or meticulous, Mercer-tier narrations, but through your consistent willingness to adapt your creation to your players’ decisions.

Many moments that have stuck with me came from sessions where I hadn’t looked at my prepared notes for hours – situations where players pursued unexpected threads and things “flew off the rails” in a good way! These moments, while nerve-wracking, are where the magic happens. When you’re comfortable enough with your world to seamlessly improvise while appearing prepared, players become genuinely immersed. Conversely, when you railroad players along predetermined paths, their engagement evaporates as they realize they’re merely pawns in your3 story.

Software development follows a similar pattern. My most successful coding projects have been those where I remained flexible to changing requirements rather than clinging to initial designs. Just as a good GM adapts their world to player choices, effective programmers adapt and refactor their code to best handle real-world usage patterns. Creation isn’t a linear process but a dialogue between GM and players, or between developers and users.

The willingness to adapt reveals a difference in perspective that separates beginners from veterans: recognizing that creation isn’t about executing a predetermined plan, but maintaining the invariant that whatever you build can actively evolve to accommodate ongoing feedback. If you build from the outset with control in mind, you don’t have a messy web anymore, but an organized map. This mindset transforms rigid structures into living frameworks capable of becoming something better than initially imagined.

Collaborating

At its core, worldbuilding thrives on collaboration. My most memorable roleplaying scenarios weren’t those with the deepest lore or perfectly balanced encounters. Instead, they emerged organically from how my players’ choices interwove with the framework I provided. The world was alive because I wasn’t its only author.

The best software, too, evolves through consistent dialogue between creators and users. Open source projects demonstrate this perfectly: communities of developers contributing to codebases that exceed what any individual could create alone. Even proprietary software benefits from beta testing4, user feedback loops, and cross-functional teams.

Different types of collaboration appear in both domains:

Both disciplines require balancing creative vision with what the audience actually wants. This means maintaining the humility to recognize when your brilliant idea isn’t working, and the flexibility to adapt.

The most rewarding creative experiences happen when we step back from being the sole author and create spaces where others can contribute meaningfully. This doesn’t diminish our work – it enhances it, transforming our initial ideas into something far richer than we could have built alone.

Using What You Have

Both game masters and programmers must balance technical mastery with creative expression. As a GM, I’ve spent hundreds of hours perfecting homebrewed game elements and designing balanced encounters – the technical foundation that supports creative storytelling. Similarly, in programming, clean code architecture provides the foundation for innovative features and an enjoyable user experience.

In both disciplines, the technical and creative elements are inseparable. I could have the most brilliant narrative concept, but it would fall flat without solid game mechanics. I could have the most elegant helper function, but if the feature doesn’t make sense, it is wasted.

You have to develop both sides of this equation, using technical constraints to inspire creative solutions rather than seeing them as limitations.

Use what you have, keep it simple, question everything.

Wrapping Up

I’ve highlighted the interesting parallels that exist for game masters and software developers. Worldbuilding is a generalizable skill in disciplines where you create, and lessons from one domain consistently enrich practices in the other.

Whether crafting magical realms or coding projects, common challenges include managing complexity, avoiding feature bloat, preventing burnout, and adapting to unexpected changes. Success in either field requires understanding how what you build interfaces with the user. Are we building with them in mind?

Perhaps most importantly, both disciplines teach humility. No matter how brilliant our creations seem in our minds, their true value lies in how they serve others. The perfect world only exists in our minds; our job is to create the best approximation in the time we have. By embracing these constraints rather than fighting them, we open ourselves to discoveries and collaborations that far surpass the original vision.

I plan to continue worldbuilding, both as a software engineer and a game master, for the foreseeable future. May your own creative endeavors, whatever form they take, benefit from the wisdom worldbuilding has to offer.

Footnotes