GLOBUSZ BOOKSProgramming Erlang: Software for a Concurrent WorldJoe Armstrong

A Globusz Books discovery

Programming Erlang: Software for a Concurrent World

Joe Armstrong · English

If your idea of programming is wrestling with threads, locks, and debugging deadlocks, Joe Armstrong’s “Programming Erlang” might just be the breath of fresh air you didn’t know you needed. Erlang isn’t just another language—it’s a toolkit built from the ground up to handle messy, concurrent, distributed systems without losing its mind. And Armstrong, one of Erlang’s creators, walks you through it like a no-nonsense guide rather than a hype machine.

3 min summary604 wordsAccessible difficulty
Better concurrency managementImproved fault tolerance in softwareFunctional programming adoptionScalable distributed system designRobust application architecture

Globusz Books summary

What the book is about

3 min read

“Programming Erlang: Software for a Concurrent World” is the kind of book that doesn’t just teach you a language; it forces you to rethink how you approach programming itself. Joe Armstrong, one of Erlang’s masterminds, lays out why Erlang exists and why it’s still relevant, especially when you’re building software that needs to juggle many things at once without crashing spectacularly.

The book starts by tackling the big problem Erlang was built to solve: concurrency and fault tolerance. In a world where apps often need to handle thousands of simultaneous users or devices, traditional programming languages tend to choke or force you into complex, error-prone patterns. Erlang’s approach is different. It treats processes as lightweight, isolated actors that communicate through message passing. No shared state, no locks, no mysterious race conditions lurking in the shadows.

Armstrong doesn’t assume you’re a functional programming wizard. He patiently walks through Erlang’s syntax and functional style, which can feel like a culture shock for developers used to objects and mutable state. But this isn’t just academic; the functional approach is a foundational piece of Erlang’s reliability puzzle. Once you grasp that, the book dives into the heart of Erlang’s concurrency model. You learn how to spawn thousands—even millions—of tiny processes that run independently but can talk to each other safely.

One of the book’s standout sections is its treatment of fault tolerance. Unlike many programming books that treat errors as something to avoid or hide, Armstrong embraces failure as a first-class citizen. Erlang’s “let it crash” philosophy encourages designing systems that detect failure quickly and recover gracefully. The book explains this mindset with practical examples, showing how to build systems that keep running even when parts go sideways.

Distributed programming gets a fair share of attention too. Erlang was born in the telecom world, where systems span multiple machines and continents. Armstrong explains how Erlang’s built-in support for distributed nodes makes remote procedure calls and distributed databases feel native rather than hacked on. You get a sense of how to build systems that don’t just run on one computer but scale across many without turning into a maintenance nightmare.

Then there’s OTP—the Open Telecom Platform—which might sound like a boring corporate acronym but is actually Erlang’s secret sauce for structuring applications. Armstrong introduces OTP as a set of libraries and design patterns that help you build robust, maintainable systems. It’s like Erlang’s way of saying, “Here’s how to do it right,” so you’re not reinventing the wheel or shooting yourself in the foot.

The book doesn’t shy away from advanced topics either. Multi-core processors are now everywhere, and Erlang’s model scales naturally with them. Armstrong shows how the language’s concurrency primitives leverage modern hardware without the usual headaches.

But don’t expect a gentle ride. Erlang’s functional style and concurrency model can be a steep climb if you’re used to object-oriented or imperative programming. The book demands patience and a willingness to think differently. It’s not a quick fix or a silver bullet, but if you stick with it, you’ll come away with a toolkit that’s rare and powerful.

The second edition, updated around 2013, adds newer Erlang features like maps, better type checking with Dialyzer, and WebSocket support. It keeps the book relevant, though some parts inevitably feel a bit dated given how fast software evolves.

In short, “Programming Erlang” isn’t just a manual; it’s a deep dive into a language designed to solve some of the hardest problems in software engineering. If you want to build systems that don’t melt down under pressure, this book shows you the ropes from someone who helped invent the language itself.

Beyond the summary

What might this book awaken in you?

“Programming Erlang” is not your average programming book. It’s a deep, sometimes tough, but ultimately rewarding journey into a language and philosophy built for systems that refuse to fail quietly. If you’re ready to rethink how you handle concurrency and distributed computing, Armstrong’s no-nonsense guide is a rare gem. Just don’t expect it to hold your hand or sugarcoat the learning curve.

