Technical
Simplicity Wins. Every Time.
Every piece of software I have regretted was too clever. Every piece I still use is embarrassingly simple.
The business problem is complexity tax. Teams add layers because each one feels justified in the moment. Six months later nobody remembers why. The bill shows up in onboarding time, bug density, and the slow grind of every deploy.
The principle
Simple systems have fewer states. Fewer states means fewer failure modes. Fewer failure modes means faster recovery. Everything else is downstream of this.
A test
For any system you are about to build, write the failure matrix. List every state it can be in. List every transition. If the matrix fits on a sticky note, you are on the right track. If it needs a Miro board, you are already in trouble.
Where I apply it
- One database per service unless there is a paid reason for more
- Plain Python over frameworks whenever the script is under 200 lines
- Server-rendered pages over SPAs when the user does not need real-time updates
- JSON files over databases when the data changes weekly
A real example
I replaced a 400-line workflow library with this.
def run_workflow(steps, ctx):
for step in steps:
ctx = step(ctx)
return ctxThree lines. No DAG. No state machine. No YAML. The workflow is a list of functions. The context is a dict. It has run in production for nine months.
What simplicity is not
It is not primitive. It is not under-engineered. It is the smallest model that covers the real cases. It takes more thought than complexity, not less.
Further reading
Rich Hickey's Simple Made Easy is still the best talk on this. Watch it twice a year. I do.
The closing line
If you are unsure which version to ship, ship the simpler one. You will be forced to add complexity later only if reality demands it. Reality rarely demands it.
RELATED READING
The Consulting Shift I Am Making In Year Two
After a year of writing and building, my consulting practice is changing shape. Shorter engagements. Sharper outcomes.
ReadThe Frontend Shift: Shipping Less JavaScript In Year Two
A year ago I reached for Next.js for everything. This year I often reach for nothing.
ReadThe Serverless Lesson I Would Write On A Sticky Note
After a year of shipping serverless projects, one rule explains most of the wins and all of the losses.
Read