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:
- Create a taxonomy - Simple vs Easy, Essential vs Accidental
- Redefine common terms - "Simple" now means whatever supports your argument
- Push complexity outside - Integration is "environmental complexity" (not my problem)
- Feel intellectually superior - Others are "complecting", you're keeping it "simple"
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. 🤷
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
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.
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.
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.