Stop managing threads, start modeling systems

Two languages stand out for how they embrace concurrency:

  • Elixir
  • Go

Plenty of languages support concurrency: Rust, Kotlin, even Java with enough effort. But Elixir and Go do more than support it. They shape your thinking around it.

In Elixir, you model systems with lightweight, isolated processes … part of the same philosophy that powers telecom switches and WhatsApp. In Go, goroutines and channels make it easy to build concurrent code without drowning in threads or callbacks.

Neither asks you to micromanage memory or juggle locks. Instead, they teach you to compose behavior, to think in terms of flows, fault boundaries, and message passing.

That shift, from managing threads to modeling systems is subtle, but it changes everything.

For me, Elixir made concurrency feel natural, like I was building living systems. Go made it feel simple, like I didn’t need to outsmart the runtime just to get things done.

Not the only languages to take concurrency seriously. But the only two that rewired how I build software.

#concurrency #elixir #go