Learn to read and critique code like a senior engineer.
- Template:
vault/templates/code-review-exercise.md - Example:
tracks/go/exercises/code-review/_example-pr-auth/ - Skills: Bug detection, security awareness, design critique, constructive feedback
Master exploring unfamiliar codebases efficiently.
- Template:
vault/templates/codebase-navigation-exercise.md - Example:
vault/examples/codebase-navigation/_example-project/ - Skills: grep/ripgrep mastery, control flow tracing, architectural understanding
Design clean, maintainable interfaces and public APIs.
- Template:
vault/templates/api-design-exercise.md - Example:
tracks/go/exercises/api-design/_example-rate-limiter/ - Skills: Interface design, error handling, API evolution, usability
Systems programming with manual memory management and comptime metaprogramming.
- Directory:
tracks/zig/ - README: Comprehensive setup and learning guide
- Focus: Allocators, comptime, C interop, explicit everything
Pure functional programming with lazy evaluation and strong types.
- Directory:
tracks/haskell/ - README: Comprehensive setup and learning guide
- Focus: Pure functions, type classes, monads, lazy evaluation
JVM ecosystem through modern lens — functional + OOP blend.
- Directory:
tracks/scala/ - README: Comprehensive setup and learning guide
- Focus: JVM ecosystem, Java interop, pattern matching, for-comprehensions
- Replaces: Java (learn Java through Scala — same bytecode, better features)
- ✅
CLAUDE.md— Added exercise type sections, updated language list - ✅
curriculum/map.yaml— Java→Scala, added Zig/Haskell to applicable modules - ✅
curriculum/progress.yaml— Java→Scala, added Zig/Haskell progress sections - ✅
START-HERE.md— Updated language list and enhancements - ✅
README.md— Updated language rationales - ✅
vault/rosetta/common-operations.md— Added Scala, Zig, Haskell columns
- ✅ Created complete directory trees for Zig, Haskell, Scala
- ✅ Created vault subdirectories for new languages
- ✅ Created example exercise directories for all three new types
- ✅ Created comprehensive README files for each new language
| Language | Paradigm | Why Learn It |
|---|---|---|
| Go | Imperative, concurrent | Systems, services, simplicity |
| TypeScript | Multi-paradigm | Web, productivity, type safety |
| Rust | Systems, functional | Memory safety, performance, ownership |
| Python | Multi-paradigm | Data, scripting, ecosystem |
| Scala | Functional + OOP | JVM ecosystem, enterprise patterns |
| Zig | Systems | Manual memory, comptime, low-level |
| Haskell | Pure functional | Type theory, lazy evaluation, principled FP |
| C# | OOP, functional | .NET ecosystem |
- Pick a realistic PR scenario (auth, caching, API endpoint)
- Use template:
vault/templates/code-review-exercise.md - Create directory:
tracks/<lang>/exercises/code-review/<scenario>/ - Include:
- PR context (README.md)
- Codebase context files
- The changes (diff or file)
- Progressive hints
- Expert review for comparison
- Choose an OSS project (small for beginners, large for advanced)
- Use template:
vault/templates/codebase-navigation-exercise.md - Create directory:
vault/examples/codebase-navigation/<project>/ - Write missions (find X, trace Y, understand Z)
- Document solutions with search strategies
- Pick a library/service interface to design
- Use template:
vault/templates/api-design-exercise.md - Create directory:
tracks/<lang>/exercises/api-design/<scenario>/ - Write requirements (functional, non-functional, constraints)
- Show 2-3 alternative designs with trade-offs
- Discuss evolution strategies
For Scala, Zig, or Haskell:
- Read
tracks/<lang>/README.mdfor setup instructions - Say "let's start variables-and-types in Scala"
- I'll generate lesson.md, reference.md, and code examples
- Work through exercises
- Build up vault notes as you learn
✅ Complete templates for all three exercise types ✅ Example structures showing what good exercises look like ✅ Language tracks with setup guides and learning philosophy ✅ Documentation fully updated across the system ✅ Progress tracking configured for all languages ✅ Curriculum map updated with language applicability
- "Let's start Scala variables-and-types"
- "Let's start Zig variables-and-types"
- "Let's start Haskell variables-and-types"
- "Create a code review exercise for Go authentication PR"
- "Create a codebase navigation exercise for [OSS project]"
- "Create an API design exercise for a rate limiter in Go"
- Continue with existing progress in Go/TypeScript/Rust/Python
The old tracks/java/ directory still exists if you want to reference anything. You can:
- Delete it:
rm -rf tracks/java - Archive it:
mv tracks/java tracks/_archived_java - Keep it temporarily while migrating content to Scala
Scala was chosen because:
- Runs on JVM (same ecosystem as Java)
- Uses Java libraries seamlessly
- Teaches Java concepts (interfaces, classes, inheritance)
- But with modern features (type inference, pattern matching, functional programming)
- You effectively learn Java through Scala without the verbose syntax
The three new exercise types address skills that are critical but rarely taught:
- Code review — You spend 50% of your time reading others' code
- Codebase navigation — Every new job means an unfamiliar codebase
- API design — Interface design is distinct from implementation
These complement the existing technical depth to create a more complete professional skillset.
The system is now production-ready! Pick what you want to work on next. 🚀