Systems Thinking & the Bitter Lesson: Building Adaptable AI Workflows

In “Learning the Bitter Lesson,” Lance Martin reminds us that in AI—and really in any complex system—the simplest, most flexible designs often win out over time. As a systems thinker, I can’t help but see this as more than just an AI engineering memo; it’s a blueprint for how we build resilient, adaptable organizations and workflows.


Why Less Structure Feels Paradoxically More Robust
I remember the first time we tried to optimize our team’s editorial pipeline. We had checklists, rigid approval stages, and dozens of micro-processes—each put in place with good intentions. Yet every time our underlying software or staffing shifted, the whole thing groaned under its own weight. It felt eerily similar to Martin’s early “orchestrator-worker” setup: clever on paper, but brittle when real-world conditions changed.

Martin’s shift—from hardcoded workflows to multi-agent systems, and finally to a “gather context, then write in one shot” approach—mirrors exactly what many of us have lived through. You add structure because you need it: constrained compute, unreliable tools, or just the desire for predictability. Then, slowly, that structure calcifies into a bottleneck. As tool-calling got more reliable and context windows expanded, his pipeline’s parallelism became a liability. The cure? Remove the scaffolding.


Seeing the Forest Through the Trees
Here’s the systems-thinking nugget: every piece of scaffolding you bolt onto a process is a bet on the current state of your environment. When you assume tool-calling will be flaky, you build manual checks; when you assume parallelism is the fastest path, you partition tasks. But every bet has an expiration date. The real power comes from designing systems whose assumptions you can peel away like old wallpaper, rather than being forced to rip out the entire house.

In practical terms, that means:

  1. Mapping Your Assumptions: List out “why does this exist?” for every major component. Is it there because we needed it six months ago, or because we still need it today?
  2. Modular “Kill Switches”: Build in feature flags or toggles that let you disable old components without massive rewrites. If your confidence in a new tool goes up, you should be able to flip a switch and remove the old guardrails.
  3. Feedback Loops Over Checklists: Instead of imagining every exception, focus on rapid feedback. Let the system fail fast, learn, and self-correct, rather than trying to anticipate every edge case.

From Code to Culture
At some point, this philosophy goes beyond architecture diagrams and hits your team culture. When we start asking, “What can we remove today?” we encourage experimentation. We signal that it’s OK to replace yesterday’s best practice with today’s innovation. And maybe most importantly, we break the inertia that says “if it ain’t broke, don’t fix it.” Because in a world where model capabilities double every few months, “not broken” is just the lull before old code bites you in production.


Your Next Steps

  • Inventory Your Bottlenecks: Take ten minutes tomorrow to jot down areas where your team or tech feels sluggish. Are any of those due to legacy workarounds?
  • Prototype the “One-Shot” Mindset: Pick a small project—maybe a weekly report or simple dashboard—and see if you can move from multi-step pipelines to single-pass generation.
  • Celebrate the Removals: Host a mini “structure cleanup” retro. Reward anyone who finds and dismantles an outdated process or piece of code.

When you peel back the layers, “Learning the Bitter Lesson” isn’t just about neural nets and giant GPUs—it’s about embracing change as the only constant. By thinking in systems, you’ll recognize that the paths we carve today must remain flexible for tomorrow’s terrain. And in that flexibility lies true resilience.

If you’d like to dive deeper into the original ideas, I encourage you to check out Learning the Bitter Lesson by Lance Martin—an essential read for anyone building the next generation of AI-driven systems.