Skip to content

Home

Table of Contents

# 🐹 Go From Zero **A six-month, build-in-public journey from zero to production-grade Go backend engineer.** Part learning journal · part engineering notebook · part knowledge base · part portfolio. [![Go CI](https://github.com/nabin747/go-from-zero/actions/workflows/go-ci.yml/badge.svg)](https://github.com/nabin747/go-from-zero/actions/workflows/go-ci.yml) [![Markdown Lint](https://github.com/nabin747/go-from-zero/actions/workflows/markdown-lint.yml/badge.svg)](https://github.com/nabin747/go-from-zero/actions/workflows/markdown-lint.yml) [![Links](https://github.com/nabin747/go-from-zero/actions/workflows/link-check.yml/badge.svg)](https://github.com/nabin747/go-from-zero/actions/workflows/link-check.yml) ![Go Version](https://img.shields.io/badge/Go-1.22-00ADD8?logo=go) ![License: MIT](https://img.shields.io/badge/License-MIT-green.svg) [![Latest release](https://img.shields.io/github/v/release/nabin747/go-from-zero?sort=semver&label=release)](https://github.com/nabin747/go-from-zero/releases/latest) ![Curriculum](https://img.shields.io/badge/Curriculum-6_months_authored-success) ![day notes](https://img.shields.io/badge/day_notes-168-blue) ![projects](https://img.shields.io/badge/projects-7%2F7-blue) ![examples](https://img.shields.io/badge/examples-98-blue) ![exercises](https://img.shields.io/badge/exercises-72-blue) ![interview Qs](https://img.shields.io/badge/interview_Qs-220%2B-blue) ![cheatsheets](https://img.shields.io/badge/cheatsheets-10-blue)

πŸ“Œ What is this?

This repository documents my journey learning the Go programming language from absolute zero to building production-quality backend services. It is intentionally built in public so that:

  • I learn faster (teaching + retrieval practice beat passive reading),
  • I leave a portfolio that demonstrates real engineering, not just tutorials, and
  • other developers can learn Go alongside me by following the same path.

It is structured around a research-backed learning system (see docs/RESEARCH.md) combining Project-Based Learning, Active Recall, Spaced Repetition, the Feynman Technique, and Deliberate Practice.

🧭 New here? Start with the Roadmap, skim a cheatsheet, or read how to use this repo.


πŸ—ΊοΈ Repository Map

Path What lives here
ROADMAP.md The full 6-month β†’ month β†’ week β†’ day learning plan
PROGRESS.md Live progress: completion %, streak, hours, skill matrix, heatmap
LEARNING_LOG.md One-line-per-day chronological log (the "table of contents" of my brain)
journal/ Daily notes, weekly reviews, monthly reviews (the heart of the repo)
projects/ Progressive projects, beginner β†’ production capstone
examples/ Small, runnable, single-concept Go programs
exercises/ Practice problems with my solutions, graded by difficulty
patterns/ Idiomatic Go & design patterns with runnable demos
algorithms/ Data structures & algorithms implemented in Go
interview/ 100+ interview questions, system design, coding challenges
cheatsheets/ Dense quick-reference sheets for every major topic
patterns/ Β· docs/ Architecture docs, ADRs, and research
docs/adr/ Architecture Decision Records
templates/ Daily / weekly / monthly note templates
scripts/ Automation (new-day generator, progress tools)
cheatsheets/ Β· RESOURCES.md Curated learning resources
.github/ CI workflows, issue/PR templates, labels

Reference docs: RESOURCES Β· NOTES Β· FAQ Β· CHANGELOG Β· CONTRIBUTING


πŸ“Š Progress Snapshot

This repo tracks two different things β€” what's built and what I've personally studied.

πŸ“¦ Repository content (authored & verified)

The full six-month curriculum and all projects are written and in the repo.

