Sitemap
Stackademic

Stackademic is a learning hub for programmers, devs, coders, and engineers. Our goal is to democratize free coding education for the world.

MORE THAN OBJECTS

Concurrency-Oriented Programming

A Better Model for a Dynamic World

7 min readAug 7, 2026

--

Press enter or click to view image in full size
Photo by Mahdis Mousavi on Unsplash

Object-oriented programming has had its moment starting with static objects and inheritance. Since the world is dynamic, messy, and deeply parallel, your software needs to reflect these qualities as well. Therefore, you need an additional lens: concurrency-oriented programming. Adding a suitable concurrency model and a battle-tested virtual machine helps you overcome today’s challenges facing digital infrastructure critical to society: hacker attacks, hardware failures, software bugs, sky-rocketing cloud costs and resilient augmented software development.

Summary

After reading this article, you will understand the essence of concurrency-oriented programming, suitable programming ecosystems, and, its relevance in an agentic context:

Model the world as it is. Build software from lightweight, isolated processes that mirror real-world concurrent activities – users, calls, connections, background jobs – rather than one single, monolithic sequential program.

Communicate between processes using asynchronous messages; do not share mutable state. This makes distribution, scaling, and failure recovery dramatically simpler.

Design for failure from the beginning. Use supervisors to isolate faults and restart lightweight processes and modules as needed. Let it crash really means letting the system handle crashes responsibly.

Use the right tool. If you need soft real-time performance, high availability, and massive concurrency, Erlang or Elixir on the BEAM (the Erlang virtual machine) provide these properties by design, not by accident.

Improve augmented software engineering. Elixir won Tencents AI model and programming language benchmark, and, OpenAI use Elixir for its open-source orchestration framework Symphony that polls issue trackers to deliver pull requests.

The X Factors

The X factors below show how companies like Motorola, Ericsson, WhatsApp and the BBC use a concurrency-oriented programming approach to achieve:

2X faster development of new services.

10X better availability with downtime under 5 minutes per year.

10X safer systems that are hard to hack or crash.

10X more users and transactions, within milliseconds.

10X less costs and energy.

That is a lot of Xs and each one is backed by data, see Berardi, Cathcart, Cesarini, CVE and Rubio in the For Further Inspiration and Learning section below.

Yesterday: The Job to Be Done

Let us see how the telecom world evolved from the 1980s onwards. Global voice calls, then mobile voice calls, then smartphones and apps. Millions of concurrent users. Hardware that fails. Software with bugs. Ambulances on the other end of the line.

The people who set out to solve this – Joe Armstrong, Mike Williams, Robert Virding and their manager, Bjarne Däcker, at Ericsson – were not trained software engineers or programmers. Armstrong was a rocket scientist, Williams a telecom engineer, Virding a physicist and Däcker an electronics engineer. Freed from software orthodoxy, they reasoned from first principles about what a telecom-grade language would need and how to create one:

Prototyping: having ideas is the starting point; you need to prove they work as well (Williams).

Real-time, secure, scalable: soft real-time is important because human lives indirectly depend on it (Däcker).

Reliable distributed systems in the presence of software errors and, in practice, hardware errors too (Armstrong).

First Principles

Based on the insights above, Armstrong distilled three principles that shaped Erlang, and, arguably, describe the world itself:

The World is Concurrent

Things happen simultaneously. The runtime should transparently handle three related-but-distinct ideas:

  • Concurrency: many tasks on one unit, interleaved by a scheduler.
  • Parallelism: many tasks across several units, think multi-core, which barely existed when Erlang was designed.
  • Distribution: many tasks across several units wherever they happen to live.

The key insight is that the virtual machine should automagically handle all three, allowing the software engineer to focus on solving the business problem.

Things Do Not Share Data – They Communicate with Messages

Shared memory is possible, but it makes distribution and failure recovery dramatically harder. Treat processes as immutable data structures that exchange messages, and the whole model, including principle 3, falls into place.

Things Fail

