Why Programming Is Really a Game of Structured Possibility

Jacob Suhr Bisschop-Thomsen

Hatched by Jacob Suhr Bisschop-Thomsen

Jul 03, 2026

10 min read

87%

0

The strange thing computers and role playing games have in common

What do a missing semicolon and a dice roll have in common?

At first glance, almost nothing. One belongs to the frustrating precision of programming, where a tiny punctuation mark can break an entire line of logic. The other belongs to the thrill of a tabletop adventure, where chance turns a bold action into a dramatic outcome. But both reveal the same deeper truth: power comes from constraint.

A computer is not impressed by your intent. It does not infer what you meant to say. It only follows instructions exactly as written. A game master, a rulebook, and a die do something surprisingly similar. They do not erase imagination, they give it a shape that can actually be played. In both cases, the magic is not freedom without limits. It is possibility made legible.

That is why programming and structured games feel so different from ordinary language and ordinary dreaming. They force us to turn vague intention into operational form. They ask us to stop saying, “Wouldn’t it be cool if...” and start answering, “Under what conditions could this happen?”


The deepest challenge is not creativity, but translation

Most people think programming is about telling a machine what to do. That is only half true. The harder part is translating human intention into machine terms.

Humans work with implication, context, and guesswork. We can say, “Make that a little smoother,” and another person may understand. A computer cannot. It needs exactness. If the instruction is ambiguous, the machine does not politely clarify. It executes the ambiguity literally, often with hilarious or disastrous results.

This is why programming can feel so punishing at first. Not because computers are hostile, but because they are profoundly honest. They expose every hidden assumption in our thinking. If your logic is fuzzy, the machine will not save you. If your instructions are incomplete, the machine will obey the incompleteness. The famous missing semicolon is not just a syntax mistake. It is a symbol of a larger reality: software rewards clarity more than charisma.

And yet this is not a limitation of programming. It is its educational value. Writing code trains a kind of disciplined thought that ordinary conversation often leaves untested. It asks: What exactly do you want? What should happen first? What counts as success? What should happen when the expected thing does not occur?

This is why coding is less like typing and more like designing a relationship. You are not merely producing text. You are building a shared language between two very different intelligences. One thinks in human goals, the other in exact operations. The work is to bridge them.

Programming is not the art of ordering a machine. It is the art of making your intention executable.

That distinction matters because it changes what “being good at code” really means. Technical fluency is not just memorizing syntax. It is the ability to decompose intentions into precise steps, anticipate failure, and express logic so clearly that nothing is left to interpretation.


Why rules do not kill imagination, they make it playable

Tabletop role playing games reveal the other side of the same coin. Without structure, storytelling is endless but weightless. Anyone can say their character does anything. The moment consequences matter, the story becomes real.

A die roll does something beautiful: it introduces structured uncertainty. The player declares an intention, the rules define the possible outcomes, and chance decides which one happens. Suddenly, the story has tension. A climactic battle is not just narrated as victory. It is earned, or lost, within a system that treats each action as meaningful.

This is what makes the game emotionally alive. The rules do not destroy imagination. They make imagination accountable. You cannot simply declare success. You must persuade the system, or risk failure. And because failure is possible, success matters.

The same logic appears in programming. A program is often just a rule system for reality inside a machine. It says: if this condition holds, do that. If not, do something else. In that sense, code is a kind of playable world. You define the boundaries, establish the consequences, and let the system unfold.

Think about a simple game mechanic: a character tries to leap across a chasm. The rules might say the leap is possible, but only if the roll exceeds a threshold. That single rule creates drama. The action is no longer abstract wish fulfillment. It becomes a wager. Programming does the same thing when it defines conditions, loops, and branches. It turns a vague idea into a system where outcomes can be tested.

This is why both domains reward people who think in terms of conditions, consequences, and edge cases. In a game, “Can I jump the gap?” becomes “What happens if I roll high enough?” In code, “Can the user log in?” becomes “What happens if the password is wrong, the network fails, or the input is empty?”

The deeper lesson is that structure is not the enemy of imagination. It is what lets imagination meet reality without collapsing into fantasy.


The shared mental model: intelligence under constraint

A useful way to connect these two worlds is to see them both as systems of intelligence under constraint.

In programming, the constraint is literal execution. The machine will do exactly what it is told, not what it was meant to infer. In a role playing game, the constraint is probabilistic resolution. You may want a thing to happen, but the rules and the dice decide whether it does. In both cases, the environment resists pure wishfulness.

That resistance is productive. It creates a gap between intention and outcome, and that gap is where skill develops.

Here is a simple framework for thinking about it:

  1. Intent: What are you trying to achieve?
  2. Translation: How do you express that goal in a form the system understands?
  3. Constraint: What rules, limits, or conditions govern success?
  4. Resolution: What actually happens when the system processes your input?
  5. Feedback: What do you learn from the result?

This cycle appears in both code and games. A programmer writes a function, runs it, sees what breaks, and revises. A player declares an action, rolls, sees the result, and adapts. Progress comes not from having perfect foresight, but from learning how systems respond.

