Skip to content

Instantly share code, notes, and snippets.

@wycats
Last active June 7, 2025 03:16
Show Gist options
  • Save wycats/3a3d01e95bbdfb60567500c3649bbd8e to your computer and use it in GitHub Desktop.
Save wycats/3a3d01e95bbdfb60567500c3649bbd8e to your computer and use it in GitHub Desktop.
How Complexity Theories Enable Antisocial Engineering

The Framework as Opt-Out: How Complexity Theories Enable Antisocial Engineering

The Pattern

Grand theories of software complexity (Simple Made Easy, Out of the Tarpit) create intellectual frameworks that let their adherents opt out of shared solutions while feeling superior about it.

The mechanism:

  1. Create a taxonomy - Simple vs Easy, Essential vs Accidental
  2. Redefine common terms - "Simple" now means whatever supports your argument
  3. Push complexity outside - Integration is "environmental complexity" (not my problem)
  4. Feel intellectually superior - Others are "complecting", you're keeping it "simple"

The Loophole

From Simple Made Easy: "Environmental complexity is an unsolved problem."

Translation: All the complexity of making your "simple" solution work with other people's "simple" solutions? That's environmental. Not your fault. Unsolved problem. 🤷

What This Looks Like

Developer A: "I kept it simple - each service does one thing!"
Developer B: "But how do I integrate these 47 microservices?"
Developer A: "That's environmental complexity. Have you considered you might be conflating simple and easy?"

The Tell: These theories always describe software from a god's-eye view - as if code springs fully-formed from pure logic. They never account for:

  • Teams learning together
  • Shared mental models
  • Evolution and discovery
  • The actual work of coordination

What Frameworks Actually Do

Frameworks - those messy, opinionated, "complected" things - represent accumulated wisdom about how groups of humans can work together effectively. They explicitly take responsibility for "environmental complexity" instead of declaring it unsolved.

When a framework makes decisions for you, that's not complecting - that's removing N developers from having to make (and coordinate) N different decisions.

The Deeper Problem

These intellectual frameworks provide principled reasons to avoid the unglamorous work of coordination and compromise. They let you feel smart while making everyone else's job harder.

The complexity doesn't go away - it just gets pushed onto whoever has to integrate your "simple" solution.

The Alternative

Acknowledge that managing complexity is about managing people, not just managing code structure. Sometimes the "complected" solution that everyone understands is simpler than N "simple" solutions that don't compose.

Shared solutions aren't a failure of design - they're a success of coordination.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment