Concurrency & Async
Doing many things at once, and the bugs that come with it.
Backend Engineer track
Junior
Write correct code, ship small changes safely, ask good questions.
Core: start here
- async / awaitSyntax for writing asynchronous code that reads like synchronous code.
- Promise / FutureAn object representing a value that will be available later.
2 more junior concepts
- CallbackA function passed in to be called when work finishes.
- Callback HellDeeply nested callbacks that make async code unreadable.
Mid-level
Own a feature end to end without hand-holding.
Core: start here
- Concurrency vs ParallelismDealing with many things at once vs doing many things at once.
- Event LoopA single thread running tasks from a queue, as in JavaScript and asyncio.
- Race ConditionA bug where the result depends on unpredictable timing.
13 more mid-level concepts
- Atomic OperationAn operation that completes entirely or not at all, with no interleaving.
- Blocking vs Non-blocking I/OWhether waiting for I/O stops the thread.
- CancellationStopping in-flight async work cleanly, e.g. with AbortController or a context.
- Check-Then-Act Race (TOCTOU)Checking a condition and acting on it as two steps, so something changes in between.
- CoroutineA function that can pause and resume; the basis of async/await.
- Critical SectionCode that must not run concurrently with itself.
- DeadlockTwo or more tasks waiting on each other forever.
- Global Interpreter Lock (GIL)Python's lock that lets only one thread run bytecode at a time.
- Mutex / LockEnsuring only one thread enters a critical section at a time.
- ProcessA running program with its own memory space.
- ThreadAn execution path within a process that shares its memory.
- Thread PoolA fixed set of reusable worker threads.
- Thread SafetyCode that behaves correctly when called from many threads.
Senior
Own a system, its failure modes, and its trade-offs.
- Actor ModelConcurrency through isolated actors that communicate by messages.
- BackpressureA slow consumer signalling a fast producer to slow down.
- ChannelA typed pipe for passing values between concurrent tasks.
- Green Threads / GoroutinesLightweight threads scheduled by the runtime rather than the OS.
- LivelockTasks keep reacting to each other without making progress.
- SemaphoreA counter limiting how many tasks can use a resource at once.
- StarvationA task never gets the resources it needs to run.
Staff
Shape how many teams build, across systems.
Nothing here yet.
Principal
Set technical direction for the organization.
- Lock-Free Data StructuresConcurrent structures built from atomic operations instead of locks.
- Memory ModelThe rules for when writes by one thread become visible to others.
Data Engineer track
Junior
Build and fix pipelines from clear specs; write correct SQL.
- async / awaitSyntax for writing asynchronous code that reads like synchronous code.
- CallbackA function passed in to be called when work finishes.
- Callback HellDeeply nested callbacks that make async code unreadable.
- Promise / FutureAn object representing a value that will be available later.
Mid-level
Own pipelines and models end to end, including their quality.
- Atomic OperationAn operation that completes entirely or not at all, with no interleaving.
- Blocking vs Non-blocking I/OWhether waiting for I/O stops the thread.
- CancellationStopping in-flight async work cleanly, e.g. with AbortController or a context.
- Check-Then-Act Race (TOCTOU)Checking a condition and acting on it as two steps, so something changes in between.
- Concurrency vs ParallelismDealing with many things at once vs doing many things at once.
- CoroutineA function that can pause and resume; the basis of async/await.
- Critical SectionCode that must not run concurrently with itself.
- DeadlockTwo or more tasks waiting on each other forever.
- Event LoopA single thread running tasks from a queue, as in JavaScript and asyncio.
- Global Interpreter Lock (GIL)Python's lock that lets only one thread run bytecode at a time.
- Mutex / LockEnsuring only one thread enters a critical section at a time.
- ProcessA running program with its own memory space.
- Race ConditionA bug where the result depends on unpredictable timing.
- ThreadAn execution path within a process that shares its memory.
- Thread PoolA fixed set of reusable worker threads.
- Thread SafetyCode that behaves correctly when called from many threads.
Senior
Design the platform's storage, processing and modeling choices.
- Actor ModelConcurrency through isolated actors that communicate by messages.
- BackpressureA slow consumer signalling a fast producer to slow down.
- ChannelA typed pipe for passing values between concurrent tasks.
- Green Threads / GoroutinesLightweight threads scheduled by the runtime rather than the OS.
- LivelockTasks keep reacting to each other without making progress.
- SemaphoreA counter limiting how many tasks can use a resource at once.
- StarvationA task never gets the resources it needs to run.
Staff
Shape how the whole organization produces and uses data.
Nothing here yet.
Principal
Set data strategy and architecture across the company.
- Lock-Free Data StructuresConcurrent structures built from atomic operations instead of locks.
- Memory ModelThe rules for when writes by one thread become visible to others.
Frontend Engineer track
Junior
Build UI that works, ship small changes safely, ask good questions.
Core: start here
- async / awaitSyntax for writing asynchronous code that reads like synchronous code.
- Promise / FutureAn object representing a value that will be available later.
3 more junior concepts
- CallbackA function passed in to be called when work finishes.
- Callback HellDeeply nested callbacks that make async code unreadable.
- Promise.all, race and allSettledWaiting on many promises at once with different failure behavior.
Mid-level
Own a feature end to end without hand-holding.
Core: start here
- Event LoopA single thread running tasks from a queue, as in JavaScript and asyncio.
- Race ConditionA bug where the result depends on unpredictable timing.
6 more mid-level concepts
- Blocking vs Non-blocking I/OWhether waiting for I/O stops the thread.
- CancellationStopping in-flight async work cleanly, e.g. with AbortController or a context.
- Check-Then-Act Race (TOCTOU)Checking a condition and acting on it as two steps, so something changes in between.
- Concurrency vs ParallelismDealing with many things at once vs doing many things at once.
- CoroutineA function that can pause and resume; the basis of async/await.
- Web WorkerRunning JavaScript on a background thread in the browser.
Senior
Own an app's architecture, performance, and failure modes.
- BackpressureA slow consumer signalling a fast producer to slow down.
- DeadlockTwo or more tasks waiting on each other forever.
- ProcessA running program with its own memory space.
- ThreadAn execution path within a process that shares its memory.
Staff
Shape how many teams build, across apps.
Nothing here yet.
Principal
Set technical direction for the organization.
Nothing here yet.