Anything that can go wrong will go wrong (Murphy was, appropriately, an aerospace engineer). Rather than trying to prevent every failure, design the language to embrace failure: supervision trees isolate failures and recover automatically.

Here is an important caveat to the famous "let it crash" slogan: Let things crash responsibly by having the system handle crashes via supervision trees. A telecom switch should not crash. It is fine if a single call goes down, because you can set it up again semi-automatically.

Today: The Right Tool For the Job

If the job is digital infrastructure critical to society, e.g. telecom, fintech, digital health, media and defence, the tool should natively reflect the three principles above. Enter Erlang and Elixir.

Get Erik Schön’s stories in your inbox

Join Medium for free to get updates from this writer.

Remember Robert Virding’s First Rule of Programming:

You can build concurrent systems in Rust or Go and these languages are the right tools for the job when it comes to heavy numerical computations. What Erlang and Elixir offer is a proven virtual machine (the BEAM), refined since the mid-1980s, that supports the three principles above out of the box.

Since 1998, Erlang has brought functional/declarative code, immutable data, message passing, concurrency and error-handling primitives, and an open-source ecosystem that has been called the best European open-source project since Linux.

Elixir inherits the BEAM and its environment, draws on ideas from Ruby and Clojure, brings a front-end focus and consistently ranks among the top two most admired languages, with Phoenix LiveView the most admired web framework according to Stack Overflow’s Developer Surveys 2022–2025.

The list of organisations betting on this technology stack is telling: Adobe, Apple, Amazon Web Services (AWS), BBC, Bloomberg, Broadcom, Cisco, Discord, Ericsson, Facebook, Financial Times, Klarna, Maersk, Mastercard, Motorola, PepsiCo, RabbitMQ, Red Bull Racing, Siemens, Tesla, Toyota, Volvo and WhatsApp.

Tomorrow: Even Better, Faster, More-for-Less

Backed by WhatsApp/Meta, Ericsson, and the Erlang Ecosystem Foundation, the near future looks bright on three fronts:

Even better with gradual typing, i.e. type inference and gradual type-checking for every Elixir program without introducing type annotations.

Even faster through full-stack development in a single team using Phoenix LiveView by eliminating separate frontend codebases.

Even more for less through effective generative and agentic augmentation techniques (AI) on the BEAM where a recent study by Tencent showed that Elixir had the highest completion rate across models when compared among 20 different programming languages. As a concrete example, OpenAI use Elixir for its open-source orchestration framework Symphony that polls issue trackers to deliver pull requests, citing Elixir’s superior concurrency model and resilience.

Takeaway

Concurrency-oriented programming is a way of modelling software that reflects how the world actually behaves – concurrent, message-passing and failure-prone – and is well-suited for digital infrastructure critical to society where resilience, security and scalability are crucial, e.g. fintech, digital health, media, telecom and defence.

The world is dynamic. Your programming model should be, too.

For Further Inspiration and Learning

This article is based on my talk Concurrency-Oriented Programming (video, slide deck) at the DevLin developer conference. That talk is based on presentations, articles, books and theses by Francesco Cesarini, Robert Virding, Joe Armstrong, Mike Williams and Bjarne Däcker – so I am standing on the shoulders of giants. Joe, Mike and Robert developed Erlang independently of the related work by Carl Hewitt (Actor Model) and Tony Hoare (Communicating Sequential Processes, CSP).

You can find my work on leadership, strategy and ways of working, e.g. the books The Art of Change, The Art of Strategy and The Art of Leadership, at Yokoso Press, Medium and YouTube.

Articles, books and videos referenced in or relevant for the article, and, for further inspiration and learning:

--

--

From hacker, software researcher, system engineer to leader, executive, strategizer. Writer: #ArtOfChangeLeadershipStrategy https://yokosopress.se

See more from me

Stackademic
Stackademic

Published in Stackademic

Stackademic is a learning hub for programmers, devs, coders, and engineers. Our goal is to democratize free coding education for the world.