Week 1: Containers and infrastructure
Containers solve the “it works on my machine” problem by packaging an application and its environment together. Docker Compose lets you define multi-container setups in a single YAML file. The most practical lesson: isolation helps you focus. Each service runs in its own container with explicit dependencies.
Weeks 2 to 6: The modern data stack
Weeks 2 to 6 were completed in October 2026 with Claude as a pair programmer. Together we worked through orchestration with Prefect, data warehousing with DuckDB (local stand-in for BigQuery), analytics engineering with dbt, batch processing with PySpark, and streaming with Redpanda (Kafka API).
Key insight: every week reinforced that data engineering is more about understanding trade-offs than memorising tools. Partitioning trades storage for query speed. Orchestration trades immediate results for reliable, repeatable pipelines. Stream processing trades simplicity for real-time responsiveness.
Working with Claude showed me that pair programming with an AI is less about delegation and more about iteration. The code came from conversation, testing and refinement, not magic. The final work is honest: every homework answer computed from real queries, every run log pasted from actual terminal output.