Go — Learning Roadmap¶
This roadmap is your study plan. Work through the phases in order. Each phase builds directly on the previous one. Mark your current position with ← You Are Here and update it as you progress.
This topic spans the full arc from zero to expert — from installing Go and writing your first program (Module 0) all the way to runtime internals, performance work, and shipping a real production service (the Capstone, Module 19). The goal is genuine professional competence: the level of someone who has worked with Go in a company for a couple of years.
Prerequisites Map¶
Confirm you have working knowledge of these before entering Phase 1:
If you have never written a program in any language, spend time with a beginner Python or JavaScript course first. All programming fundamentals (variables, loops, functions) carry over directly and you will learn Go much faster with that foundation.
Learning Path Visualization¶
flowchart TD
A([Prerequisites Met]) --> B
subgraph P1["Phase 1: Foundation • Weeks 1–3"]
B[Module 0: Introduction]
B --> C[Module 1: Types and Variables]
C --> D[Module 2: Control Flow]
end
subgraph P2["Phase 2: Core Concepts • Weeks 4–6"]
E[Module 3: Functions]
E --> F[Module 4: Composite Types]
F --> G[Module 5: Pointers]
end
subgraph P3["Phase 3: Applied Skills • Weeks 7–10"]
H[Module 6: Methods and Interfaces]
H --> I[Module 7: Packages and Modules]
I --> J[Module 8: Error Handling]
J --> K[Module 9: Concurrency]
end
subgraph P4["Phase 4: Modern, Tested Go • Weeks 11–13"]
L[Module 10: Generics]
L --> M[Module 11: Testing and Benchmarking]
end
subgraph P5["Phase 5: Production Go • Weeks 14–18"]
N[Module 12: Advanced Concurrency Patterns]
N --> O[Module 13: Web Services and APIs]
O --> P[Module 14: Databases and Persistence]
P --> Q[Module 15: Reflection and Metaprogramming]
end
subgraph P6["Phase 6: Expert • Weeks 19–23"]
R[Module 16: Performance and Profiling]
R --> S[Module 17: Runtime Internals and the Memory Model]
S --> T[Module 18: Build, Tooling, and Deployment]
end
subgraph P7["Phase 7: Capstone • Weeks 24+"]
U[Module 19: Capstone Project]
U --> V([Topic Complete ✓])
end
D --> E
G --> H
K --> L
M --> N
Q --> R
T --> U
style A fill:#2a9d8f,color:#fff,stroke:none
style V fill:#2a9d8f,color:#fff,stroke:none
style P1 fill:#edf2fb,stroke:#8d99ae
style P2 fill:#fef3c7,stroke:#d97706
style P3 fill:#fee2e2,stroke:#dc2626
style P4 fill:#e0e7ff,stroke:#4f46e5
style P5 fill:#fae8ff,stroke:#a21caf
style P6 fill:#dcfce7,stroke:#16a34a
style P7 fill:#cffafe,stroke:#0891b2
Phase Breakdown¶
Phase 1: Foundation¶
Goal: Get the Go toolchain installed, understand the language's philosophy, learn the type system and control flow. Leave Phase 1 able to write small Go programs from scratch.
| Module | Name | Est. Hours | Key Skill Gained |
|---|---|---|---|
| 0 | Introduction | 2–3 hrs | Working environment; install; hello world; go toolchain |
| 1 | Types and Variables | 3–4 hrs | Declaring variables; understanding zero values and iota |
| 2 | Control Flow | 3–4 hrs | for (all forms), if/else, switch, defer |
Phase 1 Exit Criteria:
- Go is installed;
go versionprints a Go 1.18+ version - Can write, format, and run a Go program from the command line
- Can declare variables using
var,:=, andconst - Understands zero values and can explain why they matter
- Can write loops using all three forms of Go's
for - Scored ≥ 70% on Module 0, 1, and 2 tests
- Completed at least one Beginner-level project from PROJECTS.md
Milestone unlocked: Foundation Built
Phase 2: Core Concepts¶
Goal: Master Go's core building blocks — functions, composite data types, and pointer semantics. Leave Phase 2 able to write non-trivial programs that handle real data.
| Module | Name | Est. Hours | Key Skill Gained |
|---|---|---|---|
| 3 | Functions | 4–5 hrs | Multiple returns; closures; first-class functions |
| 4 | Composite Types | 5–6 hrs | Slices, maps, structs — the backbone of Go programs |
| 5 | Pointers | 3–4 hrs | Pointer syntax; value vs pointer semantics; when each matters |
Phase 2 Exit Criteria:
- Can write functions that return multiple values including errors
- Can use slices and maps idiomatically (append, make, delete, range)
- Understands the difference between passing by value and by pointer
- Can define structs and use them to model domain data
- Scored ≥ 75% on all Phase 2 module tests
- Completed at least one Intermediate-level project from PROJECTS.md
Milestone unlocked: Core Mastery
Phase 3: Applied Skills¶
Goal: Learn how idiomatic Go programs are structured — interfaces, package organization, the error-handling discipline that makes Go codebases maintainable, and Go's signature concurrency model. Leave Phase 3 able to build well-structured, concurrent Go programs others can read.
| Module | Name | Est. Hours | Key Skill Gained |
|---|---|---|---|
| 6 | Methods and Interfaces | 5–6 hrs | Interface design; structural typing; type assertions |
| 7 | Packages and Modules | 3–4 hrs | Code organization; go.mod; visibility rules |
| 8 | Error Handling | 4–5 hrs | error interface; wrapping; custom errors; panic/recover |
| 9 | Concurrency | 6–8 hrs | Goroutines, channels, select, sync.Mutex, sync.WaitGroup |
Phase 3 Exit Criteria:
- Can define interfaces and write code that satisfies them implicitly
- Can organize a multi-file, multi-package Go program correctly
- Handles errors with
fmt.Errorf/%w,errors.Is,errors.As - Never ignores an error return value silently
- Can write concurrent programs with goroutines and channels
- Scored ≥ 80% on all Phase 3 module tests
- GLOSSARY.md covers all terms encountered through Module 9
Milestone unlocked: Applied Practitioner
Phase 4: Modern, Tested Go¶
Goal: Add the two skills that separate hobby code from professional code: writing reusable generic code, and proving your code works with a real test suite.
| Module | Name | Est. Hours | Key Skill Gained |
|---|---|---|---|
| 10 | Generics | 5–6 hrs | Type parameters, constraints, generic data structures |
| 11 | Testing and Benchmarking | 6–8 hrs | Table-driven tests, benchmarks, fuzzing, coverage, httptest |
Phase 4 Exit Criteria:
- Can write generic functions and types, and explain when generics help vs. hurt
- Writes table-driven tests as a default habit
- Can write and read a benchmark and a fuzz test
- Uses
go test -raceand-coverroutinely - Scored ≥ 80% on Module 10 and 11 tests
Milestone unlocked: Professional Foundations
Phase 5: Production Go¶
Goal: Build the things companies actually pay Go developers to build — concurrent systems, HTTP/JSON services, and database-backed applications — and understand the reflection machinery that powers Go's libraries.
| Module | Name | Est. Hours | Key Skill Gained |
|---|---|---|---|
| 12 | Advanced Concurrency Patterns | 7–9 hrs | context, pipelines, worker pools, atomics, race detection |
| 13 | Web Services and APIs | 7–9 hrs | net/http, routing, middleware, JSON APIs, graceful shutdown |
| 14 | Databases and Persistence | 6–8 hrs | database/sql, transactions, migrations, the repository pattern |
| 15 | Reflection and Metaprogramming | 5–6 hrs | reflect, struct tags, encoding internals, go generate |
Phase 5 Exit Criteria:
- Can use
context.Contextfor cancellation and deadlines throughout a program - Can build a real HTTP JSON API with middleware and graceful shutdown
- Can persist and query data safely with transactions and prepared statements
- Understands how
encoding/jsonuses reflection and struct tags - Completed at least one Advanced-level project from PROJECTS.md
- Scored ≥ 80% on all Phase 5 module tests
Milestone unlocked: Production Engineer
Phase 6: Expert¶
Goal: Develop the judgment of someone who has run Go in production for years — the ability to profile and optimize, to reason about the runtime and memory model, and to build, harden, and ship binaries reliably.
| Module | Name | Est. Hours | Key Skill Gained |
|---|---|---|---|
| 16 | Performance and Profiling | 7–9 hrs | pprof, escape analysis, allocations, GC tuning, optimization |
| 17 | Runtime Internals and the Memory Model | 7–9 hrs | Scheduler, GC, the Go memory model, unsafe, cgo |
| 18 | Build, Tooling, and Deployment | 6–8 hrs | Build modes, cross-compilation, linters, CI/CD, containers, releases |
Phase 6 Exit Criteria:
- Can capture and read CPU and memory profiles with pprof
- Can explain escape analysis and remove an avoidable heap allocation
- Can explain the goroutine scheduler (G-M-P) and the garbage collector in depth
- Can state what the Go memory model does and does not guarantee
- Can cross-compile, lint, containerize, and release a Go binary through CI
- Scored ≥ 85% on all Phase 6 module tests
Milestone unlocked: Go Expert
Phase 7: Capstone¶
Goal: Prove it. Build a real, production-ready Go service end to end, synthesizing everything from the previous 19 modules.
| Activity | Est. Hours | Description |
|---|---|---|
| Module 19: Capstone Project | 25–50 hrs | Build and ship a real service (e.g. a URL shortener, task API, or job runner) with tests, persistence, concurrency, observability, and a release pipeline |
| Topic Review | 3–5 hrs | Revisit any modules where test scores were below 85% |
| Final Self-Assessment | 1–2 hrs | Retake weakest module tests; verify overall ≥ 85% |
The capstone module gives you a project brief, milestones, and a Help / Getting Unstuck section with staged hints — but it intentionally does not hand you a finished solution. You drive the build; the help is only there to unblock you so you can keep moving on your own.
Phase 7 Exit Criteria:
- Capstone project is complete, tested, and documented
- The project uses concepts from at least 8 different modules
- The service builds into a single binary and runs in a container
- Capstone documented in PROJECTS.md with a design write-up
- Overall topic score ≥ 85%
Milestone unlocked: Topic Mastery
Time Estimates Summary¶
| Phase | Weeks | Est. Hours | Cumulative |
|---|---|---|---|
| Phase 1: Foundation | 1–3 | 8–11 hrs | ~10 hrs |
| Phase 2: Core Concepts | 4–6 | 12–15 hrs | ~25 hrs |
| Phase 3: Applied Skills | 7–10 | 18–23 hrs | ~48 hrs |
| Phase 4: Modern, Tested Go | 11–13 | 11–14 hrs | ~61 hrs |
| Phase 5: Production Go | 14–18 | 25–32 hrs | ~92 hrs |
| Phase 6: Expert | 19–23 | 20–26 hrs | ~115 hrs |
| Phase 7: Capstone | 24+ | 29–57 hrs | ~160 hrs |
| Total | 24+ | ~123–178 hrs |
[!NOTE] These estimates assume roughly 5–7 focused hours per week. If you're studying part-time, the calendar weeks will stretch accordingly. Reaching the expert tiers (Phases 6–7) realistically also requires real project work beyond the modules — the hours above cover the material, not the years of judgment that professional experience adds. The capstone is where that judgment starts to form.
What Go Enables¶
After completing this topic, the following doors open:
Go Mastery
│
├── [[docker-containers]] — Read and write Dockerfiles; understand Docker internals
├── [[networking]] — Build production HTTP servers, TCP services, gRPC APIs
├── [[algorithms]] — Implement data structures cleanly in a typed language
├── [[rust]] — Natural next language if you want lower-level systems programming
└── Cloud Native — Contribute to or extend Kubernetes, Terraform, Prometheus
Milestone Definitions¶
| Milestone | Earned When | Point Threshold |
|---|---|---|
| First Step | Module 0 complete | Any score |
| Foundation Built | Phase 1 complete, all tests ≥ 70% | ~45 pts |
| Core Mastery | Phase 2 complete, all tests ≥ 75% | ~95 pts |
| Applied Practitioner | Phase 3 complete, all tests ≥ 80% | ~175 pts |
| Professional Foundations | Phase 4 complete, all tests ≥ 80% | ~225 pts |
| Production Engineer | Phase 5 complete, all tests ≥ 80% | ~325 pts |
| Go Expert | Phase 6 complete, all tests ≥ 85% | ~415 pts |
| Topic Mastery | Capstone shipped, overall ≥ 85% | ~470 pts |
Alternative Paths¶
Fast Track (If You Have Prior Experience)¶
If you already know another statically typed language well (Java, C#, C++, Rust):
Take the Module 0 test first. If you score ≥ 85%, the fast track is appropriate. Even on the fast track, do not skip Phases 4–7 — generics, testing, the runtime, and the capstone are where intermediate Go developers become expert ones.
Deep Dive Path (Maximum Understanding)¶
For maximum depth, add these supplementary activities between phases:
- After Phase 1: Read The Go Programming Language (Donovan & Kernighan), Chapters 1–3
- After Phase 2: Work through the exercises in Chapters 4–6 of the same book
- After Phase 3: Read Effective Go (go.dev/doc/effective_go) end to end
- After Phase 5: Read the
net/httpanddatabase/sqlpackage source for the standard library patterns - After Phase 6: Read the Go memory model (go.dev/ref/mem) and the runtime scheduler design docs
Project-First Path (Learn by Building)¶
If you learn best by doing rather than reading:
Alternate one module of theory with one hands-on project at each step. The tight feedback loop accelerates retention. By Phase 5 you should be building continuously, not just at the end.
You Are Here¶
Current Phase: Not started
Current Module: None — begin at Module 0
Last Completed Module: None
Next Action: Open Module 0 and read the Overview section.
Update this section each time you advance to a new module or phase.