Metric Value
Curriculum authored βœ… 6 months Β· 168 day notes Β· 24 weekly + 6 monthly reviews
Projects implemented βœ… 7 / 7 (beginner β†’ production capstone)
Runnable examples 98 (stdlib-only)
Exercises (with tests) 72
Interview questions 220+ across 9 files
Cheatsheets 10

| Build status | go test β€” 88 root packages passing (race-clean) βœ… |

Month 1 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 100%  Fundamentals               (content authored)
Month 2 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 100%  Stdlib, Tooling & Testing   (content authored)
Month 3 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 100%  Concurrency                 (content authored)
Month 4 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 100%  Web & REST APIs + Databases (content authored)
Month 5 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 100%  gRPC, Architecture & Micro. (content authored)
Month 6 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 100%  Production & Capstone        (content authored)

πŸŽ“ My study progress (the actual learning journey)

The honest day-by-day tracker β€” updated as I work through the material. Live detail in PROGRESS.md.

Metric Value
Days studied 1 / 168
Current focus Month 1 Β· Week 1 β€” Fundamentals
Current streak πŸ”₯ 0 days
Study hours logged ~1.5 h
Projects built myself 0 / 7

🧠 The Learning System

This repo runs a daily loop: Read β†’ Build β†’ Explain β†’ Recall β†’ Review.

flowchart LR
    A[Read<br/>docs & books] --> B[Build<br/>code & projects]
    B --> C[Explain<br/>Feynman notes]
    C --> D[Recall<br/>self-quiz]
    D --> E[Review<br/>weekly + monthly]
    E -.spaced repetition.-> A
  • Every day β†’ a day note (topics, code, mistakes, questions, reflection, confidence score) + a commit.
  • Every week β†’ a weekly review (lessons, strengths, weaknesses, next-week goals).
  • Every month β†’ a monthly review + a project + a Git tag/release + a portfolio update.

See docs/RESEARCH.md for the evidence behind each choice.


πŸš€ How to Use This Repo

If you're me (the author):

  1. Run ./scripts/new-day.sh to scaffold today's note from the template.
  2. Follow today's plan in ROADMAP.md.
  3. Code in the relevant folder; write the note; self-quiz; commit with a Conventional Commit.
  4. At week/month boundaries, run the review templates and tag a release.

If you're a fellow learner:

  1. Start at ROADMAP.md and follow it day by day.
  2. Use the cheatsheets/ as quick reference and the interview/ bank for retrieval practice.
  3. Build the projects/ yourself before reading my notes β€” then compare.
  4. ⭐ Star the repo to follow along; open a Discussion to ask questions.

πŸ› οΈ Tech & Tooling Covered

Go 1.22 Β· net/http Β· chi Β· gRPC Β· protobuf Β· PostgreSQL Β· pgx Β· sqlc Β· golang-migrate Β· Redis Β· log/slog Β· testify Β· testcontainers-go Β· Docker Β· Prometheus Β· OpenTelemetry Β· GitHub Actions Β· golangci-lint Β· pprof


πŸ“… The Six Months at a Glance

Month Theme Project Output Release
1 Go Fundamentals CLI Todo app v0.1.0
2 Stdlib, Tooling & Testing URL shortener (tested) v0.2.0
3 Concurrency & Parallelism Concurrent web crawler v0.3.0
4 Web, REST APIs & Databases Bookstore REST API + Postgres v0.4.0
5 gRPC, Architecture & Microservices gRPC microservice + job queue v0.5.0
6 Production, Observability & Capstone Multi-tenant SaaS backend v0.6.0 β†’ v1.0.0 πŸŽ“

Full detail β€” objectives, weekly breakdowns, daily plans, reading, interview prep, assessments, milestones β€” is in ROADMAP.md. All milestones are published on the Releases page.


🀝 Contributing & Feedback

Spotted a mistake in my notes or have a better idiom? Please open an issue or a PR β€” see CONTRIBUTING.md. Corrections make this a better resource for everyone.

πŸ“„ License

Code and content are released under the MIT License. Learn freely.

⭐ **If this helps you learn Go, consider starring the repo.** ⭐ _Built one commit a day._