What if concurrency wasn't about locks, but about better software design? Go's primitives enable a more natural way to build systems by composing independent processes.
#1about 6 minutes
Concurrency as a natural model for software design
Modern software can be structured like the real world by composing independent processes that communicate with each other.
#2about 4 minutes
The evolution from threads to modern concurrency
Modern runtimes manage lightweight processes, moving beyond complex, error-prone threading with mutexes to encapsulated state and message passing.
#3about 6 minutes
Actor model vs communicating sequential processes (CSP)
Go's concurrency is built on the Communicating Sequential Processes (CSP) model, where anonymous processes communicate over named channels, unlike the Actor model's named processes with inboxes.
#4about 8 minutes
Common patterns for concurrent architectures
Concurrency enables powerful design patterns like service providers, resource managers, supervisors for fault tolerance, and ETL data pipelines.
#5about 4 minutes
An overview of the Go programming language
Go is a pragmatic, multi-paradigm language designed by pioneers like Ken Thompson and Rob Pike, featuring implicit interfaces and first-class functions.
#6about 8 minutes
Go's core concurrency primitives: goroutines and channels
Lightweight concurrent functions called goroutines are launched with the `go` keyword and communicate or synchronize over typed channels.
#7about 3 minutes
Waiting for goroutines with sync.WaitGroup
The `sync.WaitGroup` type provides a simple and effective mechanism to block the main goroutine until a collection of background jobs has completed.
#8about 6 minutes
Streaming and piping data with channels
Channels can be used to stream data between goroutines, and closing a channel signals the end of the stream to a ranging receiver.
#9about 5 minutes
Building a concurrent service with multiple channels
A common but verbose approach to building a concurrent service involves creating separate channels for each type of operation, leading to complex state management.
#10about 5 minutes
A simpler actor-like pattern using a function channel
A more elegant service pattern uses a single channel to send functions, which are then executed sequentially by the background goroutine, simplifying the API and centralizing logic.
Related jobs
Jobs that call for the skills explored in this talk.
The Concept of Concurrency & Multithreading: What Are They And How They FunctionAs the world around us moves ever more online, the need for software engineers is growing - seemingly by the hour. Whether by building firewalls that fend off the next big data breach, or developing the next app that goes viral, we have a seemingly i...
Christina Schaireiter
5 Reasons Why Attending Conferences in 2026 Matters More Than You ThinkIt’s 2026, and the “remote vs. office” debate has finally settled into a high-tech hybrid reality. While we’ve perfected the art of shipping production-grade code from decentralized hubs and home setups, something shifted. We realized that while AI c...
Why Attend a Developer Event?Modern software engineering moves too fast for documentation alone. Attending a world-class event is about shifting from tactical execution to strategic leadership.
Skill Diversification: Break out of your specific tech stack to see how the industry...
From learning to earning
Jobs that call for the skills explored in this talk.