Before you commit

Why you might read this

If your idea of programming is wrestling with threads, locks, and debugging deadlocks, Joe Armstrong’s “Programming Erlang” might just be the breath of fresh air you didn’t know you needed. Erlang isn’t just another language—it’s a toolkit built from the ground up to handle messy, concurrent, distributed systems without losing its mind. And Armstrong, one of Erlang’s creators, walks you through it like a no-nonsense guide rather than a hype machine.

Globusz summaryAbout 3 minutes
DifficultyAccessible
Especially worth considering if…Developers building concurrent or distributed systems who want a reliable, battle-tested approach.
Spoiler sensitivity: lowThis is a nonfiction summary.

Themes worth noticing

Concurrency and Parallelism

How to manage multiple tasks simultaneously without chaos, using Erlang’s lightweight processes and message passing.

Fault Tolerance

Designing systems that expect failure and recover automatically, rather than trying to prevent every error upfront.

Functional Programming

Using immutable data and pure functions as a foundation for reliable, maintainable code.

Distributed Systems

Building applications that run seamlessly across multiple machines with built-in support for communication and coordination.

Software Architecture and Design Patterns

Applying OTP principles to structure complex applications in a maintainable and scalable way.

Key ideas, explained

Concurrency without the usual headaches

Erlang’s core idea is to handle many things happening at once by running thousands of tiny processes that don’t share memory but communicate via messages. This avoids the messy, error-prone problems of locks and shared states common in traditional concurrent programming.

Failure is part of the plan

Instead of pretending errors won’t happen, Erlang embraces failure with the philosophy of 'let it crash.' Systems are designed to detect failures quickly and recover, making them fault-tolerant and reliable in real-world conditions.

Distributed systems made native

Erlang’s built-in support for distributed nodes means you can write code that runs across multiple machines as if they were one. This is crucial for telecom and large-scale applications, and the book shows how to leverage this without reinventing the wheel.

Functional programming as a foundation

Erlang’s functional nature—stateless functions, immutable data—might feel unfamiliar but is essential to its concurrency and fault tolerance. The book patiently introduces these concepts, making sure you understand why they matter, not just how to write them.

OTP: The framework that stops you from shooting yourself in the foot

The Open Telecom Platform is Erlang’s collection of libraries and design patterns. It provides a structured way to build applications, handle errors, and manage processes, helping developers avoid common pitfalls and build maintainable, scalable systems.

How to Use This Book in Real Life

Think in processes, not threads

When designing concurrent systems, imagine lightweight, isolated processes that communicate by messaging rather than shared memory. This mental shift can save you from many classic concurrency bugs.

Design for failure from day one

Accept that parts of your system will fail. Build mechanisms to detect and recover from these failures quickly instead of trying to prevent every possible error upfront.

Use OTP to structure your applications

Don’t build Erlang applications from scratch. Leverage OTP’s proven frameworks to handle common tasks like process supervision and state management, which helps keep your code cleaner and more robust.

Embrace the functional mindset

Learning Erlang means thinking in immutable data and pure functions. This can be a challenge, but it’s key to writing reliable concurrent code.

Consider distribution as a first-class concern

If your app needs to run across multiple machines, design it with distributed computing in mind from the start, rather than trying to bolt it on later.

What the book does especially well

  • Authored by one of Erlang’s creators, offering unmatched insider insight.
  • Clear, practical explanations that demystify complex concurrency and fault-tolerance concepts.
  • Comprehensive coverage from basics to advanced topics, suitable for beginners and experienced developers.
  • Real-world focus on building reliable, scalable concurrent and distributed systems.
  • Includes updates on newer Erlang features like maps and Dialyzer in the second edition.

Where the book gets shaky

  • Steep learning curve for developers unfamiliar with functional programming.
  • Depth and detail can be overwhelming if you’re looking for a quick introduction.
  • The book’s examples and some content may feel dated given rapid evolution in software tools and paradigms.
  • Not tailored for those only interested in Erlang’s use outside of concurrent or distributed systems.