That is one reason coding and gaming can both become deeply absorbing. They offer a closed loop between intention and feedback. You say something to the system, the system answers, and your next move becomes smarter because of it. Unlike many forms of human work, the feedback is often immediate and unambiguous.

But there is a subtle difference worth noticing. In programming, the aim is usually to reduce ambiguity until the machine can act reliably. In games, the aim is often to preserve enough ambiguity that the outcome stays interesting. One seeks determinism, the other uses uncertainty as fuel. Yet both depend on the same cognitive skill: learning to think within rules rather than despite them.

That is the unexpected overlap. The best programmers and the best players are not people who hate limits. They are people who know how to turn limits into leverage.


From frustration to fluency: learning to love specificity

Why do beginners struggle so much in both code and strategy games? Because they often confuse specificity with restriction.

In everyday life, vague instructions can be socially functional. We forgive ambiguity, infer meaning, and smooth over mistakes. But a computer cannot do that, and a rule system will not. The first lesson of programming is therefore emotional as much as technical: precision is not pedantry, it is empathy for the system you are working with.

The same applies to games. A novice might think the rules are there to limit creativity. But experienced players know the opposite is true. The tighter the mechanics, the more interesting the choices. In a rich system, small decisions compound. Do you spend your resource now or save it? Do you take the risky route or the safe one? Do you optimize for immediate gain or long term survivability?

This is why structured constraints often produce more creativity than open ended freedom. Constraints remove the illusion of infinite options and force real tradeoffs. A poet writing a sonnet is not less creative than someone writing free verse. A programmer working within a strict interface is not less inventive than someone sketching on a whiteboard. In both cases, limits sharpen the mind.

Consider a concrete example. Suppose you want to build a simple calculator app. At the level of intention, the goal is obvious: let users add numbers. At the level of execution, the machine needs specifics: What counts as a number? What happens with decimals? What if the user enters letters? What if they press equals twice?

Now compare that to a tabletop situation. A player says, “I want to persuade the guard.” The system needs specifics: What is the guard’s disposition? What is being asked? Is there leverage, threat, or trust? Does the character have relevant traits? These details are not bureaucratic clutter. They are what turn a desire into a meaningful outcome.

The transition from novice to expert happens when you stop asking only, “What do I want?” and begin asking, “What must be true for this to work?” That is the real education shared by code and games.


The practical payoff: better thinking in everyday life

You do not need to be a programmer or a role playing gamer to benefit from this way of thinking. The deeper lesson is transferable: clear goals need executable rules.

This applies to personal projects, team work, writing, and even habit change. Many plans fail not because the goal is bad, but because the steps are too vague. Saying “I want to get healthier” is like writing a buggy program. Saying “I will walk for 20 minutes after lunch on weekdays” is closer to executable code. It specifies conditions, frequency, and action.

Likewise, many collaborations break down because people rely on human inference where system design is needed. A team says, “We will handle it as it comes,” and then wonders why chaos emerges. A stronger approach is to define thresholds, responsibilities, and fallback paths. In other words, to create a little bit of game structure around the uncertainty.

There is also a mindset shift here about failure. In both programming and games, failure is not just a negative outcome. It is information. A broken program tells you your logic did not match reality. A failed roll tells you your action was possible but unlikely. Both give you a more accurate model of the system.

That makes these activities unusually good training for real life, because real life is also a system of constraints, tradeoffs, and imperfect information. The difference is that life usually hides the rules. Programming and games make them visible.

The best preparation for complexity is not more certainty. It is comfort with systems that answer back.

That is why these practices can make people more patient, more analytical, and more resilient. They teach you to stop treating friction as betrayal. Friction is often the place where reality becomes legible.


Key Takeaways

  • Precision is a form of respect. Whether you are writing code or describing an action in a game, the system can only respond to what is clearly specified.
  • Constraints create meaning. Rules do not merely limit possibility, they make outcomes consequential and therefore interesting.
  • Think in terms of conditions and consequences. Ask what must be true for success, what can go wrong, and how the system should respond.
  • Treat failure as feedback, not verdict. A syntax error or a failed roll is information about the system, not proof of inability.
  • Use structured rules in everyday life. Clear triggers, thresholds, and fallback plans make goals more executable and collaboration more reliable.

Conclusion: the art of making possibility real

Programming and role playing games seem to live on opposite sides of the spectrum. One is exacting, literal, and unforgiving. The other is imaginative, dramatic, and full of chance. But both are built on the same profound idea: possibility only becomes meaningful when it is structured.

A machine needs precision to act. A game needs rules to matter. A human mind needs both if it wants to turn intention into reality without dissolving into vagueness. That is why the most important skill here is not syntax, and not luck. It is the capacity to design a world where action has consequences.

In that sense, coding is not just telling a computer what to do, and a role playing game is not just pretending. Both are rehearsals for a deeper human craft: learning how to shape the conditions under which things become possible.

The next time you debug a line of code or wait on a dice roll, notice what is really happening. You are not just dealing with a tool or a game. You are participating in a logic of the world itself: freedom becomes real only when it meets form.

Sources

← Back to Library

Hatch New Ideas with Glasp AI 🐣

Glasp AI allows you to hatch new ideas based on your curated content. Let's curate and create with Glasp AI :)

Start Hatching 🐣