Learn Go by building, testing, and operating real software.
The Go Engineer is a repo-first Go software engineering learning system. The curriculum is moving from an alpha-era section inventory to a beta stage model that is easier for learners to navigate from zero to production-minded engineering work.
The beta public architecture is now the main learner-facing direction. The source content still lives in the current section folders while the beta shell is rolled out incrementally.
If you want the public explanation of that transition model, read docs/beta-public-architecture.md.
Pick the release channel that matches what you want:
release/v1: the stable v1 line for learners who want the current supported experiencerelease/v2: the current public alpha checkpoint for the v2 linemain: the active beta implementation branch and the fastest-moving linev2.0.0-alpha.1: the first public v2 alpha tag
If you want the safest path today, use release/v1.
If you want the current public v2 checkpoint, use release/v2 or the v2.0.0-alpha.1 tag.
If you want to follow the beta rollout as it lands, use main.
git clone https://github.com/rasel9t6/the-go-engineer.git
cd the-go-engineer
go mod download
go version
go run ./01-core-foundations/getting-started/2-hello-worldThe beta curriculum is organized by engineering stage. Each stage now has a dedicated public entry page under docs/stages.
Start at 0 Foundation. That stage page points to the current source surface for beginner setup and first-run work.
Start at 1 Language Fundamentals. If you want a faster ramp, skim 0 Foundation first and then use the stage page to jump into the current source sections.
Jump to the stage you want to strengthen:
- concurrency: 5 Concurrency System
- quality and performance: 6 Quality and Performance
- architecture: 7 Architecture
- production and operations: 8 Production Engineering
You will work through:
- beginner-friendly exercises and starter projects
- parsers, filesystem tools, and CLI utilities
- HTTP services and database-backed applications
- concurrency pipelines, worker pools, and timeout-aware clients
- profiling, testing, and benchmark-driven improvements
- structured logging, graceful shutdown, gRPC, and deployment-ready workflows
These docs are still useful during the beta shell rollout:
| Document | Purpose |
|---|---|
| LEARNING-PATH.md | current learning guide during the beta routing transition |
| docs/stages/README.md | beta stage entry index and stage-by-stage public routing |
| docs/beta-public-architecture.md | explanation of alpha source inventory versus beta public architecture |
| docs/curriculum/README.md | alpha source inventory and section-by-section curriculum map |
| COMMON-MISTAKES.md | common Go bugs and fixes |
| ROADMAP.md | public roadmap and release direction |
| CHANGELOG.md | change history |
| CONTRIBUTING.md | contribution workflow and repo rules |
| RELEASE.md | release process |
Maintainers and contributors can follow the beta planning set on
planning/v2.
During the beta rollout:
- the beta stage model is the public navigation truth
- the current section folders remain the source inventory
- some stages regroup content from multiple alpha sections
- some alpha sections split across more than one beta stage
- stage entry docs and deeper beta routing are being added incrementally
That means the README now presents the curriculum by beta stage even though the physical folder layout is still mostly the alpha-era section structure.
For the full explanation of that relationship, see docs/beta-public-architecture.md.
# run a lesson
go run ./01-core-foundations/getting-started/2-hello-world
# run a starter exercise
go run ./04-functions-and-errors/8-error-handling/_starter
# compare with the canonical solution
go run ./04-functions-and-errors/8-error-handlinggo run ./scripts/validate_curriculum.go
go test ./...Some database and capstone paths use go-sqlite3, which requires CGO and a C compiler.
If you are on Windows, WSL2 is the smoothest setup for those paths.
This project is licensed under the The Go Engineer License (TGE License) v1.0.
- Free for personal, educational, and non-commercial use
- Commercial use requires permission