Questions to carry with you

  • How can I rethink concurrency to avoid the pitfalls of shared state and locks?
  • What does it mean to design software that expects failure rather than fearing it?
  • How does Erlang’s functional approach change the way I write and structure code?
  • Can my application benefit from being distributed across multiple nodes from the start?
  • How can design patterns like those in OTP prevent me from reinventing error-prone solutions?

The bottom line

“Programming Erlang” is not your average programming book. It’s a deep, sometimes tough, but ultimately rewarding journey into a language and philosophy built for systems that refuse to fail quietly. If you’re ready to rethink how you handle concurrency and distributed computing, Armstrong’s no-nonsense guide is a rare gem. Just don’t expect it to hold your hand or sugarcoat the learning curve.

Reader feedback

Was this summary useful?

Rate the Globusz summary of Programming Erlang: Software for a Concurrent World, not the book itself.

Loading reader ratings…

Keep exploring

Related collections

Follow the broader question instead of stopping at one book.

Where to go next

Don’t just read the nearest look-alike.

These recommendations serve different purposes: stay with the author, follow the closest idea, find an easier entry, go deeper, or deliberately change perspective.

Browse all books
Closest matchComputers as Components: Principles of Embedded Computing System DesignWayne Wolf

Strong overlap in themes, life-impact signals, mood, or the questions the books raise.

Embedded systems are everywhere—from your smart fridge to the traffic lights that won’t let you sneak through red. Yet, designing these tiny, task-focused computers is no casual hobby. Wayne Wolf’s “Computers as Components” dives deep into what makes these devices tick, cutting through the hype to reveal the nuts and bolts of embedded computing. It’s a textbook that’s as much about practical engineering grit as it is about theory, with a side of IoT and machine learning to keep things current.Read this summary →
Also worth exploringRelease Engineering: Better Software FasterJason Yee

Related through the themes, questions, or life-impact signals surrounding this book.

Software doesn’t ship itself, no matter how much your product manager wishes it did. Jason Yee’s “Release Engineering: Better Software Faster” pulls back the curtain on the messy, often overlooked world of turning code into actual, working software in the wild. It’s the no-nonsense guide to making releases less of a crapshoot and more of a reliable, repeatable process.Read this summary →
Also worth exploringComputers and Society: Computing for GoodJohn Impagliazzo, Leslie A. Carr (Editors)

Related through the themes, questions, or life-impact signals surrounding this book.

Computers aren’t just about flashy gadgets or apps that make your life ‘easier.’ Sometimes, they’re quietly doing the heavy lifting against poverty, environmental destruction, and social injustice. This book doesn’t sugarcoat the tech world’s messiness but shows how some computing pros have rolled up their sleeves to actually do some good—warts and all.Read this summary →
Also worth exploringDeep LearningIan Goodfellow

Related through the themes, questions, or life-impact signals surrounding this book.

Deep learning isn’t magic, but it sure looks like it when your phone suddenly understands your voice or your streaming app nails your taste. Ian Goodfellow and his coauthors don’t promise miracles—they hand you the nuts and bolts behind the curtain. This book is where the hype meets the hard math, practical tricks, and the real headaches of teaching machines to learn.Read this summary →
Also worth exploringKubernetes: Up and Running, 3rd EditionBrendan Burns

Related through the themes, questions, or life-impact signals surrounding this book.

Kubernetes isn’t just another tech buzzword—it’s the stubborn engine under the hood of almost every serious cloud-native operation today. But mastering it? That’s a different story. Brendan Burns and his co-authors dive deep, cutting through the hype and the complexity to show what Kubernetes really does and how you can make it work without losing your mind.Read this summary →

Follow the idea

Explore books that may matter for similar reasons.

Technology relevance

Still relevant in 2026: Yes — foundational

Erlang concepts on concurrency and fault tolerance are still influential in distributed systems.

Topics: programming languages · concurrency · distributed systems

Browse current Technology books.

Continue the journey

Read the original when you are ready.

The full book offers much more than just syntax or theory—it immerses you in Erlang’s mindset and practical patterns for building robust systems. Armstrong’s insider perspective reveals why Erlang’s design choices matter and how to apply them effectively. Beyond the basics, the book dives into OTP, error handling, and distributed programming with real code examples you won’t find in quick tutorials. If you want to genuinely understand Erlang’s power and quirks, this is where you get the full story, not just the highlights.