Is Modern Concurrency Aligned with Joe Armstrong’s Actor Model and Simplicity Principles?
Dive into the clash between modern concurrency models and Joe Armstrong’s timeless Actor Model, exploring whether today’s complex systems honor his simplicity principles.
Last year, I was , neck-deep in building trading apps that had to juggle thousands of trades in real time. These weren’t your average apps
split second delays could cost millions, and crashes were not an option.
My team was all in, trying everything to make it work.
We dove into reactive programming, played with functional programming to keep state clean, and thought we were on top of it. I was confident concurrency was the answer more threads, more speed, right?
But the apps kept choking.
Random bugs, slowdowns, errors that vanished when you tried to debug them. I still remember the panic of late-night sessions, coffee in hand, staring at logs that made no sense. We were supposed to be experts, but we were stuck.
Then a teammate, sent me a link to Joe Armstrong’s 2014 talk,
The Mess We’re In. after watching that it was like a light bulb went off.
I highly recommend everyone to watch this; it’s definitely worth your time.
Armstrong’s ideas flipped how I saw concurrency. So, is it really the holy grail everyone’s hyping, or have we strayed from his simpler, better way?
Let’s dig into his vision and figure it out.
Joe Armstrong’s Big Idea: Keep It Simple
Back in the ’80s, Armstrong was at Ericsson, building telecom systems that had to handle thousands of calls without breaking. Most coders leaned on threads and shared memory, but he saw the mess bugs, crashes, systems that fell apart under load.
Armstrong once said,
“The problem with object-oriented languages is they’ve got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.”
His point?
Shared state in traditional concurrency models (like threads in C or Java) is a recipe for chaos.
So he created the actor model for Erlang, and it wasn’t about being fast. It was about being simple and solid. In “The Mess We’re In,” he laid it out clearly.
“Picture a team where everyone’s got their own job, passing notes to talk.
No one’s messing with each other’s work. That’s the actor model tiny “actors” running solo, sending messages, not sharing data.”
He emphasized, “Sharing state is the root of all evil. If you don’t share state, you don’t need locks.” It was a game-changer, cutting out the chaos of threads fighting over memory, creating bugs you can’t reproduce.
Armstrong had more to say. Failures happen don’t fight them, handle them. Erlang’s “let it crash” idea lets actors fail and restart without tanking everything.
Simplicity was his mantra:
“If you can’t understand your system, you can’t trust it. Speed came second; a system you could wrap your head around came first”
Armstrong was against the idea of locks, in-fact he hated them.
Message-passing was cleaner, easier to reason about. These ideas made Erlang the backbone of apps like WhatsApp, slinging billions of messages.
They also shaped stuff like Go’s channels and Elixir’s processes. Armstrong’s vision was about building systems that just worked, no matter the chaos.
Where Concurrency’s At Now
It’s 2025, and concurrency’s non-negotiable. Trading apps need instant trades. AI’s tearing through data in parallel. Cloud systems scale across servers, handling users everywhere.
Languages are ready. Go’s goroutines let you spin up thousands of tasks, no sweat. Rust catches bugs with ownership rules. Even Python’s got async tools, trying to hang.
It’s not just code it’s also your career at stake. Job ads scream for concurrent programming skills. Developers are grinding at Go or Rust to stand out.
Async tutorials are blowing up online. Concurrency’s like the must-know skill of the decade. But here’s where I pause.
“Armstrong’s talk was about keeping things simple, making systems you could trust. Today’s concurrency feels like a race for speed and scale. Are we building on his ideas?”
What We’re Getting Wrong
My experience with concurrency taught me how easy it is to screw this up. We were deep in reactive and functional programming, thinking we had it. But at the end the applications were in chaos.
Crashes. Bugs that only showed up under load. Hours chasing ghosts in the code. Armstrong’s talk hit me hard I wasn’t solving anything. I was piling on complexity.
Modern tools don’t fix it all. Go’s goroutines are slick, but lose track, and you’re leaking memory or stalling. Rust’s ownership catches errors, but it’s a beast to learn.
A bad design still flops. JavaScript’s async looks tidy, but one slip, and it’s a knot you can’t untie. Trust me, I learned this the hard way.
It gets worse. Concurrency often means distributed systems microservices, cloud setups, like our trading platforms. That’s a new kind of hell.
Servers drop. Messages lag. Data’s out of sync. Armstrong saw this coming. He said complexity’s the enemy, and shared state makes systems wild.
His let it crash idea was about expecting failure and recovering, but we’re still obsessed with stopping every glitch. We lean on locks and shared data.
He showed message-passing’s better. We’re chasing speed when Armstrong wanted systems that just worked. But still we’re missing the point.
The Way Forward
Concurrency, as we’re doing it, isn’t the holy grail. But Armstrong’s vision his actor model, his push for simplicity and handling failure is still the best shot we’ve got.
“The Mess We’re In” showed me concurrency’s not about cramming more tasks in or being the fastest. It’s about systems that can handle the real world messy, unpredictable, full of failures.
Separate actors, no shared state, simple designs. That’s what keeps things solid. Lat year project was my wake-up call, and Armstrong’s talk sealed it.
I used to think concurrency was a shortcut to speed. I was wrong. His ideas showed me how to think better, and I’m betting they can help anyone.
If you’re building systems that need to scale or stay up like a trading app start with Armstrong’s principles:
keep things separate, expect failure, make it simple.
Want to get it? Watch “The Mess We’re In” on YouTube it’s an hour that’ll stick with you. Try Erlang or Elixir to feel his ideas in action.
Next time you’re itching to add threads or async, stop. Ask yourself: is this simpler, or just showy? Armstrong’s vision might not be the holy grail, but it’s damn close.
Thank You for Reading
If you enjoyed this article, don’t forget to, Subscribe, and Follow for more insightful content!

