🗺 The Atlas
Learn Python, T-shaped
First the whole field, broad and shallow. Then deep stems drive down into one domain at a time — each climbing Bloom's six levels, ending in something you build.
The one idea
Everything is an object, and a name is just a label tied to one.
A variable is not a box that holds a value — it is a name bound to an object that lives elsewhere. Assignment rebinds the name; it never copies the object. Once you see that, mutability, identity, default arguments, and copying all stop being surprises.
The ladder every stem climbs
L1
Remember
recall
L2
Understand
explain
L3
Apply
use
L4
Analyze
compare
L5
Evaluate
judge
L6
Create
build
The 8 domains
The Object Model
Names, objects, identity vs. equality, and mutability — the layer everything else sits on.
Create: An immutable Money value object with correct __eq__/__hash__, gated by a property test.
Built-in Data Structures
list, dict, set, tuple — their cost models and when each is the right reach.
Create: A frequency-count pipeline that picks the right structure at each step, justified by Big-O.
Functions & Scope
First-class functions, closures, *args/**kwargs, and the LEGB scope rule.
Create: A retry decorator with configurable backoff, preserving the wrapped function's metadata.
Classes & Protocols
Dunder methods, dataclasses, properties, and duck typing over rigid inheritance.
Create: A Vector type implementing the numeric protocol so it works with +, *, and len().
Iteration & Laziness
Iterators, generators, comprehensions, and why lazy beats eager at scale.
Create: A streaming log parser that processes a multi-GB file in constant memory.
Errors & Resources
Exceptions as control flow, context managers, and cleaning up deterministically.
Create: A transactional file-writer context manager that rolls back on failure.
Concurrency
The GIL, threads vs. asyncio vs. processes, and matching the model to the bottleneck.
Create: A concurrent URL fetcher that picks asyncio for I/O-bound work and proves the speedup.
Testing & Tooling
pytest, type hints, profiling — the production concerns that keep code honest.
Create: A tested, type-checked module with a profiling report justifying one optimization.