Your Profile: Bangladeshi student studying in China → targeting jobs in China or globally
Methodology: Real job market data analysis, NOT random opinions
Data Sources: Stack Overflow Developer Survey 2024 (65K+ respondents), TIOBE Index (June 2026), SimplifyJobs Summer 2026 Internships (320+ live postings), BOSS直聘, LinkedIn, GitHub job boards
Data-Driven Decision Making (DDDM) means using real-world evidence and quantitative analysis — not gut feelings or "someone said so" — to decide what to learn, what to prioritize, and where to invest your limited time.
Every skill is scored on 5 dimensions (each 0–10):
| Dimension | What It Measures | Data Source |
|---|---|---|
| 📈 Market Demand | How many real job postings ask for this skill | Job board frequency analysis |
| 💰 Salary Premium | Median salary uplift associated with this skill | Stack Overflow 2024 Salary Survey |
| 🚀 Growth Trend | Is demand growing or declining YoY? | TIOBE trends, job posting growth rate |
| 🤖 AI Synergy | How well does this skill complement AI tools? | Stack Overflow AI survey, industry trends |
| 🔒 Moats (Barrier to Entry) | How hard is it to learn? (Higher = harder to replace by juniors/AI) | Industry complexity analysis |
Final Priority Score = Weighted sum: (Demand × 30%) + (Salary × 25%) + (Growth × 20%) + (AI Synergy × 15%) + (Moats × 10%)
Stack Overflow 2024 Survey (45,566 professional developers):
| Rank | Language | Usage % | Salary (Global Median) | Trend |
|---|---|---|---|---|
| 1 | JavaScript | 64.6% | ~$65K | Stable |
| 2 | SQL | 54.1% | ~$70K | Stable |
| 3 | HTML/CSS | 52.9% | ~$55K | Stable |
| 4 | Python | 46.9% | ~$72K | 🚀 Growing |
| 5 | TypeScript | 43.4% | ~$68K | 🚀 Growing |
| 6 | Java | 30.0% | ~$70K | |
| 7 | C# | 28.8% | ~$70K | Stable |
| 8 | C++ | 20.3% | ~$75K | Stable |
| 9 | PHP | 18.7% | ~$48K | |
| 10 | C | 16.9% | ~$65K | Stable |
| 13 | Go | 14.4% | ~$70K | |
| 14 | Rust | 11.7% | ~$85K | 🚀 Growing fast |
TIOBE Index (June 2026):
| Rank | Language | Rating | YoY Change |
|---|---|---|---|
| 1 | Python | 18.96% | -6.91% |
| 2 | C | 10.77% | +1.30% |
| 3 | C++ | 8.03% | -2.65% |
| 4 | Java | 7.90% | -0.94% |
| 5 | C# | 4.85% | +0.17% |
| 12 | Rust | 1.26% | +0.30% 🚀 |
| 13 | Go | 1.20% | -1.08% |
⚠️ Key Insight: Go's TIOBE rating dropped 1.08% in one year. Rust is closing the gap fast. Go is NOT dying, but it's no longer the "hot new thing" — it's now a mature, stable language. This changes your strategy.
Stack Overflow 2024 — Median Salary by Country (Backend Developer):
| Country | Median Salary (USD) | Notes |
|---|---|---|
| 🇺🇸 United States | $170,000 | Highest-paying market |
| 🇬🇧 United Kingdom | $101,910 | Strong fintech presence |
| 🇩🇪 Germany | $79,346 | EU tech hub |
| 🇨🇳 China | ~$40,000–$80,000 | Wide range; ByteDance/Tencent at top end |
| 🇧🇩 Bangladesh | ~$8,000–$15,000 | Emerging market |
| 🇮🇳 India | $20,386 | Large volume, growing fast |
| 🌍 Global Median | $67,227 |
China is Go's strongest market globally. Key employers:
| Company | Go Usage Context | Typical Salary Range (RMB/Year) |
|---|---|---|
| 字节跳动 (ByteDance/TikTok) | Microservices, recommendation infrastructure, ad platform | 400K–800K+ |
| 腾讯 (Tencent) | Cloud services, WeChat backend | 350K–700K |
| 阿里巴巴 (Alibaba) | Cloud infrastructure, middleware | 350K–650K |
| 百度 (Baidu) | AI infrastructure, search backend | 300K–600K |
| 美团 (Meituan) | Logistics, food delivery systems | 300K–550K |
| 滴滴 (Didi) | Ride-hailing real-time systems | 300K–500K |
| 小红书 (Xiaohongshu/RED) | Social commerce backend | 280K–500K |
| 华为 (Huawei) | Cloud, telecom infrastructure | 300K–600K |
🔥 Critical Finding: ByteDance alone posted 7+ Go backend intern positions in Summer 2026 (San Jose + China offices). This is the #1 target for a Go backend engineer.
Analysis of 320+ Summer 2026 internship postings from SimplifyJobs:
| Category | # of Roles | % of Total |
|---|---|---|
| 🤖 Data Science, AI & ML | 141 | 44.1% |
| 💻 Software Engineering | 111 | 34.7% |
| 🔧 Hardware Engineering | 51 | 15.9% |
| 📈 Quantitative Finance | 10 | 3.1% |
| 📱 Product Management | 7 | 2.2% |
🔥 Massive finding: AI/ML internships now OUTNUMBER traditional software engineering internships. The market has shifted.
Common skill requirements across Go backend job postings:
| Skill | Frequency in Postings | Priority Tier |
|---|---|---|
| SQL + Database design | ~90% | 🟢 Must-have |
| Docker + Kubernetes | ~85% | 🟢 Must-have |
| Linux/Unix | ~80% | 🟢 Must-have |
| gRPC / Protocol Buffers | ~75% | 🟢 Must-have |
| Cloud (AWS/Azure/GCP/Alibaba) | ~75% | 🟢 Must-have |
| CI/CD (GitHub Actions, Jenkins) | ~70% | 🟡 Important |
| Message Queues (Kafka, RabbitMQ) | ~65% | 🟡 Important |
| Redis / Caching | ~65% | 🟡 Important |
| System Design | ~60% | 🟡 Important |
| Python (for scripting/AI integration) | ~55% | 🟡 Important |
| Monitoring (Prometheus, Grafana) | ~50% | 🔵 Valuable |
| AI/LLM integration | ~40% (and growing FAST) | 🔵 Valuable |
| Database | Professional Usage % |
|---|---|
| PostgreSQL | 51.9% 🏆 |
| MySQL | 39.4% |
| SQLite | 32.1% |
| Microsoft SQL Server | 27.1% |
| MongoDB | 25.2% |
| Redis | 22.8% |
| Elasticsearch | 14.3% |
🏆 PostgreSQL is the #1 database for professionals. Learn it deeply.
| Cloud Provider | Professional Usage % |
|---|---|
| AWS | 52.2% 🏆 |
| Azure | 29.7% |
| Google Cloud | 24.9% |
| Cloudflare | 14.6% |
| Alibaba Cloud | 0.9% (globally, but very high in China) |
🌏 For China market: Alibaba Cloud is dominant. For global markets: AWS is king.
Stack Overflow 2024 AI Survey (60,907 respondents):
| Question | Answer |
|---|---|
| Currently using AI tools? | 62% Yes |
| Plan to use soon? | 14% more |
| Favorable toward AI tools? | 72% |
| AI a threat to your job? | 70% say NO |
| AI handles complex tasks well? | Only 3% say "very well" |
| AI bad at complex tasks? | 45% of professionals say YES |
How developers use AI (currently):
| Use Case | % Using AI For |
|---|---|
| Writing code | 82% |
| Searching for answers | 67.5% |
| Debugging | 56.7% |
| Documenting code | 40.1% |
| Learning codebase | 30.9% |
| Testing code | 27.2% |
| Code review | 13.2% |
| Deployment/monitoring | 4.5% |
🎯 The bottom line: AI accelerates coding but can't replace the system design thinking, architectural decisions, debugging complex distributed systems, and business understanding that backend engineers do. AI is a tool — the engineers who use it best will win.
Here's the quantitative prioritization of every skill for a Go backend engineer in the AI era:
| Score | Meaning |
|---|---|
| 9–10 | Critical, learn NOW |
| 7–8 | Very important, learn within 3 months |
| 5–6 | Important, learn within 6 months |
| 3–4 | Valuable, learn within 12 months |
| 1–2 | Nice to have |
| # | Skill | Demand (30%) | Salary (25%) | Growth (20%) | AI Synergy (15%) | Moats (10%) | Final Score | Priority |
|---|---|---|---|---|---|---|---|---|
| 1 | Go Deep (concurrency, profiler, GC, escape analysis) | 8 | 7 | 6 | 7 | 8 | 7.20 | 🔴 Tier 1 |
| 2 | SQL + PostgreSQL (advanced queries, indexing, EXPLAIN) | 10 | 8 | 9 | 5 | 7 | 8.15 | 🔴 Tier 1 |
| 3 | System Design (distributed systems, CAP, consensus) | 9 | 10 | 9 | 3 | 10 | 8.35 | 🔴 Tier 1 |
| 4 | Docker + Kubernetes | 9 | 8 | 8 | 6 | 6 | 7.70 | 🔴 Tier 1 |
| 5 | gRPC + Protocol Buffers | 8 | 7 | 7 | 6 | 5 | 6.85 | 🟠 Tier 2 |
| 6 | Linux (deep: kernel, networking, eBPF) | 8 | 8 | 7 | 4 | 9 | 7.15 | 🟠 Tier 2 |
| 7 | Cloud (AWS + Alibaba Cloud) | 9 | 8 | 8 | 7 | 5 | 7.70 | 🟠 Tier 2 |
| 8 | Redis + Caching Strategies | 8 | 7 | 7 | 5 | 5 | 6.65 | 🟠 Tier 2 |
| 9 | CI/CD (GitHub Actions, ArgoCD, GitOps) | 7 | 7 | 8 | 8 | 4 | 6.85 | 🟠 Tier 2 |
| 10 | Message Queues (Kafka + RabbitMQ) | 7 | 8 | 8 | 5 | 6 | 6.85 | 🟠 Tier 2 |
| 11 | Python (for AI integration, scripting, data) | 7 | 7 | 9 | 10 | 3 | 7.35 | 🟡 Tier 3 |
| 12 | AI/LLM Integration (RAG, embeddings, OpenAI APIs) | 6 | 9 | 10 | 10 | 6 | 7.85 | 🟡 Tier 3 |
| 13 | Observability (Prometheus, Grafana, OpenTelemetry) | 7 | 7 | 9 | 6 | 5 | 6.95 | 🟡 Tier 3 |
| 14 | Rust (as a second systems language) | 5 | 9 | 10 | 7 | 9 | 7.45 | 🟡 Tier 3 |
| 15 | Terraform / Infrastructure as Code | 7 | 8 | 8 | 7 | 4 | 6.95 | 🟡 Tier 3 |
| 16 | TypeScript/Node.js (full-stack capability) | 6 | 6 | 7 | 7 | 3 | 5.85 | 🔵 Tier 4 |
| 17 | Data Engineering (Spark, Flink, Airflow) | 6 | 8 | 9 | 6 | 7 | 7.00 | 🔵 Tier 4 |
| 18 | GraphQL | 5 | 6 | 5 | 5 | 3 | 4.95 | ⚪ Tier 5 |
| 19 | WebAssembly | 2 | 7 | 8 | 4 | 9 | 4.95 | ⚪ Tier 5 |
Timeline: 12–18 months (assuming you already know Go basics)
📅 MONTH 1–2: Foundation Hardening
├── Go Internals Deep Dive
│ ├── Goroutine scheduler (GMP model)
│ ├── Memory model (escape analysis, GC tuning)
│ ├── pprof profiling & optimization
│ ├── Interface vs struct performance
│ └── sync package mastery (Mutex, RWMutex, WaitGroup, Cond, atomic)
├── SQL & PostgreSQL Mastery
│ ├── Advanced indexing (B-tree, GiST, GIN, BRIN, partial indexes)
│ ├── EXPLAIN ANALYZE deep interpretation
│ ├── Window functions, CTEs, recursive queries
│ ├── Transaction isolation levels & MVCC
│ ├── Connection pooling (pgbouncer, pgx pool)
│ └── Database normalization & denormalization tradeoffs
└── Project: Build a high-concurrency URL shortener with analytics
📅 MONTH 3–4: Infrastructure & Operations
├── Linux Deep Dive
│ ├── Process management, signals, namespaces
│ ├── Network stack (TCP/IP, sockets, epoll)
│ ├── File system (inodes, VFS, ext4/xfs)
│ └── Performance (perf, strace, ltrace, /proc)
├── Docker & Container Internals
│ ├── Dockerfile best practices (multi-stage builds)
│ ├── Docker networking (bridge, overlay, host)
│ ├── docker-compose for local dev
│ └── Container security (non-root users, seccomp, AppArmor)
├── Kubernetes Fundamentals
│ ├── Pods, Deployments, Services, Ingress
│ ├── ConfigMaps, Secrets, Volumes (PVC)
│ ├── HPA (Horizontal Pod Autoscaler)
│ └── kubectl, k9s, Lens for management
└── Project: Deploy a Go microservice to K8s with auto-scaling
📅 MONTH 5–6: Communication & Data Flow
├── gRPC + Protocol Buffers
│ ├── proto3 syntax mastery
│ ├── Streaming (unary, server, client, bidirectional)
│ ├── Interceptors (auth, logging, rate limiting)
│ ├── gRPC-gateway for REST conversion
│ └── Error handling patterns
├── Message Queues & Event-Driven Architecture
│ ├── Kafka basics (topics, partitions, consumer groups)
│ ├── RabbitMQ (exchanges, queues, bindings)
│ ├── Event sourcing & CQRS patterns
│ └── Dead letter queues & retry strategies
├── Redis Deep Dive
│ ├── Data structures (strings, hashes, lists, sets, sorted sets)
│ ├── Caching patterns (cache-aside, write-through, write-behind)
│ ├── Pub/Sub & Streams
│ ├── Distributed locks (Redlock algorithm)
│ └── Redis Cluster & Sentinel
└── Project: Real-time chat system with gRPC streaming + Redis pub/sub
📅 MONTH 7–8: Cloud & DevOps
├── AWS (for global) / Alibaba Cloud (for China)
│ ├── EC2 / ECS, S3 / OSS, RDS, ElastiCache
│ ├── IAM / RAM (crucial for interviews!)
│ ├── VPC networking, security groups
│ └── Lambda / Function Compute (serverless Go)
├── CI/CD Pipeline
│ ├── GitHub Actions / GitLab CI
│ ├── Docker image building & pushing
│ ├── Automated testing in pipeline
│ ├── ArgoCD for GitOps deployment
│ └── Canary & blue-green deployment strategies
├── Infrastructure as Code
│ ├── Terraform basics
│ └── Kubernetes manifests (or Helm charts)
└── Project: Full CI/CD pipeline deploying Go app to K8s on AWS/Alibaba
📅 MONTH 9–10: System Design & Distributed Systems
├── System Design Fundamentals
│ ├── CAP theorem in practice
│ ├── Consensus algorithms (Raft — core of etcd!)
│ ├── Consistent hashing
│ ├── Rate limiting algorithms (token bucket, sliding window)
│ ├── Idempotency & exactly-once semantics
│ └── Distributed transactions (Saga, 2PC, TCC)
├── Design Real Systems (practice on paper!)
│ ├── Design TinyURL (URL shortener)
│ ├── Design Twitter feed
│ ├── Design Uber/Didi matching
│ ├── Design a distributed message queue
│ ├── Design a KV store (like Redis)
│ └── Design a rate limiter
├── Load Balancing & Proxying
│ ├── Nginx/Envoy configuration
│ ├── Layer 4 vs Layer 7 load balancing
│ └── Service mesh (Istio basics)
└── Project: Design doc for a real system + peer review
📅 MONTH 11–12: The AI Integration Layer
├── Python for AI Integration
│ ├── Python syntax for Go devs (focus on differences)
│ ├── FastAPI for AI microservices
│ ├── NumPy/Pandas basics
│ └── Virtual environments & dependency management
├── LLM Integration Patterns
│ ├── OpenAI / Claude API integration
│ ├── RAG (Retrieval-Augmented Generation) architecture
│ ├── Vector databases (Pinecone, Milvus, pgvector)
│ ├── Embedding models & semantic search
│ ├── Prompt engineering fundamentals
│ └── LangChain / LlamaIndex basics
├── AI-Powered Backend Features
│ ├── Intelligent search (semantic + keyword hybrid)
│ ├── Content generation & moderation
│ ├── Recommendation systems basics
│ └── AI observability & evaluation
└── Project: Go backend + Python AI service communicating via gRPC
📅 MONTH 13+: Interview Preparation & Specialization
├── LeetCode / Algorithm Practice (200+ problems)
│ ├── Data structures (Go-specific: slices, maps, channels)
│ ├── Algorithms (sorting, searching, DP, graphs)
│ └── System design interviews
├── Chinese Tech Interview Preparation
│ ├── 八股文 (Ba Gu Wen — Chinese tech interview Q&A)
│ ├── 计算机基础 (CS fundamentals in Chinese terminology)
│ ├── Go 面试题 (Go-specific interview questions)
│ └── 项目经验 (STAR method in Chinese)
├── Open Source Contribution
│ ├── Contribute to CNCF projects (etcd, Kubernetes client-go, etc.)
│ ├── Build a notable Go library
│ └── Write technical blog posts (medium/掘金/知乎)
└── Apply & Iterate
├── Target: ByteDance, Tencent, Alibaba, Meituan, Xiaohongshu
├── Also apply to: Singapore, remote US/EU positions
└── Iterate on feedback
Same as above but with these modifications:
| Area | China Focus | Global Focus |
|---|---|---|
| Cloud | Alibaba Cloud primary | AWS primary |
| Chinese interview prep | 八股文, 面经 | System design, behavioral (STAR) |
| Language bonus | Mandarin fluency is an asset | English fluency essential |
| Salary expectation | ¥300K–800K RMB | $100K–$170K USD |
| Visa | Already in China (easier) | Need H1B/US visa sponsorship |
| Communication tools | 飞书/Lark, 企业微信 | Slack, Jira, Notion |
| Code hosting | 自建 GitLab / 工蜂 | GitHub |
Total: 365 Days | 3 Levels | ~120 Days Each
Every topic has an exact day allocation. Follow the sequence — each phase builds on the previous one.
Daily commitment: 3–6 hours (flexible — adjust based on your university schedule).
┌─────────────────────────────────────────────────────────────────┐
│ LEVEL 1: BEGINNER │ LEVEL 2: INTERMEDIATE │ LEVEL 3: ADVANCED │
│ Month 1–4 (Days 1–120) │ Month 5–8 (121–240) │ Month 9–12 (241–365) │
├────────────────────────────┼─────────────────────────┼─────────────────────────┤
│ • Go language foundation │ • Go internals deep │ • System design │
│ • SQL & PostgreSQL │ • Kubernetes + Cloud │ • Distributed systems │
│ • Git + Docker + Linux │ • Kafka + Event-driven │ • AI/LLM integration │
│ • REST APIs + gRPC │ • CI/CD + Observability│ • Interview prep │
│ • First projects │ • Real-world projects │ • Job applications │
├────────────────────────────┼─────────────────────────┼─────────────────────────┤
│ GOAL: Junior Go Developer │ GOAL: Go Backend Eng. │ GOAL: Senior-ready + │
│ Salary: ¥15K–22K/mo │ Salary: ¥22K–30K/mo │ Salary: ¥30K–40K+/mo │
└────────────────────────────┴─────────────────────────┴─────────────────────────┘
Goal: Build a solid Go foundation + ship real projects. You should be able to pass a junior developer interview by the end.
| Days | Topic | What to Learn | Hands-on |
|---|---|---|---|
| 1–3 | Go Setup & Syntax | Install Go, GOPATH, modules (go mod). Variables, constants, basic types, zero values. go fmt, go vet. |
Write "Hello World", a temperature converter, a simple calculator |
| 4–7 | Control Flow & Functions | if/else, switch, for (all 4 forms). Named return values, variadic functions, closures. defer mechanics. |
FizzBuzz, Fibonacci generator, string reversal using defer |
| 8–12 | Structs, Interfaces & Methods | Value vs pointer receivers. Empty interface interface{} / any. Type assertions & type switches. Embedding vs composition. |
Build a shape hierarchy (Circle, Rectangle) with Area() interface. Payment system with multiple payment methods |
| 13–18 | Goroutines & Channels | go keyword. Unbuffered vs buffered channels. select statement. Fan-in / fan-out patterns. Channel closing semantics. |
Worker pool pattern. Pipeline (generate → square → print). Timeout with select + time.After |
| 19–24 | Standard Library | net/http (server + client). encoding/json. os, io, bufio. context (WithCancel, WithTimeout). sync (Mutex, WaitGroup, Once). |
Build a file server. JSON API client. Context-based HTTP server with graceful shutdown |
| 25–30 | 🏗️ CAPSTONE PROJECT | Combine everything: Build a CLI tool + a REST API | Todo API: CRUD with in-memory store → file persistence. Add CLI client. Write tests with testing package |
🔹 Go Setup & Syntax (Days 1–3) — Total: ~8 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 1 | 2.5h | Install Go via brew/official binary. Understand GOPATH vs GOROOT. Go modules (go mod init, go mod tidy). Project layout conventions. |
Create a hello module. Run go build, go run, go install. Push to GitHub |
| 2 | 3h | Variables (var vs :=). Constants, iota. Basic types: int, float64, string, bool, byte, rune. Zero values. fmt package (Printf verbs: %v, %+v, %#v, %T). go fmt, go vet. |
Temperature converter (°C ↔ °F). Simple CLI calculator (add/subtract/multiply/divide) |
| 3 | 2.5h | Arrays vs Slices (length, capacity, append, copy, slicing [a:b]). Maps (create, get, set, delete, comma-ok idiom). range loop on slices & maps. Strings, runes, and UTF-8 basics. |
Reverse a string. Word frequency counter using maps. Flatten a 2D slice |
🔹 Control Flow & Functions (Days 4–7) — Total: ~12 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 4 | 3h | if/else, switch (with/without expression, type switch). for loop (infinite, C-style, while-style, range). break, continue, labels. |
FizzBuzz. Prime number checker. Print patterns (pyramid, diamond) with loops |
| 5 | 3h | Functions: parameters, return values, named returns, multiple return values. Variadic functions (...). Function types & first-class functions. Anonymous functions & closures. |
Implement Map, Filter, Reduce functions on slices. Build a calculator with function types (map[string]func(float64,float64)float64) |
| 6 | 3h | defer — LIFO order, argument evaluation, common patterns (close file, unlock mutex, recover panic). panic & recover. Error handling patterns (if err != nil, errors.Is, errors.As, fmt.Errorf with %w). |
File copy with defer for cleanup. Custom error types. Panic recovery middleware demo |
| 7 | 3h | Pointers: & and *, nil pointers, pointer to struct fields. new vs make. Pass-by-value semantics. Pointer receivers preview. |
Swap two numbers with pointers. Linked list (insert, delete, traverse). Understand why make is for slices/maps/channels only |
🔹 Structs, Interfaces & Methods (Days 8–12) — Total: ~15 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 8 | 3h | Struct definition, initialization (literal, new, zero value). Exported vs unexported fields. Struct tags (JSON, XML). Embedded structs (composition over inheritance). |
Define Person, Employee (embedded), Address structs. JSON marshal/unmarshal with tags |
| 9 | 3h | Methods: value receiver vs pointer receiver — when to use which. Methods on any named type. Method sets. | Add FullName() method to Person. Build a Counter type with Increment(), Value(), Reset() methods |
| 10 | 3h | Interfaces: implicit satisfaction. Empty interface interface{} → any (Go 1.18+). Type assertion (x.(T)) & type switch. Stringer, error interfaces. |
Define Shape interface → Circle, Rectangle implement Area() & Perimeter(). Interface slice with mixed types |
| 11 | 3h | Interface internals: dynamic type + dynamic value. Nil interface vs nil concrete value gotcha. Accept interfaces, return structs. | Build a Payment interface → CreditCard, PayPal, Crypto implementations. Payment processor that takes any payment method |
| 12 | 3h | Generics (Go 1.18+): type parameters, constraints (comparable, custom). Generic functions, generic types. slices, maps packages. |
Generic Find, Contains, Filter functions. Generic Set data structure. Generic Stack[T] with Push/Pop |
🔹 Goroutines & Channels (Days 13–18) — Total: ~18 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 13 | 3h | Concurrency vs parallelism. go keyword. Goroutine scheduling overview (M:N). time.Sleep (not for coordination). sync.WaitGroup. |
Spawn 10 goroutines that print "hello". Use WaitGroup to wait. Race condition demo (increment counter with multiple goroutines) |
| 14 | 3h | Channels: make(chan T), make(chan T, N). Send ch <- v, receive v := <-ch. Unbuffered vs buffered — when blocks? Close channels (close(ch)). Range over channel. |
Ping-pong between 2 goroutines. Producer → Consumer pipeline. Close a channel and drain it with range |
| 15 | 3h | select statement. Default case (non-blocking). Timeout patterns (time.After). Fan-in pattern (multiple channels → one). |
Timeout with select. Merge 2 channels into 1 (fan-in). Non-blocking send/receive with default |
| 16 | 3h | Fan-out pattern. Pipeline pattern (stage1 → stage2 → stage3). Channel direction (<-chan, chan<-). nil channel behavior. |
Pipeline: generate numbers → square them → print. Add a timeout stage that cancels pipeline |
| 17 | 3h | Worker pool pattern. Semaphore pattern (buffered channel as semaphore). errgroup package for error propagation. |
Worker pool that processes 100 jobs with 5 workers. Add error collection. Compare throughput vs sequential |
| 18 | 3h | Channel closing semantics (send on closed channel = panic, receive from closed = zero value + false). sync.Once. Concurrency patterns review. |
Build a broadcast pattern (1 producer → N consumers, all get every message). Graceful shutdown with context cancellation |
🔹 Standard Library (Days 19–24) — Total: ~18 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 19 | 3h | net/http: HandleFunc, ServeMux, Server struct. Request/Response. Query parameters, headers. JSON encoding/decoding (json.NewEncoder, json.NewDecoder). |
Build a REST API with 3 endpoints (GET /health, POST /echo, GET /time). Parse query params |
| 20 | 3h | net/http client: http.Get, http.Post, http.NewRequest. Custom headers, timeouts, redirect policy. httptest for testing handlers. |
Build an HTTP client that calls a public API (GitHub, JSONPlaceholder). Write table-driven tests for your API handlers |
| 21 | 3h | context: Background(), TODO(), WithCancel, WithTimeout, WithDeadline, WithValue. Context propagation in HTTP handlers. Graceful shutdown with http.Server.Shutdown(). |
Add 2-second timeout to API. Propagate context through handler → service → database call. Graceful shutdown on SIGINT |
| 22 | 3h | sync: Mutex (Lock/Unlock), RWMutex (RLock/RUnlock). sync.Once. sync.WaitGroup review. sync.Cond (brief intro). |
Thread-safe counter with Mutex. Read-heavy cache with RWMutex. Compare performance with benchmarks |
| 23 | 3h | os, io, bufio: File operations (open, read, write, create, stat). io.Copy, io.ReadAll, io.WriteString. bufio.Scanner for line-by-line. path/filepath. Environment variables (os.Getenv). |
File server that serves static files. CSV parser with bufio.Scanner. Config loader from environment variables |
| 24 | 3h | time, encoding/json, log/slog, fmt: Time parsing/formatting, durations, tickers. JSON Marshal/Unmarshal with custom types. Structured logging with slog. String formatting mastery. |
Build a logging middleware. JSON config file reader. Timestamp formatting for different locales |
🔹 🏗️ Capstone: Todo API (Days 25–30) — Total: ~20 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 25 | 3.5h | Project setup: go mod init. Directory structure (cmd/server, internal/handler, internal/model). Define Todo struct, in-memory store with Mutex protection. |
Scaffold project. Implement Create, List endpoints. Test with curl |
| 26 | 3.5h | CRUD completion: Get, Update, Delete. Path parameters (manual parsing or lightweight router like chi). Input validation. Error responses (proper HTTP status codes). |
Add remaining CRUD endpoints. Validate Todo fields (title required, status enum). Return JSON errors |
| 27 | 3.5h | File persistence: encoding/json + os.WriteFile. Load on startup, save on every mutation. Atomic writes (write temp → rename). CLI client using flag or cobra. |
Persist todos to JSON file. Build CLI: todo add "buy milk", todo list, todo done 3, todo delete 2 |
| 28 | 3h | Tests: Unit tests for model (go test -v). HTTP handler tests with httptest. Table-driven tests. Coverage (go test -cover). |
Write tests for all handler endpoints. Test edge cases (empty title, invalid ID). Aim for 80%+ coverage |
| 29 | 3.5h | Middleware: Logging middleware (method, path, duration). Recovery middleware. CORS middleware. Chaining middleware. | Add logging with slog. Add panic recovery. Test middleware chain |
| 30 | 3h | Polish & Review: README.md with API docs. Makefile (build, run, test, lint). golangci-lint setup. Review Month 1 concepts. |
Write comprehensive README. Run linter, fix issues. Tag v1.0.0 on GitHub |
✅ Month 1 Checkpoint: You can write idiomatic Go, understand concurrency basics, and ship a working REST API with tests.
| Days | Topic | What to Learn | Hands-on |
|---|---|---|---|
| 31–35 | Advanced Concurrency | sync.Mutex vs sync.RWMutex. sync.Cond. atomic package. sync.Map. Race detector (go test -race). Common concurrency pitfalls. |
Implement a thread-safe counter, a concurrent cache with TTL, a rate limiter |
| 36–40 | Testing & Profiling | Table-driven tests. Subtests (t.Run). Benchmarks. pprof basics (CPU, memory, goroutine profiles). Test coverage. Mocking with interfaces. |
Write tests for Month 1 project. Profile a concurrent app, find bottlenecks, optimize |
| 41–45 | SQL Fundamentals | SELECT, WHERE, JOIN (INNER, LEFT, RIGHT). GROUP BY, HAVING. INSERT, UPDATE, DELETE. Subqueries. ACID properties. |
Create a database for a library/bookstore. Write 20+ queries. Practice on SQLZoo / LeetCode SQL |
| 46–52 | PostgreSQL Advanced | Indexes (B-tree, GiST, GIN, partial, covering). EXPLAIN ANALYZE. Transaction isolation levels, MVCC. Window functions (ROW_NUMBER, RANK, LAG/LEAD). CTEs (recursive). |
Index a slow query from 10s → 10ms. Implement a leaderboard with window functions. Recursive CTE for org chart |
| 53–60 | 🏗️ CAPSTONE PROJECT | SQL-first Go backend | Blog/Forum API: PostgreSQL + Go (database/sql or pgx). Full CRUD. Pagination. Search with LIKE + full-text. Auth with JWT. Write integration tests |
🔹 Advanced Concurrency (Days 31–35) — Total: ~15 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 31 | 3h | sync.Mutex deep: Lock/Unlock, TryLock (Go 1.18+). sync.RWMutex: when reads >> writes. Common deadlock scenarios and how to avoid. |
Thread-safe bank account (deposit/withdraw/balance). Deadlock demo + fix. Benchmark Mutex vs RWMutex with varying read/write ratios |
| 32 | 3h | sync.Cond: Signal, Broadcast, Wait. Use case: waiting for a condition. sync.Once: lazy initialization, singleton pattern. sync.WaitGroup review. |
Implement a bounded buffer with Cond (producer blocks when full, consumer when empty). Singleton config loader with Once |
| 33 | 3h | sync/atomic: AddInt64, LoadInt64, StoreInt64, SwapInt64, CompareAndSwapInt64. Atomic vs Mutex performance. Lock-free counter. atomic.Value for config hot-reload. |
Lock-free counter benchmark. Atomic config hot-reload (goroutine writes config, 100 goroutines read atomically). Compare atomic vs mutex benchmark |
| 34 | 3h | sync.Map: Load, Store, Delete, Range. When to use vs regular map+Mutex. Internal implementation overview (read-only + dirty map). sync.Pool for object reuse. |
Concurrent cache with TTL (using sync.Map). Object pooling demo with sync.Pool (reuse byte buffers). Benchmark allocations |
| 35 | 3h | Race detector: go test -race, go build -race, go run -race. Common race patterns (shared slice append, map write without lock). -race in production? (cost). |
Run race detector on all previous exercises. Find + fix races. Write a "find the race" challenge for yourself. Review all sync primitives |
🔹 Testing & Profiling (Days 36–40) — Total: ~15 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 36 | 3h | Table-driven tests: []struct{name, input, want} pattern. Subtests with t.Run. t.Helper(). t.Parallel(). t.Cleanup(). |
Write 20+ table-driven tests for Todo API handlers. Add parallel execution. Measure test speed improvement |
| 37 | 3h | Benchmarks: func BenchmarkXxx(b *testing.B). b.N, b.ResetTimer(), b.ReportAllocs(). go test -bench=. -benchmem. Comparing implementations. |
Benchmark Todo storage: in-memory vs file vs different data structures. Benchmark JSON marshal vs json.NewEncoder. Write benchmark report |
| 38 | 3h | Mocking with interfaces: define interfaces, create mock structs. gomock or mockery for auto-generation. Dependency injection for testability. |
Mock PostgreSQL repository interface. Write unit tests for HTTP handlers using mocks. Test error scenarios (DB down, timeout) |
| 39 | 3h | pprof CPU profiling: net/http/pprof, go tool pprof. Flame graphs. Identifying hot functions. Memory profiling (heap, allocs). Goroutine profiling (leak detection). |
Profile a concurrent workload (10K goroutines processing). Find the top 3 CPU consumers. Detect a goroutine leak. Fix and re-profile |
| 40 | 3h | Test coverage: go test -coverprofile=coverage.out, go tool cover -html=coverage.out. Integration tests with real PostgreSQL (testcontainers or docker). Golden file tests. |
Achieve 85%+ coverage on Todo API. Write 2 integration tests with real DB. Use testcontainers-go for PostgreSQL in tests |
🔹 SQL Fundamentals (Days 41–45) — Total: ~15 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 41 | 3h | PostgreSQL setup (local/Docker). psql basics. CREATE TABLE, data types (INTEGER, TEXT, BOOLEAN, TIMESTAMP, SERIAL). Constraints (PRIMARY KEY, NOT NULL, UNIQUE, CHECK, FOREIGN KEY). INSERT, UPDATE, DELETE. |
Create library database. Tables: authors, books, members, borrowings. Insert 20+ rows per table. Practice updates and deletes |
| 42 | 3h | SELECT, WHERE (AND, OR, NOT, IN, BETWEEN, LIKE, IS NULL). ORDER BY, LIMIT, OFFSET. Aggregate functions (COUNT, SUM, AVG, MIN, MAX). GROUP BY, HAVING. |
Write 15 queries: find books by year, count books per author, members with most borrowings, overdue books |
| 43 | 3h | JOINs: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, CROSS JOIN. Self-joins. Join conditions (ON). NULL handling in joins. |
Write 10 join queries: books with author names, members with borrowed books, books never borrowed, author pairs who share publishers |
| 44 | 3h | Subqueries (in WHERE, FROM, SELECT). Correlated subqueries. EXISTS, NOT EXISTS. UNION, INTERSECT, EXCEPT. Views (CREATE VIEW). |
Find books priced above average. Find members who borrowed every book by a specific author. Create views for common query patterns |
| 45 | 3h | ACID properties deep: Atomicity, Consistency, Isolation, Durability. Transactions: BEGIN, COMMIT, ROLLBACK. Savepoints. Read phenomena (dirty read, non-repeatable read, phantom). |
Write a transfer funds transaction (debit from A, credit to B — must be atomic). Test rollback on error. Practice on SQLZoo and LeetCode SQL (10+ problems) |
🔹 PostgreSQL Advanced (Days 46–52) — Total: ~22 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 46 | 3.5h | B-tree indexes: how they work, when used. Composite (multi-column) indexes. Index scan vs sequential scan. CREATE INDEX, DROP INDEX. Index overhead (write performance). |
Create 1M-row table. Run query without index (measure time). Add B-tree index, time again. Add composite index and test multi-column WHERE |
| 47 | 3.5h | EXPLAIN ANALYZE: reading query plans. Seq Scan, Index Scan, Bitmap Index Scan, Nested Loop, Hash Join, Merge Join. Cost estimation (cost=0.00..100.00). Rows estimation vs actual. |
Run EXPLAIN ANALYZE on 10 different queries. Identify Seq Scans → add indexes → verify Index Scan. Understand why some queries still Seq Scan with indexes |
| 48 | 3h | Advanced indexes: Partial indexes (WHERE clause). Covering indexes (INCLUDE). Expression/functional indexes. GiST (geometric, full-text), GIN (full-text, arrays, JSONB). When each makes sense. |
Create partial index for active users only. Full-text search with GIN + tsvector. Index JSONB fields. Compare query speeds |
| 49 | 3h | Transaction isolation levels: Read Uncommitted, Read Committed (PostgreSQL default), Repeatable Read, Serializable. MVCC internals (xmin, xmax, tuple versions). Dead tuples, VACUUM, autovacuum. | Demo each isolation level with 2 concurrent psql sessions. Show phantom reads, serialization failures. Check dead tuple count before/after VACUUM |
| 50 | 3h | Window functions: ROW_NUMBER(), RANK(), DENSE_RANK(), NTILE(). LAG(), LEAD(). SUM()/AVG() OVER (PARTITION BY ... ORDER BY ...). Window frame (ROWS, RANGE, GROUPS). |
Build a leaderboard with RANK. Calculate moving average of sales. Find consecutive login streaks. Compare employee salaries within departments |
| 51 | 3h | CTEs (Common Table Expressions): WITH ... AS. Recursive CTEs (WITH RECURSIVE). Materialized vs non-materialized CTEs (PostgreSQL 12+). CTE vs subquery performance. |
Org chart with recursive CTE (employee → manager chain). Bill of materials explosion (parts → sub-parts). Pagination with keyset (cursor) vs OFFSET |
| 52 | 3h | Connection pooling: why needed (database/sql pool basics). pgx pool (pgxpool). pgbouncer (session vs transaction pooling). Prepared statements. LISTEN/NOTIFY for real-time. |
Configure pgx connection pool. Benchmark with/without pooling. Set up pgbouncer in Docker. Use LISTEN/NOTIFY for cache invalidation |
🔹 🏗️ Capstone: Blog/Forum API (Days 53–60) — Total: ~26 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 53 | 3.5h | Project setup: Go + pgx driver. Schema design: users, posts, comments, tags, post_tags. Migration tool (golang-migrate or atlas). Seed data. |
Create schema, write migrations up/down. Seed with 50 posts, 200 comments, 10 users. Test with psql |
| 54 | 3.5h | Repository layer: CRUD for posts, comments, users. Parameterized queries (SQL injection prevention). sql.NullString or pgx types for nullable fields. |
Implement CreatePost, GetPost, ListPosts, UpdatePost, DeletePost. Same for comments. All with proper error handling |
| 55 | 3.5h | Pagination: OFFSET vs cursor-based. LIMIT + OFFSET. Keyset pagination (WHERE id > last_id). Counting total rows. Search with LIKE and ILIKE. Full-text search with tsvector/tsquery. |
Implement paginated post listing (20 per page). Add search endpoint. Write EXPLAIN ANALYZE to verify index usage. Handle edge cases (empty results, last page) |
| 56 | 3h | Tags & relations: Many-to-many (post_tags junction table). sqlx or pgx batch queries. N+1 query problem and solutions (JOIN, eager loading). |
Add tags to posts. Tag listing with post count. Avoid N+1 when fetching posts with tags. Optimize with single query + mapping in Go |
| 57 | 3.5h | Authentication: User registration (bcrypt hash). Login (JWT generation). JWT middleware (validate token, extract user ID). Protected routes (only author can edit/delete). | Full auth flow. Middleware that rejects unauthenticated requests. Author-only edit/delete. Refresh token mechanism |
| 58 | 3h | Integration tests: test PostgreSQL with Docker (testcontainers). Test all endpoints end-to-end. Test auth flow. Test pagination edge cases. Test concurrent access. | Write 15+ integration tests. Test user registration → login → create post → comment → delete. Test unauthorized access returns 401 |
| 59 | 3h | Performance: Load test with hey or vegeta (1000 req/s). Identify slow queries. Add missing indexes. pprof profiling. Connection pool tuning. |
Run load test, find bottlenecks. Add indexes for slow queries. Tune pool max connections. Re-run load test, compare results |
| 60 | 3h | Polish: Input validation (go-playground/validator). Structured error responses. Request logging. README.md. API documentation. Docker Compose (Go + PostgreSQL). Makefile. |
Add validation. Polish error handling. Write README with setup instructions. Docker Compose for one-command start. Tag v1.0.0 |
✅ Month 2 Checkpoint: You can write concurrent Go code safely, profile/optimize, and design + query a PostgreSQL database efficiently.
| Days | Topic | What to Learn | Hands-on |
|---|---|---|---|
| 61–65 | Git Mastery | Interactive rebase, cherry-pick, bisect. Branching strategies (GitFlow, trunk-based). .gitignore, hooks. PR review workflow. |
Contribute to an open-source project (even docs). Rebase a messy branch. Set up pre-commit hooks |
| 66–72 | Docker Fundamentals | Dockerfile (multi-stage builds). docker build, docker run. Volumes, bind mounts. docker-compose. Networking (bridge, host). Container security basics. |
Dockerize Month 2 project. Multi-service docker-compose (Go API + PostgreSQL + Redis). Push to Docker Hub |
| 73–78 | Linux Essentials | File system hierarchy. Permissions (chmod, chown). Process management (ps, top, kill, signals). Package managers. Shell scripting basics. grep, awk, sed. |
Write shell scripts for deployment. Investigate a running process with /proc. Set up a Linux VM and deploy your Dockerized app |
| 79–85 | REST API Design Deep Dive | RESTful principles. HTTP methods, status codes, headers. API versioning. Pagination patterns (offset vs cursor). Rate limiting. OpenAPI/Swagger. | Design and document a production-grade REST API. Add rate limiting middleware. Generate Swagger docs |
| 86–90 | 🏗️ CAPSTONE PROJECT | Containerized + Linux-ready backend | E-commerce API: Products, cart, orders. PostgreSQL + Redis. Full Docker Compose. Health checks. Graceful shutdown. Deploy to a VPS (AWS EC2 or Alibaba ECS free tier) |
🔹 Git Mastery (Days 61–65) — Total: ~15 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 61 | 3h | Git internals: objects (blob, tree, commit, tag), .git/ directory, hashing. git log --graph --oneline --all. git reflog. git stash (push, pop, apply, list, drop). |
Explore .git/objects with git cat-file. Use reflog to recover "lost" commits. Stash work, switch branches, unstash |
| 62 | 3h | git rebase -i (interactive): squash, fixup, reword, reorder, drop commits. git rebase vs git merge. git cherry-pick. |
Create a messy branch with 10 commits. Squash into 3 clean commits. Cherry-pick a bug fix from another branch. Resolve rebase conflicts |
| 63 | 3h | git bisect: find the commit that introduced a bug. git blame. git diff (staged, unstaged, between commits/branches). .gitignore patterns. |
Introduce a "bug" in an old commit. Use bisect to find it. Analyze a file's history with blame. Write a comprehensive .gitignore for Go projects |
| 64 | 3h | Branching strategies: GitFlow (main, develop, feature, release, hotfix). Trunk-based development. GitHub Flow. Pull request workflow. CODEOWNERS. Branch protection rules. | Create a feature branch, make changes, open a PR. Review a friend's PR (or your own from a 2nd account). Add branch protection on GitHub |
| 65 | 3h | Git hooks: pre-commit, pre-push. golangci-lint in pre-commit. Commit message conventions (Conventional Commits). git tag (lightweight vs annotated). Semantic versioning. |
Set up pre-commit hook that runs go fmt, go vet, and linter. Write conventional commit messages. Tag releases (v0.1.0, v0.2.0). Contribute a small PR to an open-source project |
🔹 Docker Fundamentals (Days 66–72) — Total: ~21 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 66 | 3h | Docker architecture (client, daemon, registry). docker run flags (-d, -p, -e, -v, --name, --rm, --restart). docker ps, docker logs, docker exec, docker stop/start/restart. Image pulling & caching. |
Pull postgres:alpine and redis:alpine. Run them with proper flags. exec into containers. Check logs. Stop and remove |
| 67 | 3h | Dockerfile: FROM, RUN, COPY, ADD, WORKDIR, EXPOSE, CMD vs ENTRYPOINT. Layer caching. .dockerignore. Building: docker build -t myapp .. |
Write a Dockerfile for your Blog API. Build and run. Optimize layer ordering for caching. Use .dockerignore to exclude unnecessary files |
| 68 | 3h | Multi-stage builds: build stage (with Go compiler) → final stage (scratch or alpine, copy binary only). Why: smaller images, no build tools in production. Distroless images. | Convert Blog API Dockerfile to multi-stage. Compare image sizes (docker images): single-stage (800MB+) vs multi-stage alpine (<20MB) vs scratch (<8MB) |
| 69 | 3h | Docker volumes: named volumes, bind mounts. tmpfs. Data persistence patterns. Backup/restore volumes. Docker networking: bridge, host, overlay, none. Container-to-container communication. |
Add volume for PostgreSQL data persistence. Test: docker-compose down && docker-compose up — data survives. Inspect networks with docker network inspect |
| 70 | 3h | docker-compose: services, networks, volumes, environment, depends_on (with healthcheck). docker-compose up/down/logs/ps/exec. Compose profiles. |
Write docker-compose.yml with 3 services: Go API + PostgreSQL + Redis. Add healthchecks. Use depends_on with condition: service_healthy |
| 71 | 3h | Container security: run as non-root (USER). Read-only root filesystem. Capabilities (--cap-drop ALL). Security scanning (docker scout, trivy). Secrets management. |
Harden your Dockerfile (non-root user, read-only FS). Scan image for vulnerabilities. Fix any critical issues. Push to Docker Hub |
| 72 | 3h | Docker best practices review. Image size optimization tricks. Multi-platform builds (docker buildx). Docker Compose for development (hot reload with air or CompileDaemon). |
Add hot reload for development. Create docker-compose.dev.yml override. Build multi-platform image. Write a Docker cheatsheet for yourself |
🔹 Linux Essentials (Days 73–78) — Total: ~18 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 73 | 3h | File system hierarchy (/, /home, /etc, /var, /tmp, /proc, /dev). File permissions: rwx, chmod, chown, chgrp. umask. Symbolic vs hard links (ln -s, ln). |
Navigate filesystem. Create files with specific permissions. Create symlinks. Explore /proc/cpuinfo, /proc/meminfo. Understand stat output |
| 74 | 3h | Process management: ps aux, top/htop. kill (SIGTERM, SIGKILL, SIGHUP, SIGINT). nice/renice. nohup/disown. Background/foreground (&, fg, bg, jobs). systemd basics (systemctl). |
Start a Go server, background it, bring to foreground. Send signals. Check process tree with pstree. Create a systemd service file for your Go app |
| 75 | 3h | Package management: apt (Ubuntu/Debian) or yum/dnf (RHEL/CentOS) or brew (macOS). Installing/removing/updating packages. Repository management. which, whereis. |
Install PostgreSQL from apt. Add a PPA. Search for packages. Find where psql binary lives. Update all packages |
| 76 | 3h | Shell scripting: #!/bin/bash. Variables, conditionals (if [ ], test, [[ ]]). Loops (for, while). Functions. Exit codes ($?). Command substitution $( ). Pipes and redirection (` |
, >, >>, <, 2>&1`). |
| 77 | 3h | Text processing: grep (basic/extended regex, -v, -i, -r, -l, -c). awk (fields, patterns, actions, built-in variables). sed (substitution, deletion, in-place editing). sort, uniq, wc, head, tail. |
Parse nginx access log: Top 10 IPs, status code distribution, P95 response time. Process CSV files. Extract patterns from logs with awk |
| 78 | 3h | SSH: key generation (ssh-keygen), ~/.ssh/config, ssh-copy-id. scp, rsync. tmux/screen for persistent sessions. cron for scheduled tasks. |
SSH into your VPS. Set up key-based auth (no password). Use tmux for long-running tasks. Set up a cron job that runs your backup script daily. Set up a Linux VM (EC2/ECS free tier) and deploy your Dockerized Blog API |
🔹 REST API Design Deep Dive (Days 79–85) — Total: ~21 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 79 | 3h | REST principles: resources (nouns), HTTP methods (verbs). Statelessness. HATEOAS (optional). URL design: /users, /users/:id, /users/:id/posts. Query parameters for filtering, sorting, pagination. |
Redesign Blog API to RESTful conventions. Consistent URL patterns. Proper nesting of resources |
| 80 | 3h | HTTP status codes: 2xx (200, 201, 204), 3xx (301, 302, 304), 4xx (400, 401, 403, 404, 409, 422, 429), 5xx (500, 502, 503). Response headers (Content-Type, Location, Retry-After, ETag). CORS. | Audit all endpoints — return correct status codes. Add Location header on 201 Created. Add Retry-After on 429. Handle CORS preflight |
| 81 | 3h | API versioning: URL path (/v1/, /v2/), header (Accept: application/vnd.api+json;version=2), query param (?version=2). Deprecation (Sunset header). Backward compatibility. |
Add /api/v1/ prefix. Design /api/v2/ with breaking changes. Add deprecation notice to v1 |
| 82 | 3h | Pagination patterns: OFFSET-based (simple, but drifts). Cursor/keyset-based (stable, performant). Link header (RFC 5988). Response envelope ({"data": [], "pagination": {"next_cursor": "...", "has_more": true}}). |
Implement cursor pagination. Add Link header. Compare OFFSET vs cursor for 1M rows. Write tests for edge cases |
| 83 | 3h | Rate limiting: Token bucket algorithm. Fixed window vs sliding window. Distributed rate limiting with Redis. X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset headers. |
Implement token bucket rate limiter middleware. Add rate limit headers. Test with concurrent requests. Implement Redis-based distributed rate limiting |
| 84 | 3h | OpenAPI / Swagger: Specification (paths, parameters, responses, schemas). swaggo/swag or ogen for Go code generation. Swagger UI. Postman collections. |
Generate OpenAPI spec from Go code annotations. Serve Swagger UI at /docs. Test all endpoints from Swagger UI. Export Postman collection |
| 85 | 3h | Best practices: idempotency keys (POST with Idempotency-Key header). Conditional requests (ETag, If-Match, If-None-Match). Compression (gzip, brotli). Caching headers (Cache-Control, Expires). Bulk operations. |
Add idempotency to order creation. Add ETag support. Enable gzip compression. Add caching headers for GET endpoints. Design bulk create/update endpoints |
🔹 🏗️ Capstone: E-commerce API (Days 86–90) — Total: ~17 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 86 | 3.5h | Schema design: products, users, carts, cart_items, orders, order_items, payments. Migrations. Data model in Go (structs, validation). |
Design and create all tables. Write migrations. Create Go models with validation tags |
| 87 | 3.5h | Core CRUD: Products (list/search/detail). Cart (add item, update quantity, remove, view). Atomic cart operations (SELECT FOR UPDATE). | Implement product catalog. Implement cart with concurrent safety (Mutex or DB-level). Test with 2 simultaneous cart updates |
| 88 | 3.5h | Order flow: Cart → Checkout → Order creation (in transaction). Inventory reservation (decrement stock atomically). Payment simulation. Order status (pending → paid → shipped → delivered). | Implement checkout endpoint. Use DB transaction for order+items+stock update. Rollback on failure. Test concurrent checkouts (stock should never go negative) |
| 89 | 3.5h | Redis integration: product cache (cache-aside). Cart data in Redis (fast reads). Session store. Rate limiting. Health check endpoints (/health, /ready). Graceful shutdown (drain connections). |
Add Redis caching for products. Store active carts in Redis. Add Redis health check. Implement graceful shutdown (signal → stop accepting → finish in-flight → disconnect DB/Redis) |
| 90 | 3h | Deploy: Docker Compose (4 services: API + PostgreSQL + Redis + optional Nginx). Deploy to AWS EC2 or Alibaba ECS free tier. Set up domain (optional). Test deployment with curl/Postman. | Full Docker Compose setup. Deploy to VPS. Verify all endpoints work remotely. Write deployment guide in README |
✅ Month 3 Checkpoint: You can Git like a pro, Dockerize any app, navigate Linux confidently, and deploy to a cloud VM.
| Days | Topic | What to Learn | Hands-on |
|---|---|---|---|
| 91–95 | gRPC + Protocol Buffers | proto3 syntax. Service definitions. Unary RPC. Message types, enums, nested types. Proto generation (protoc). |
Build a gRPC service (calculator/user service). Generate client/server stubs |
| 96–100 | gRPC Advanced | Server/Client/Bidirectional streaming. Interceptors (auth, logging, recovery). Error handling. gRPC-gateway (REST transcoding). grpcurl for debugging. |
Add streaming to your service (chat, real-time updates). Add auth interceptor. Expose REST via gRPC-gateway |
| 101–105 | Redis Fundamentals | Data structures (String, Hash, List, Set, Sorted Set). TTL & expiry. Pub/Sub. Caching patterns (cache-aside, write-through). Go Redis client (go-redis). |
Build a session store. Rate limiter with Redis. Leaderboard with sorted sets. Real-time notifications with Pub/Sub |
| 106–112 | Authentication & Security | JWT (structure, signing, validation). OAuth2 flow. Password hashing (bcrypt). API key auth. RBAC patterns. Common security vulnerabilities (OWASP top 10). | Implement full auth system: register, login, refresh tokens, role-based access. Add to your e-commerce project |
| 113–120 | 🏗️ CAPSTONE PROJECT | gRPC microservice with Redis | Real-time Chat Backend: gRPC bidirectional streaming. Redis Pub/Sub for message broadcasting. JWT auth. Message persistence in PostgreSQL. Docker Compose for all services |
🔹 gRPC + Protocol Buffers (Days 91–95) — Total: ~15 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 91 | 3h | What is gRPC? (HTTP/2, binary, multiplexed). Protocol Buffers overview. Install protoc + protoc-gen-go + protoc-gen-go-grpc. Proto3 syntax: message, fields (types, numbers), repeated, enum, oneof. |
Write a .proto file for a Calculator service (Add, Subtract, Multiply, Divide). Generate Go code. Inspect generated files |
| 92 | 3h | Service definitions: service X { rpc Method(Request) returns (Response); }. Generate server + client stubs. Implement server: embed UnimplementedXServer, implement methods. Create client, make RPC call. |
Implement Calculator server. Write client that calls all methods. Test with valid/invalid inputs |
| 93 | 3h | Message design: nested types, imports (import "other.proto"), package. Well-Known Types (google.protobuf.Timestamp, google.protobuf.Empty). Field deprecation ([deprecated = true]). Proto style guide. |
Design a User service: CreateUser, GetUser, ListUsers, UpdateUser, DeleteUser. Use Timestamp for created_at. Use proper package naming |
| 94 | 3h | Proto best practices: backward compatibility (never change field numbers, use reserved). Adding/removing fields safely. oneof for optional fields. google.protobuf.FieldMask for partial updates. |
Add a field to User message (ensure backward compat). Use oneof for optional middle name. Implement partial update with FieldMask |
| 95 | 3h | buf tool: buf build, buf lint, buf breaking, buf generate. Replaces protoc for modern proto workflow. Buf Schema Registry (BSR) overview. |
Migrate proto compilation to buf. Add lint rules. Run breaking change detection. Set up buf.gen.yaml |
🔹 gRPC Advanced (Days 96–100) — Total: ~15 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 96 | 3h | Streaming: Server-side streaming (stream keyword). Client reads from stream until io.EOF. Use cases: log tailing, large downloads, server push. |
Add ListUsers as server streaming (stream users one by one). Add StreamLogs streaming endpoint. Client consumes stream |
| 97 | 3h | Client-side streaming: client sends multiple messages. Use case: file upload, batch processing, metrics ingestion. Bidirectional streaming: both sides stream independently. Use case: chat, real-time collaboration. | Add UploadFile (client streaming). Add Chat (bidirectional: client sends messages, server echoes + broadcasts). Test both directions simultaneously |
| 98 | 3h | Interceptors (middleware): Unary interceptor (grpc.UnaryServerInterceptor). Stream interceptor (grpc.StreamServerInterceptor). Client interceptors. Common interceptors: logging, auth, recovery, rate limiting, tracing. |
Add logging interceptor (log method, duration, status). Add auth interceptor (validate JWT from metadata). Add panic recovery interceptor. Chain them |
| 99 | 3h | Error handling: status.Errorf(codes.InvalidArgument, "msg"). gRPC status codes mapping to HTTP. google.golang.org/genproto/googleapis/rpc/errdetails for rich errors. Client-side error handling. Deadline propagation. |
Return proper gRPC errors from server. Handle errors on client side (switch on status code). Add retry logic with exponential backoff on client |
| 100 | 3h | gRPC-gateway: generate REST API from proto annotations (google.api.http). Serve both gRPC and REST on same/different ports. grpcurl for debugging (like curl for gRPC). grpcui for GUI. |
Add HTTP annotations to proto. Generate gRPC-gateway. Test same endpoint via REST and gRPC. Debug with grpcurl |
🔹 Redis Fundamentals (Days 101–105) — Total: ~15 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 101 | 3h | Redis overview (in-memory, single-threaded, data structures server). Install Redis (Docker). redis-cli basics. String commands: SET, GET, SETEX, SETNX, INCR, DECR, MSET, MGET. Go client setup (go-redis/v9). |
Connect Go client to Redis. Implement a view counter (INCR). Implement distributed rate limiter with SETEX + INCR. TTL-based temporary tokens |
| 102 | 3h | Hash commands: HSET, HGET, HGETALL, HMSET, HDEL, HEXISTS, HINCRBY. Perfect for objects/sessions. List commands: LPUSH, RPUSH, LPOP, RPOP, LRANGE, LLEN, LTRIM. Use cases: queues, recent items. |
Store user profiles as Hashes. Build capped "recent activities" list (LPUSH + LTRIM). Simple task queue (LPUSH producer, BRPOP consumer) |
| 103 | 3h | Set commands: SADD, SREM, SISMEMBER, SMEMBERS, SINTER, SUNION, SDIFF, SCARD. Use cases: tags, unique visitors. Sorted Set: ZADD, ZRANGE, ZREVRANGE, ZRANK, ZSCORE, ZRANGEBYSCORE, ZINCRBY. Use cases: leaderboards, priority queues. |
Track unique daily visitors with Set. Leaderboard with Sorted Sets (score = points). Find top 10 users. Get user's rank |
| 104 | 3h | Pub/Sub: PUBLISH, SUBSCRIBE, PSUBSCRIBE (pattern). Go client pub/sub. Message delivery guarantees (at-most-once, no persistence). TTL & Expiry: EXPIRE, TTL, PERSIST. Key eviction policies (LRU, LFU, etc.). |
Real-time notification system with Pub/Sub. Build publish endpoint (Go HTTP handler) + subscriber goroutine. Handle reconnection on subscriber |
| 105 | 3h | Caching strategies: Cache-aside (look in cache → miss → DB → populate cache → return). Write-through (write to cache + DB simultaneously). Write-behind (write to cache, async flush to DB). Cache invalidation (TTL, explicit delete). Cache stampede prevention (mutex on miss). | Implement all 3 caching strategies for product data. Measure response time with/without cache. Prevent stampede with singleflight or Redis SETNX lock |
🔹 Authentication & Security (Days 106–112) — Total: ~21 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 106 | 3h | Password hashing: bcrypt (GenerateFromPassword, CompareHashAndPassword). Salt, cost factor. Why not SHA/MD5. argon2 overview (better than bcrypt). |
Implement user registration with bcrypt. Test: same password → different hashes. Benchmark bcrypt cost 10 vs 12 vs 14 |
| 107 | 3h | JWT deep: Header (alg, typ). Payload (claims: sub, exp, iat, jti). Signature. HS256 vs RS256. Access token vs refresh token pattern. Token storage (HTTP-only cookie vs localStorage). golang-jwt/jwt library. |
Generate access token (15 min) + refresh token (7 days). Validate tokens. Parse claims. Implement token refresh endpoint |
| 108 | 3h | OAuth2 flow: Authorization Code Grant (most common). PKCE for public clients. Google/GitHub OAuth integration. State parameter (CSRF protection). Redirect URI validation. | Implement "Login with GitHub" on your API. Create OAuth2 client in GitHub. Handle callback, exchange code for token, fetch user info, create session |
| 109 | 3h | RBAC (Role-Based Access Control): roles (admin, moderator, user). Permissions per role. Middleware to check role. API key auth for machine-to-machine. HMAC signing for webhooks. | Define roles and permissions. Add RBAC middleware. Create admin-only endpoints. Generate API keys for third-party integrations |
| 110 | 3h | OWASP Top 10 for APIs: ① Broken Object Level Auth (check ownership!). ② Broken Authentication. ③ Excessive Data Exposure. ④ Lack of Resources & Rate Limiting. ⑤ Broken Function Level Auth. ⑥ Mass Assignment. ⑦ Security Misconfiguration. ⑧ Injection (SQL, NoSQL). ⑨ Improper Assets Management. ⑩ Insufficient Logging. | Audit your E-commerce API against each OWASP item. Fix: add ownership checks, filter response fields, prevent mass assignment, validate input. Write security test cases |
| 111 | 3h | Input validation & sanitization: go-playground/validator deep. Custom validators. SQL injection prevention (parameterized queries — always!). XSS prevention (escape output). CSRF tokens. Content Security Policy headers. |
Add comprehensive validation to all endpoints. Test SQL injection attempts (they should fail). Add CSP headers. CSRF protection for cookie-based auth |
| 112 | 3h | HTTPS/TLS: certificate types (DV, OV, EV). Let's Encrypt + autocert. TLS versions, cipher suites. HSTS header. Certificate pinning (pros/cons). Security headers (X-Content-Type-Options, X-Frame-Options, Referrer-Policy). |
Set up HTTPS with Let's Encrypt. Add all security headers. Test with securityheaders.com. Set up auto-renewal for certs |
🔹 🏗️ Capstone: Real-time Chat Backend (Days 113–120) — Total: ~26 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 113 | 3.5h | Architecture design: gRPC bidirectional streaming for chat. Redis Pub/Sub for message broadcasting across server instances. PostgreSQL for persistence. JWT auth. Design proto: ChatService with Chat(stream ChatMessage) bidirectional RPC. |
Design system on paper. Write proto definitions. Set up project structure. Generate gRPC stubs |
| 114 | 3.5h | Core streaming: Implement bidirectional stream handler. Client sends message → server receives → broadcast to all connected clients via Pub/Sub. Handle client connect/disconnect. | Implement chat server with bidirectional streaming. Client connects → server tracks clients in map. Message from client → publish to Redis Pub/Sub |
| 115 | 3h | Redis Pub/Sub integration: Subscribe to channel per chat room. On message received → broadcast to all clients in that room. Handle Pub/Sub reconnection. Multiple chat rooms support. | Add Redis Pub/Sub. Multiple rooms (each a Redis channel). Client joins room → subscribes to channel. Test with 2+ clients in same room |
| 116 | 3.5h | Persistence: Save all messages to PostgreSQL. Load last N messages on room join. Message status (sent, delivered, read). Unread message count. | Add message persistence. On room join → load last 50 messages. Track unread count per user per room. Mark as read |
| 117 | 3.5h | Auth integration: JWT token in gRPC metadata. Auth interceptor validates token. Only authenticated users can chat. User identification (who sent message?). Online/offline status. | Add auth interceptor to chat server. Extract user from JWT. Attach user to messages. Show online users in room. Handle disconnect → mark as offline after timeout |
| 118 | 3h | Advanced features: Typing indicators (client→server→broadcast). Read receipts. Message editing and deletion. File/image sharing (upload endpoint + share URL in chat). | Add typing indicator event. Add read receipts (last read message ID). Allow edit/delete of own messages. Add file upload endpoint |
| 119 | 3h | Testing: Test concurrent clients. Test message ordering. Test reconnection. Test auth failures. Load test with 1000 simulated clients. | Write integration tests. Simulate multiple clients with goroutines. Verify messages arrive in order. Test disconnect/reconnect. Load test with 1K concurrent connections |
| 120 | 3h | Polish: Docker Compose (Go + PostgreSQL + Redis). Graceful shutdown (save state, notify clients). Error handling. README.md with architecture diagram. |
Docker Compose for one-command start. Graceful shutdown. Architectural diagram (ASCII or image). Write comprehensive README. Tag release |
✅ Month 4 Checkpoint — BEGINNER LEVEL COMPLETE: You can build production-grade Go microservices with gRPC, Redis, PostgreSQL, and proper auth. Dockerized and deployable. You're ready for junior Go backend roles.
Goal: Master Go internals, orchestration, cloud infrastructure, and event-driven systems. You're now a solid mid-level backend engineer.
| Days | Topic | What to Learn | Hands-on |
|---|---|---|---|
| 121–127 | Go Runtime Deep Dive | GMP scheduler model (Goroutine, Machine, Processor). Work stealing. Preemptive scheduling. Escape analysis (when do variables escape to heap?). Stack vs heap allocation. | Write code that intentionally triggers escape analysis. Use go build -gcflags="-m" to verify. Profile goroutine count under load |
| 128–134 | Go Memory & GC | GC phases (mark, sweep). Tri-color mark-and-sweep. Write barrier. GC tuning (GOGC, GOMEMLIMIT). Memory profiler. Object pooling (sync.Pool). |
Tune GC for a memory-intensive app. Implement object pooling for heavy allocations. Benchmark before/after |
| 135–142 | PostgreSQL at Scale | Query optimization masterclass. Partial indexes, expression indexes. Table partitioning. Connection pooling (pgbouncer, pgx pool). Read replicas. Vacuum & autovacuum tuning. | Take a slow query from 500ms → 5ms with indexing. Set up read replica + connection pooler. Write a migration-heavy workload |
| 143–150 | 🏗️ CAPSTONE PROJECT | High-performance data pipeline | Analytics Pipeline: Go worker ingests millions of events. Batch insert into PostgreSQL. Connection pooling. GC-optimized. Benchmark throughput (events/sec). pprof flame graphs |
🔹 Go Runtime Deep Dive (Days 121–127) — Total: ~22 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 121 | 3h | Goroutine (G): stack (2KB initial, growable), state, saved registers. Machine (M): OS thread. Processor (P): local runqueue, GOMAXPROCS. The G-M-P relationship: G needs M to run, M needs P to execute G's. GOMAXPROCS default (= CPU cores). |
Read Go scheduler source code (simplified). Write program spawning 100K goroutines. Monitor with runtime.NumGoroutine(). Adjust GOMAXPROCS and observe |
| 122 | 3h | Scheduler lifecycle: G creation (go func() → put in P's local queue). M finds G (from local queue, global queue, or steal). Work stealing (P steals from other P's local queue when idle). Spinning threads. Network poller integration (sysmon). |
Trace scheduler behavior. Create unbalanced workloads (some P's busy, some idle) → observe work stealing. Profile goroutine scheduling latency |
| 123 | 3.5h | Preemptive scheduling (Go 1.14+): asynchronous preemption via signals. Before 1.14: cooperative (function calls only). Why preemption matters for tight loops. Sysmon thread (monitors, preempts long-running goroutines). | Write tight infinite loop without function calls (Go <1.14 would hang P). Test with Go 1.22+. Understand how preemption is triggered |
| 124 | 3.5h | Goroutine states: idle, runnable, running, syscall, waiting, dead. Blocking syscalls (handoff P to another M). Network I/O (netpoller, goroutine parked). Channel operations (goroutine parked in wait queue). | Create goroutine state transition diagram. Write code blocking on channel, mutex, I/O. Use go tool trace to visualize goroutine states over time |
| 125 | 3h | Stack management: goroutine stack (2KB→grow, can shrink). Stack copying vs stack splitting (Go uses copying now). Stack overflow detection. runtime.Stack() for debugging. |
Print goroutine stacks on deadlock. Create deep recursion → observe stack growth. Measure stack copy overhead with benchmark |
| 126 | 3h | Escape analysis: when does a variable move to heap? Rules: ① returned from function. ② stored in interface. ③ too large for stack. ④ closure captures. go build -gcflags="-m" output. Escape analysis report. |
Write 10 code snippets and predict stack/heap allocation. Verify with -gcflags="-m". Fix unnecessary heap allocations. Benchmark before/after |
| 127 | 3h | Stack vs heap performance comparison. Allocation cost. GC pressure from heap allocations. Inlining (go build -gcflags="-m" shows inlined functions). go test -benchmem to see allocs/op. |
Benchmark stack-allocated vs heap-allocated struct. Use sync.Pool to reduce allocations. Profile allocation-heavy code. Write optimization report |
🔹 Go Memory & GC (Days 128–134) — Total: ~22 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 128 | 3h | GC overview: concurrent, tri-color mark-and-sweep. GC phases: ① Mark Setup (STW). ② Concurrent Marking. ③ Mark Termination (STW). ④ Concurrent Sweep. Write barrier: why needed during concurrent marking. | Read Go GC guide. Enable GC tracing (GODEBUG=gctrace=1). Run GC-heavy workload, analyze trace output. Understand GC pause durations |
| 129 | 3.5h | GC tuning: GOGC (default 100 = GC when heap doubles). GOMEMLIMIT (Go 1.19+, soft memory limit). runtime/debug.SetGCPercent(). debug.FreeOSMemory(). GC pacing algorithm. |
Run app with GOGC=50, 100 (default), 200, 500, off. Measure throughput vs memory usage. Find sweet spot. Set GOMEMLIMIT for bounded memory |
| 130 | 3.5h | Memory profiling: pprof heap profile (-inuse_space vs -inuse_objects vs -alloc_space). go tool pprof -top, -list, -web. Flame graphs. Finding memory leaks (alloc_space growing). |
Profile a memory-intensive app. Find top 5 allocations. Fix memory leak (forgotten goroutine reference). Verify allocation decrease |
| 131 | 3h | sync.Pool: object pooling for frequently allocated short-lived objects. How it works (per-P private + shared pool). Pool cleanup on GC. Use cases: byte buffers, JSON encoders, temporary structs. |
Implement object pool for bytes.Buffer in HTTP handler. Benchmark allocations before/after. Verify GC reduction with gctrace |
| 132 | 3h | Memory model & alignment: struct field alignment (padding). unsafe.Sizeof, alignof. Reorder struct fields to minimize padding. Memory layout optimization. |
Audit your structs for padding. Reorder fields. Measure struct size before/after. Calculate memory savings for 1M instances |
| 133 | 3h | String vs []byte: conversion cost (allocation!). strings.Builder for efficient concatenation. bytes.Buffer. unsafe string/byte conversion (no-copy trick — use with extreme care). |
Benchmark string concatenation methods (+ vs Builder vs Buffer). Implement efficient log formatter with Builder. Compare allocations |
| 134 | 3h | Go memory management review. Build a memory-optimized cache from scratch. Review all GC tuning knobs. Write a memory optimization guide for yourself. | Build custom TTL cache with size limit, eviction. Profile memory under load. Publish optimization results as a blog post (good for portfolio!) |
🔹 PostgreSQL at Scale (Days 135–142) — Total: ~26 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 135 | 3.5h | Query optimization masterclass: slow query identification (pg_stat_statements, auto_explain). Reading complex EXPLAIN ANALYZE. Nested Loop vs Hash Join vs Merge Join — when each? Join order importance. |
Enable pg_stat_statements. Find top 5 slowest queries. For each: EXPLAIN ANALYZE → identify bottleneck → rewrite/add index → verify improvement. Target: all queries < 10ms |
| 136 | 3.5h | Advanced indexing: partial indexes (WHERE active = true), covering indexes (INCLUDE), expression indexes (LOWER(email)), multi-column index column order. BRIN indexes for very large tables. Hash indexes (PostgreSQL 10+). |
Create partial index for active users (10% of table). Covering index for read-heavy report. Expression index for case-insensitive search. Benchmark each |
| 137 | 3h | Table partitioning: RANGE, LIST, HASH partitioning. Partition pruning. pg_partman for auto-partition management. Detaching/attaching partitions. When partitioning helps vs hurts. |
Partition a 10M-row orders table by month. Query with/without partition key. Measure partition pruning effect. Set up auto-partitioning |
| 138 | 3h | Connection pooling deep: database/sql pool config (SetMaxOpenConns, SetMaxIdleConns, SetConnMaxLifetime). pgx pool (pgxpool). pgbouncer: session vs transaction vs statement pooling. pgbouncer config (pool size, max client connections). |
Set up pgbouncer. Test 1000 concurrent connections through pgbouncer → 20 PostgreSQL connections. Compare throughput with/without pgbouncer |
| 139 | 3.5h | Read replicas: streaming replication (async vs sync). Read/write split in application (write to primary, read from replica). Replication lag handling. Logical replication for selective data. | Set up PostgreSQL streaming replication (primary + 1 replica). Implement read/write split in Go. Handle replication lag (stale reads). Monitor lag with pg_stat_replication |
| 140 | 3.5h | VACUUM: why needed (MVCC dead tuples). Autovacuum tuning (autovacuum_vacuum_scale_factor, autovacuum_vacuum_threshold). Transaction ID wraparound. pg_stat_user_tables (dead tuples, last vacuum). Bloated indexes (REINDEX). |
Check dead tuple ratio in your tables. Tune autovacuum for write-heavy tables. Manual VACUUM FULL (careful!). Monitor after tuning |
| 141 | 3h | Schema migrations at scale: zero-downtime migrations (add column with default = bad in PG <11, better now). Renaming columns safely. Backfill strategies. golang-migrate/atlas advanced features. |
Practice zero-downtime migration: add NOT NULL column with default, add index CONCURRENTLY, rename column with view. Write migration playbook |
| 142 | 3h | Advanced PostgreSQL features: JSONB (indexing with GIN, query operators), full-text search (tsvector, tsquery, ranking), geospatial (PostGIS basics), LISTEN/NOTIFY for real-time, advisory locks. | Build JSONB-based metadata storage. Full-text search for blog posts. Use LISTEN/NOTIFY for cache invalidation across app instances |
🔹 🏗️ Capstone: Analytics Pipeline (Days 143–150) — Total: ~26 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 143 | 3.5h | Design: Event ingestion API (high throughput). Worker pool pattern. Batched inserts for PostgreSQL performance. Schema: events table (partitioned by day). Message queue between HTTP and workers (Go channel or Redis). | Design architecture. Create partitioned events table. Implement HTTP ingestion endpoint (fire-and-forget). Channel-based internal queue |
| 144 | 3.5h | Ingestion optimization: JSON parsing performance (encoding/json vs jsoniter vs sonic). Pre-allocating slices. Zero-allocation parsing for hot path. |
Benchmark JSON parsers with 100K events. Optimize hot path to near-zero allocations. Profile and verify. Achieve 100K+ events/sec ingestion |
| 145 | 3h | Batch processing: Worker goroutines consume from channel. Batch buffer (collect N events or T seconds). pgx CopyFrom for bulk insert. Error handling for failed batches. |
Implement batch writer (1000 events or 1 second). Use CopyFrom for 10x faster inserts. Handle and retry failed batches |
| 146 | 3.5h | Performance tuning: GC tuning (GOGC, GOMEMLIMIT). Connection pool sizing. Worker pool sizing. Buffer sizes. pprof profiling (CPU, memory, goroutines). |
Run full load test (500K events). Profile with pprof. Find and fix top 3 bottlenecks. Tune GC. Iterate until throughput targets met |
| 147 | 3.5h | PostgreSQL tuning for write-heavy workload: disable/relax constraints during bulk load, unlogged tables for staging, synchronous_commit = off (know the risks), maintenance_work_mem for autovacuum. |
Benchmark before/after each tuning. Measure throughput increase. Document tradeoffs (durability vs speed) |
| 148 | 3h | Metrics & monitoring: throughput (events/sec), latency (p50, p95, p99), error rate, queue depth, batch sizes. Export to Prometheus. Simple Grafana dashboard. | Add Prometheus metrics. Create dashboard with key metrics. Run load test and observe dashboard in real-time |
| 149 | 3h | Aggregation queries: materialized views (hourly/daily rollups). SELECT ... GROUP BY performance. Windowing functions for analytics. |
Create hourly materialized views. Refresh concurrently. Write aggregation queries. Optimize slow aggregations with indexes |
| 150 | 3h | Polish & benchmark report: Load test with k6 (1M total events). Benchmark report (throughput, latency, resource usage). pprof flame graphs. README with architecture + performance numbers. | Run final load test. Generate benchmark report. Write architecture document. Tag release with performance numbers |
✅ Month 5 Checkpoint: You understand Go's runtime at a level most devs don't. You can optimize databases and Go memory/GC for production workloads.
| Days | Topic | What to Learn | Hands-on |
|---|---|---|---|
| 151–158 | Kubernetes Core | Pods, ReplicaSets, Deployments. Services (ClusterIP, NodePort, LoadBalancer). ConfigMaps, Secrets. Liveness & readiness probes. Resource requests/limits. | Deploy your chat app to Minikube/kind locally. Create Deployment + Service + ConfigMap manifests |
| 159–166 | Kubernetes Advanced | Ingress & Ingress Controllers (nginx). Persistent Volumes & PVCs. HPA (Horizontal Pod Autoscaler). Rolling updates, rollbacks. Namespaces & RBAC. kubectl mastery, k9s, Lens. |
Set up Ingress with TLS. Configure HPA. Perform a rolling update with zero downtime. Stress test autoscaling |
| 167–174 | Cloud Platform | AWS: EC2, S3, RDS, ElastiCache, IAM, VPC, Security Groups, CloudWatch. OR Alibaba Cloud: ECS, OSS, RDS, Redis, RAM, VPC. Free tier usage. | Deploy your K8s cluster on cloud (EKS/ACK or managed K8s). Set up RDS PostgreSQL. Store files in S3/OSS. Lock down with IAM/RAM |
| 175–180 | 🏗️ CAPSTONE PROJECT | Cloud-native Go backend on K8s | URL Shortener Service: Go API. PostgreSQL for URLs. Redis for caching. Deploy to K8s on cloud. HPA configured. TLS via cert-manager. S3/OSS for analytics exports. Load test with hey or k6 |
🔹 Kubernetes Core (Days 151–158) — Total: ~25 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 151 | 3h | Kubernetes architecture: control plane (API server, etcd, scheduler, controller manager). Worker nodes (kubelet, kube-proxy, container runtime). Install Minikube, kind, or Docker Desktop K8s. kubectl context, config, basic commands. |
Set up local K8s cluster. Run kubectl get nodes, kubectl cluster-info. Explore ~/.kube/config. Create a namespace |
| 152 | 3h | Pods: smallest deployable unit. Single-container vs multi-container pods (sidecar pattern). Pod lifecycle (Pending → Running → Succeeded/Failed). kubectl run, kubectl describe pod, kubectl logs, kubectl exec. |
Create a pod YAML manually. Deploy your Go app as a pod. exec into pod. Check logs. Delete and recreate. Understand pod IP is ephemeral |
| 153 | 3.5h | ReplicaSets: ensures N replicas running. Self-healing (recreates failed pods). Selectors and labels. Deployments: declarative updates, manages ReplicaSets. Rolling updates, rollbacks. kubectl rollout. |
Create Deployment with 3 replicas. Kill a pod → observe auto-recreation. Update image tag → rolling update. Rollback. kubectl rollout history |
| 154 | 3.5h | Services: stable IP + DNS for pods. ClusterIP (internal only). NodePort (exposes on node IP). LoadBalancer (cloud LB). Service types deep. Endpoints and EndpointSlices. kubectl port-forward. |
Create ClusterIP service for Go API. Test with port-forward. Create NodePort. Access from host. Understand kube-proxy role (iptables/IPVS) |
| 155 | 3h | ConfigMaps: non-sensitive config data. Create from literal, file, YAML. Consume as env vars, command args, or volume mount. Secrets: similar but base64-encoded (NOT encrypted by default!). kubectl create secret. |
Externalize Blog API config to ConfigMap (DB host, port, log level). Mount as env vars. Create Secret for DB password. Verify pods read config correctly |
| 156 | 3h | Probes: Liveness (is pod alive? restart if fails). Readiness (is pod ready for traffic? remove from Service if fails). Startup probe (for slow-starting apps). Probe types: HTTP, TCP, command. Configuring timing. | Add /health and /ready endpoints to Go API. Configure liveness + readiness probes. Test: make /ready return 503 → pod removed from Service → recovers |
| 157 | 3h | Resource management: requests (guaranteed minimum) vs limits (hard cap). CPU (millicores) and memory (Mi/Gi). QoS classes (Guaranteed, Burstable, BestEffort). OOMKilled. kubectl top. |
Set CPU/memory requests and limits. Deploy pod that exceeds memory limit → OOMKilled. Observe QoS class. Use kubectl top to monitor |
| 158 | 3h | All-together: Deploy Chat Backend (from Month 4) to local K8s. Deployment + Service + ConfigMap + Secret + Probes + Resources. Test end-to-end (gRPC + REST). | Deploy full Chat Backend stack on K8s (Go + PostgreSQL + Redis as separate Deployments + Services). Connect everything. Test chat functionality |
🔹 Kubernetes Advanced (Days 159–166) — Total: ~25 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 159 | 3.5h | Ingress: external HTTP/HTTPS access to Services. Ingress controller (nginx-ingress, traefik). Path-based and host-based routing. TLS termination with cert-manager. Annotations. | Install nginx-ingress controller. Create Ingress rules for Chat API (REST on /api, Swagger on /docs). Access via *.nip.io or local hosts. Add TLS with cert-manager + Let's Encrypt (staging first) |
| 160 | 3.5h | Persistent Volumes (PV) + Persistent Volume Claims (PVC): storage abstraction. Static vs dynamic provisioning. Storage classes. Access modes (RWO, ROX, RWX). StatefulSets for stateful apps. | Create PVC for PostgreSQL data. Deploy PostgreSQL with PVC. Test: delete pod → data persists. Create StorageClass for SSD. Use StatefulSet for Redis |
| 161 | 3h | HPA (Horizontal Pod Autoscaler): auto-scale based on CPU/memory or custom metrics. kubectl autoscale. HPA algorithm (target utilization). Scale up/down stabilization window. Behavior config (scaleUp, scaleDown policies). |
Configure HPA for Go API (CPU 70%). Load test → observe pod scaling. Tune stabilization windows. Test scale-down delay |
| 162 | 3h | Rolling updates & rollbacks: maxSurge, maxUnavailable. Deployment strategy: RollingUpdate vs Recreate. kubectl rollout undo. Canary with multiple Deployments + shared Service labels. |
Configure rolling update strategy. Deploy new version (v2) with maxSurge=1, maxUnavailable=0. Observe zero-downtime. Deploy v3 (broken) → rollback. Test Recreate strategy |
| 163 | 3h | Namespaces: logical isolation. Default, kube-system, custom. Resource quotas. Network policies (pod-to-pod communication rules). RBAC: Roles, RoleBindings, ClusterRoles, ServiceAccounts. | Create dev/staging/prod namespaces. Set resource quota on dev. Create ServiceAccount for Go API. Bind Role to ServiceAccount (pod read permissions). Test RBAC restrictions |
| 164 | 3h | Kubectl mastery: -o json/yaml/wide/jsonpath. --dry-run=client -o yaml for generating templates. kubectl explain. Contexts and switching. kubectl diff. kubectl wait. |
Generate Deployment YAML with --dry-run. Use kubectl diff before applying changes. Wait for rollout with kubectl wait. Write a kubectl cheatsheet |
| 165 | 3h | K9s and Lens: TUI and GUI for Kubernetes. Resource browsing, logs, shell, events. K9s shortcuts. Lens multi-cluster view. | Install k9s. Navigate: pods, deployments, services, events, logs (with l), shell (with s). Use Lens for cluster overview. Find shortcuts you'll use daily |
| 166 | 3h | Troubleshooting: Pod stuck in Pending (resource issue, PVC not bound). CrashLoopBackOff (check logs, liveness probe). ImagePullBackOff. Service not routing (labels mismatch, port mismatch). kubectl describe and kubectl events. |
Break things intentionally and fix: wrong image tag, missing ConfigMap, port mismatch, resource starvation, PVC not found. For each: diagnose → fix → verify |
🔹 Cloud Platform (Days 167–174) — Total: ~25 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 167 | 3h | Cloud overview (AWS or Alibaba Cloud — choose one). Free tier setup. IAM/RAM: users, groups, roles, policies. Principle of least privilege. MFA. CLI setup (aws configure or aliyun configure). |
Create IAM user with programmatic access. Attach minimal policies. Set up CLI. Verify access. Enable MFA |
| 168 | 3h | Compute: EC2/ECS instances (types, AMIs/images). Launch, SSH, terminate. Security groups (firewall rules). Key pairs. Elastic IPs. Launch templates. | Launch EC2/ECS instance (free tier). SSH in. Install Go + Docker. Run your Go app. Create security group (allow 8080 from your IP only) |
| 169 | 3.5h | Networking: VPC (CIDR, subnets, route tables, internet gateway, NAT gateway). Public vs private subnets. VPC peering basics. Load balancers (ALB/NLB or SLB). | Create VPC with public and private subnets. Launch instance in private subnet (via bastion). Set up ALB/SLB to route traffic to instances |
| 170 | 3.5h | Storage: S3/OSS (buckets, objects, versioning, lifecycle policies, pre-signed URLs). EBS/disk (volume types, snapshots). EFS/NAS (shared file system). | Create S3/OSS bucket. Upload/download with CLI and Go SDK. Generate pre-signed URL. Set lifecycle policy (move to cheaper storage after 30 days). Create EBS snapshot |
| 171 | 3h | Database: RDS (PostgreSQL, multi-AZ, read replicas, automated backups, snapshots). ElastiCache/Redis (cluster mode, parameter groups). Connection from app. | Create RDS PostgreSQL (free tier). Connect from local machine (security group rule). Create read replica. Take snapshot. Set automated backup window |
| 172 | 3h | Elastic Container Service (ECS) / Alibaba ACK: why managed K8s vs self-managed. EKS/ACK cluster creation. Node groups. eksctl or Alibaba console. Cluster authentication. |
Create EKS/ACK cluster. Configure kubectl. Deploy your Go API to managed K8s. Verify pods running and accessible |
| 173 | 3h | Monitoring & logging: CloudWatch/CloudMonitor (metrics, logs, alarms). Container Insights. CloudTrail/ActionTrail (API audit). aws/aliyun CLI for logs. |
Set up CloudWatch log group. Stream app logs to CloudWatch. Create alarm (CPU > 80% → email). View CloudTrail events |
| 174 | 3h | Cost management: Free tier limits. Budget alerts. Tagging resources. Cost Explorer. Right-sizing. Idle resource cleanup. | Tag all resources (project=roadmap). Set budget alert ($10/month). Review costs in Cost Explorer. Clean up unused resources |
🔹 🏗️ Capstone: URL Shortener on K8s (Days 175–180) — Total: ~20 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 175 | 3.5h | Design: Short URL generation (hash, base62). Collision handling. Redirect (301 vs 302). Analytics (clicks, referrer, geo). Tech: Go + PostgreSQL + Redis. Deploy on K8s. | Build Go API: POST /shorten, GET /:shortCode (redirect), GET /:shortCode/stats. PostgreSQL for storage. Redis for caching (hot URLs) |
| 176 | 3.5h | K8s manifests: Deployment (3 replicas), Service (ClusterIP), Ingress (TLS), ConfigMap (base URL, DB config), Secret (DB password). HPA (CPU 70%, min 3, max 10). cert-manager for TLS. | Write all K8s manifests. Deploy to managed K8s. Verify: HTTPS works, HPA configured, config from ConfigMap |
| 177 | 3h | Cloud resources: RDS PostgreSQL (with automated backups). ElastiCache/Redis. S3/OSS bucket for analytics exports (daily CSV dump via cron job). IAM/RAM roles for service accounts (IRSA/RAM Role). | Create cloud resources. Set up IRSA/RAM Role so pods can access S3/OSS without hardcoded credentials. Test S3 access from pod |
| 178 | 3.5h | Performance: Load test with k6 (k6 run). Target: 5000 RPS. Monitor HPA scaling. Prometheus metrics (request rate, latency p95, redirect latency). |
Run k6 load test (increasing RPS over time). Watch HPA scale pods. Collect metrics. Identify bottlenecks (DB connection pool, Redis timeout) |
| 179 | 3.5h | High availability testing: Kill a pod (should auto-recreate, no downtime). Kill a node (pods reschedule). DB failover (promote read replica). Redis failover. | Chaos testing: kubectl delete pod, drain node. Verify availability. Test DB failover. Document recovery time |
| 180 | 3h | Polish: Custom domain with Route 53/DNS. CDN (CloudFront/CDN) for redirects. Architecture diagram (draw.io). Runbook (what to do when...). Cost analysis. | Set up custom domain. Add CDN for caching redirects. Write architecture doc + runbook. Calculate monthly cloud cost. Tag release |
✅ Month 6 Checkpoint: You can design, deploy, and scale Go microservices on Kubernetes in the cloud. This is what real companies do daily.
| Days | Topic | What to Learn | Hands-on |
|---|---|---|---|
| 181–187 | Apache Kafka | Topics, partitions, offsets. Producers (acks, batching, compression). Consumer groups, rebalancing. Retention policies. Kafka CLI tools. Go client (sarama or kafka-go). |
Set up Kafka locally (Docker). Producer that sends 10K messages/sec. Consumer group with 3 consumers. Observe rebalancing |
| 188–194 | Event-Driven Patterns | Event sourcing. CQRS (Command Query Responsibility Segregation). Outbox pattern. Dead letter queues. Retry with exponential backoff. Idempotent consumers. Exactly-once semantics (idempotency keys). | Implement order processing pipeline: OrderCreated → PaymentProcessed → InventoryReserved → OrderConfirmed. With DLQ and retries |
| 195–202 | Redis at Scale | Redis Cluster (sharding, hash slots). Sentinel (high availability). Distributed locks (Redlock). Redis Streams (consumer groups, acknowledgment). Caching strategies (write-through, write-behind, refresh-ahead). | Set up Redis Cluster (6 nodes). Implement distributed lock for deduplication. Use Redis Streams for a notification system |
| 203–210 | 🏗️ CAPSTONE PROJECT | Event-driven microservices | Food Delivery Backend (like Meituan/Didi): Order service → Kafka → Payment service → Kafka → Restaurant service → Kafka → Delivery service. Redis for real-time driver location. PostgreSQL for persistence. All async, event-driven |
🔹 Apache Kafka (Days 181–187) — Total: ~22 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 181 | 3h | Kafka architecture: brokers, topics, partitions, replicas. Leader-follower replication. ZooKeeper vs KRaft (Kafka Raft). ISR (In-Sync Replicas). Producer → Broker → Consumer flow. | Set up Kafka with KRaft (no ZooKeeper) via Docker Compose. Create a topic (3 partitions, replication factor 3). Explore Kafka UI (kafka-ui or redpanda console) |
| 182 | 3.5h | Topics & Partitions: how partitions enable parallelism. Key-based partitioning (same key → same partition = ordering). Partition count considerations. Segments and log compaction. Retention (time-based, size-based). | Create topics with different partition counts. Observe key-based routing. Configure retention (1 hour). Enable log compaction for a "latest value" topic |
| 183 | 3.5h | Producers: acks=0/1/all tradeoffs. Batching (batch.size, linger.ms). Compression (snappy, lz4, zstd). Idempotent producer (enable.idempotence=true). kafka-go producer implementation. |
Write Go producer sending 10K messages/sec. Compare acks=0 vs acks=all throughput. Try different compression. Enable idempotent producer, verify no duplicates |
| 184 | 3h | Consumers: Consumer groups (each partition consumed by exactly one member). Offset management (auto-commit vs manual). Rebalancing (eager vs cooperative). kafka-go consumer with group. |
Create consumer group with 3 Go consumers. Observe partition assignment. Kill a consumer → rebalancing. Manually commit offsets. Read from beginning |
| 185 | 3h | Kafka CLI tools: kafka-topics.sh, kafka-console-producer.sh, kafka-console-consumer.sh, kafka-consumer-groups.sh. Describe topics, consumer groups, offsets, lag. |
Use CLI tools to list topics, describe consumer groups, check consumer lag. Produce/consume from CLI. Reset consumer offsets |
| 186 | 3h | Kafka Connect & Schema Registry (optional): connecting Kafka to databases, S3, etc. Avro/Protobuf serialization. Schema evolution and compatibility. | Set up basic Kafka Connect pipeline (file source → Kafka → file sink). Explore schema registry concept. Understand why schemas matter |
| 187 | 3h | Kafka monitoring: consumer lag = key metric. Broker metrics (under-replicated partitions, offline partitions). kafka-exporter for Prometheus. Kafka tuning (num.network.threads, num.io.threads, socket buffers). |
Set up kafka-exporter. Monitor consumer lag in Grafana. Set alert when lag > 1000. Tune broker for throughput |
🔹 Event-Driven Patterns (Days 188–194) — Total: ~22 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 188 | 3h | Event-Driven Architecture (EDA) fundamentals: events vs commands, event notification vs event-carried state transfer. Pros: decoupling, scalability, audit trail. Cons: eventual consistency, complexity, debugging. | Design an event storming diagram for order processing. Identify events, commands, aggregates, bounded contexts |
| 189 | 3.5h | Event sourcing: store state as sequence of events. Replay events to reconstruct state. Event store. Snapshots for performance. Pros: full audit, temporal queries, debugging. Cons: complexity, eventual consistency. | Implement event-sourced bank account: Deposit, Withdraw, Transfer events. Replay to get balance. Snapshot every 100 events. Query balance at any point in time |
| 190 | 3.5h | CQRS: separate read and write models. Command model (write-optimized) → events → Read model (read-optimized, e.g., materialized view in PostgreSQL/Redis). Pros: independent scaling, optimized queries. Cons: eventual consistency. | Implement CQRS for orders: write service accepts commands → emits events → read service updates materialized view. Query reads from materialized view |
| 191 | 3h | Outbox pattern: ensure reliable event publishing. Transaction: save to DB + insert into outbox table. Outbox poller publishes to Kafka. Exactly-once semantics with idempotency. Debezium CDC alternative. | Implement outbox pattern: Go service inserts order + outbox entry in same DB transaction. Poller goroutine publishes to Kafka. Delete/deduplicate processed outbox entries |
| 192 | 3h | Dead Letter Queue (DLQ): failed messages → DLQ for inspection and replay. Error categories: transient (retry) vs permanent (DLQ). Retry strategies: fixed, exponential backoff, exponential with jitter. Max retries. | Implement DLQ consumer. On processing failure → publish to DLQ. Build DLQ inspector (list failed messages, view payload, replay selected). Add retry with exponential backoff + jitter |
| 193 | 3h | Idempotent consumers: exactly-once semantics in at-least-once systems. Idempotency keys. Deduplication (Redis SETNX, DB unique constraint). Processing guarantees: at-most-once, at-least-once, exactly-once. | Add idempotency to order consumer (store processed message IDs in Redis with TTL). Test duplicate messages → no double-processing. Verify exactly-once behavior |
| 194 | 3h | Ordering guarantees: per-partition ordering in Kafka. Global ordering limitations. Out-of-order message handling. Sequence numbers. Event versioning and schema evolution. | Implement sequence number check in consumer. Detect gaps/misses. Implement event upcasting (v1 → v2). Handle schema changes gracefully |
🔹 Redis at Scale (Days 195–202) — Total: ~25 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 195 | 3h | Redis Cluster: sharding with hash slots (16384 slots). Master-replica per slot. Client-side routing (MOVED/ASK redirection). redis-cli --cluster create. Adding/removing nodes. Resharding. |
Set up Redis Cluster (3 masters + 3 replicas) with Docker. Connect Go client (go-redis with cluster mode). Observe slot distribution. Add a node, reshard |
| 196 | 3.5h | Redis Sentinel: high availability without sharding. Sentinel monitors masters, auto-failover. SENTINEL get-master-addr-by-name. Client connection to Sentinel. Sentinel quorum. |
Set up Redis Sentinel (1 master, 2 replicas, 3 sentinels). Connect Go client via Sentinel. Kill master → observe failover → client reconnects. Measure failover time |
| 197 | 3h | Distributed locks: Redlock algorithm (acquire lock on N/2+1 nodes). go-redis Redlock implementation. Use cases: deduplication, leader election, critical section. Pitfalls: clock skew, GC pauses, fencing tokens. |
Implement Redlock for order deduplication. Test with concurrent requests (same order ID → only one processes). Add fencing token. Discuss Redlock criticisms (Martin Kleppmann) |
| 198 | 3.5h | Redis Streams: append-only log, consumer groups, acknowledgment. XADD, XREAD, XREADGROUP, XACK, XPENDING. Use cases: reliable message queue, event sourcing. Compare with Kafka. |
Build a task queue with Redis Streams. Producer XADD tasks. Consumer group (3 workers) XREADGROUP. ACK after processing. Handle pending messages (XPENDING) on restart |
| 199 | 3h | Advanced caching: Write-through, Write-behind (async write to DB), Refresh-ahead (refresh before expiry). Cache invalidation: TTL, event-driven invalidation, versioned keys. Cache stampede: singleflight, probabilistic early recompute, Redis SETNX lock. |
Implement write-behind caching (write to Redis, async flush to PostgreSQL). Implement stampede protection with Redis SETNX. Measure cache hit rate improvement |
| 200 | 3h | Redis data eviction: maxmemory-policy options (noeviction, allkeys-lru, allkeys-lfu, volatile-lru, volatile-ttl). LRU vs LFU tradeoffs. Monitoring memory usage (INFO memory). Key bigkeys scanning (redis-cli --bigkeys). |
Configure eviction policy. Fill Redis to maxmemory. Observe eviction behavior. Find big keys. Optimize memory usage |
| 201 | 3h | Redis persistence: RDB (snapshot), AOF (append-only file). Tradeoffs: RDB faster restart but may lose data, AOF durable but slower. Hybrid persistence (Redis 4.0+). Backup strategies. | Configure RDB + AOF. Simulate crash → restore from RDB/AOF. Time to recover. Set up periodic BGSAVE with cron in Docker |
| 202 | 3h | Redis monitoring: redis-cli --stat, redis-cli --latency. Prometheus exporter. Key metrics: connected_clients, used_memory, evicted_keys, instantaneous_ops_per_sec, hit_rate. Alert on memory, eviction, latency. |
Set up Redis exporter for Prometheus. Create Grafana dashboard. Write alerts (memory > 80%, eviction rate > 0, latency > 10ms) |
🔹 🏗️ Capstone: Food Delivery Backend (Days 203–210) — Total: ~27 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 203 | 3.5h | System design: services (Order, Payment, Restaurant, Delivery, Notification). Event flow: OrderPlaced → PaymentProcessed → OrderAccepted → DriverAssigned → OrderPickedUp → OrderDelivered. Kafka topics per transition. | Design architecture diagram. Create all services (Go). Define proto for internal communication. Set up project structure |
| 204 | 3.5h | Order service: POST /orders (create). Validate items, calculate total. Publish OrderPlaced event. Idempotency (duplicate order prevention). Outbox pattern for reliable publishing. |
Implement Order service. Create order → insert into DB + outbox → publish to Kafka. Add idempotency check |
| 205 | 3.5h | Payment & Restaurant services: Payment consumes OrderPlaced → process payment (simulate) → publish PaymentProcessed or PaymentFailed. Restaurant consumes PaymentProcessed → accept/reject order → publish OrderAccepted/OrderRejected. |
Implement Payment service (consumer + producer). Implement Restaurant service. Handle PaymentFailed → cancel order flow. Handle OrderRejected → refund flow |
| 206 | 3.5h | Delivery & Notification services: Delivery consumes OrderAccepted → find nearest driver (Redis geo) → publish DriverAssigned. Driver flow: accept, pickup, deliver (via REST endpoints). Notification consumes all events → notify users. |
Implement Delivery service with Redis GEO (GEOADD, GEORADIUS). Driver state machine. Implement Notification service (simulate push/SMS with log) |
| 207 | 3h | Real-time tracking: Driver location updates (Redis Pub/Sub or Streams). WebSocket/gRPC streaming for customer tracking. Driver location on map (Redis GEO). | Add driver location update endpoint. Customer subscribes to driver location via gRPC streaming. Display driver position updates in real-time |
| 208 | 3.5h | Error handling & resilience: DLQ for failed events. Saga orchestration (compensating transactions). Timeout handling (order expires if no driver in 5 min). Retry policy per service. Circuit breaker for downstream calls. | Implement Saga orchestrator. Add timeout (order → cancel after 5 min). Implement compensating transactions (refund on cancellation). Add circuit breakers |
| 209 | 3.5h | Testing & debugging: End-to-end test (create order → full flow → delivered). Test failure scenarios (payment fails, no driver available, restaurant rejects). Distributed tracing (trace ID across all services). | Write E2E tests. Test failure scenarios. Add OpenTelemetry tracing across all services. Visualize trace in Jaeger. Debug slow orders |
| 210 | 3h | Docker Compose for local dev: All services + Kafka + PostgreSQL + Redis. One-command start. Health checks and depends_on with condition. Architecture documentation. README with diagram. | Write full Docker Compose. Verify one-command docker-compose up works. Health checks for all services. Architecture diagram. Tag release |
✅ Month 7 Checkpoint: You can architect event-driven systems with Kafka and Redis at production scale. This is a core skill for ByteDance/Meituan/Didi.
| Days | Topic | What to Learn | Hands-on |
|---|---|---|---|
| 211–217 | CI/CD Pipelines | GitHub Actions (workflows, jobs, steps, matrix builds). Docker build + push in CI. Automated testing (unit, integration). Linting (golangci-lint). Release automation (semantic versioning). |
Build a CI pipeline that: lint → test → build → push Docker image → tag release. Add to all your projects |
| 218–224 | Observability | Prometheus (metrics, counters, gauges, histograms). Grafana dashboards. OpenTelemetry (traces, spans). Structured logging (zerolog/zap). Metrics that matter: RED (Rate, Errors, Duration) + USE (Utilization, Saturation, Errors). |
Instrument your food delivery app. RED metrics for every service. Grafana dashboard with request rate, latency p95, error rate. Distributed tracing across services |
| 225–232 | GitOps & Advanced Deployments | ArgoCD. Helm charts. Canary deployments. Blue-green deployments. Feature flags. Secrets management (Vault or Sealed Secrets). | Set up ArgoCD for your K8s cluster. Write Helm chart for your app. Implement canary deployment with weighted Ingress |
| 233–240 | 🏗️ CAPSTONE PROJECT | Production-ready deployment pipeline | End-to-End Production Setup: Take your food delivery app. Add full CI/CD (GitHub Actions). Deploy to K8s via ArgoCD. Full observability stack (Prometheus + Grafana + Loki for logs). Canary deployments. PagerDuty/alertmanager integration |
🔹 CI/CD Pipelines (Days 211–217) — Total: ~22 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 211 | 3h | GitHub Actions fundamentals: workflows (.github/workflows/*.yml). Events (push, pull_request, schedule, workflow_dispatch). Jobs, steps, runners. Actions marketplace. Context and expressions (${{ }}). |
Create workflow for Go API: on push → checkout → setup Go → lint (golangci-lint) → test (go test) → build (go build). Run on every PR |
| 212 | 3h | Docker in CI: Build Docker image. Tag with commit SHA + branch. Push to Docker Hub / GitHub Container Registry. Layer caching (docker/build-push-action with cache). |
Add Docker build + push to workflow. Tag images (:latest, :sha-xxxxx, :branch). Use cache to speed up builds. Push to ghcr.io |
| 213 | 3.5h | Advanced CI: Matrix builds (test against multiple Go versions). Parallel jobs. Caching dependencies (Go modules cache). Artifacts (upload binary, test reports). | Add matrix: Go 1.22, 1.23. Cache Go modules. Upload test coverage report as artifact. Run linters and tests in parallel |
| 214 | 3.5h | Integration tests in CI: Spin up PostgreSQL + Redis with service containers. Run integration tests. Clean up. Testcontainers vs service containers. | Add PostgreSQL + Redis service containers. Run integration tests in CI. Verify tests pass. Handle flaky tests (retry with workflow_dispatch input) |
| 215 | 3h | Release automation: Semantic versioning (v1.2.3). Conventional commits. release-please or semantic-release. Changelog generation. Git tags. GitHub Releases. |
Set up release-please action. Write conventional commits. Generate release PR → merge → tag → release notes auto-generated. Test end-to-end |
| 216 | 3h | Security in CI: Secret management (${{ secrets.X }}). goreleaser for binary releases. SBOM generation. Image signing (cosign). Dependency scanning (Dependabot, govulncheck). |
Add govulncheck to CI. Scan Docker image with trivy. Add Dependabot for Go module updates. Use GitHub secrets for Docker Hub credentials |
| 217 | 3h | Pipeline optimization: Job dependencies (needs). Conditional jobs (if). Reusable workflows. Composite actions. Pipeline visualization. |
Optimize pipeline: lint+test parallel → build (needs test) → push (needs build) → deploy (needs push, conditional on main branch). Create reusable workflow for common steps |
🔹 Observability (Days 218–224) — Total: ~22 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 218 | 3h | Prometheus: architecture (pull model, exporters, Alertmanager). Metrics types: Counter (monotonic increase), Gauge (up/down), Histogram (distribution), Summary (quantiles). PromQL basics: rate(), increase(), histogram_quantile(). Go prometheus/client_golang. |
Add Counter (http_requests_total) and Histogram (http_request_duration_seconds) to Go API. Expose /metrics endpoint. Query with PromQL. Run Grafana with Prometheus data source |
| 219 | 3.5h | RED metrics: Rate (requests/sec), Errors (error rate), Duration (p95/p99 latency). Implement for HTTP and gRPC endpoints. USE metrics: Utilization, Saturation (queue depth), Errors. For services: CPU, memory, goroutines, GC. | Add RED metrics to food delivery services. Add USE metrics (CPU, memory, goroutines). Expose via /metrics. Verify in Prometheus |
| 220 | 3.5h | Grafana dashboards: Data sources. Panels (time series, stat, gauge, table, heatmap). Variables (dynamic filtering). Annotations. Dashboard provisioning (JSON, Git). | Create RED dashboard (Rate, Errors pct, Latency p50/p95/p99 per service). Create USE dashboard (CPU, memory, goroutines, GC pauses). Import as JSON into Git |
| 221 | 3h | OpenTelemetry: Traces (span, parent span, trace ID). Spans (attributes, events, status). Context propagation (HTTP headers, gRPC metadata). Go OTel SDK (go.opentelemetry.io/otel). Exporters (OTLP to Jaeger/Tempo). |
Add tracing to all food delivery services. Propagate trace context across gRPC calls + Kafka messages. View end-to-end trace in Jaeger. Identify slow spans |
| 222 | 3h | Structured logging: zerolog or zap. JSON format. Log levels. Contextual logging (request ID, user ID, trace ID). Sampling. Log aggregation (Loki, Elasticsearch). |
Replace log/slog with zerolog across all services. Add trace_id, request_id to every log line. Ship logs to Loki. Correlate logs + traces in Grafana (trace ID link) |
| 223 | 3h | Alerting: Prometheus alerting rules. Alertmanager (routing, grouping, inhibition, silencing). Alert thresholds: error rate > 1%, latency p95 > 500ms, CPU > 80%, disk > 85%. Notification channels (email, Slack, PagerDuty). | Write alerting rules. Configure Alertmanager. Test alerts (trigger high error rate). Set up Slack notification. Create runbook for each alert |
| 224 | 3h | SLOs & Error Budgets: SLI (Service Level Indicator), SLO (Service Level Objective), SLA. Choosing SLOs (99.9% availability, p95 latency < 200ms). Error budget calculation. Burn rate alerts. | Define SLOs for Order service (99.9% availability, p95 < 200ms). Calculate error budget. Set multi-window burn rate alerts. Document SLOs |
🔹 GitOps & Advanced Deployments (Days 225–232) — Total: ~25 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 225 | 3.5h | GitOps principles: Git as single source of truth. Declarative configuration. Automated reconciliation. ArgoCD: Applications, sync policies (auto-sync, prune, self-heal). argocd CLI and web UI. |
Install ArgoCD on K8s. Create Application for Go API (point to your GitHub repo + path). Configure auto-sync. Push a change → observe auto-deploy |
| 226 | 3.5h | Helm: Charts (Chart.yaml, values.yaml, templates/). Templating (Go templates). Built-in objects (.Release, .Values, .Chart, .Files). Named templates. Dependency management (Chart.yaml dependencies). |
Convert K8s manifests to Helm chart. Parameterize: image tag, replica count, resource limits, env vars. Test with helm template and helm install --dry-run |
| 227 | 3h | Helm advanced: Hooks (pre-install, post-upgrade). Tests (helm test). Rollback (helm rollback). Chart repositories (OCI, Chart Museum). Library charts. |
Add Helm hooks for DB migration. Write Helm tests. Push chart to OCI registry (ghcr.io). Test upgrade and rollback |
| 228 | 3h | Canary deployments: weighted routing (nginx-ingress canary annotations, Istio VirtualService). Gradual traffic shift (10% → 25% → 50% → 100%). Metrics-based promotion. Automatic rollback on error spike. | Implement canary with nginx-ingress canary annotations. Deploy v2, route 10% traffic. Monitor error rate → if OK, increase to 50% → 100%. Automate with ArgoCD Rollouts |
| 229 | 3h | Blue-Green deployments: Two identical environments (blue=current, green=new). Instant switch via Service selector. Smoketest green before switch. Rollback = switch back. | Set up blue-green with 2 Deployments + Service selector switch. Deploy to green → smoketest → switch Service → delete blue. Rollback test |
| 230 | 3h | Feature flags: LaunchDarkly, Unleash, or custom (Redis/DB-based). Percentage rollouts. Kill switches. A/B testing support. Feature flag lifecycle (create → rollout → cleanup). | Integrate a feature flag library. Add "premium_delivery" flag. Gradual rollout (0% → 10% → 50% → 100%). Toggle via dashboard. Clean up flag after full rollout |
| 231 | 3h | Secrets management: Kubernetes Secrets limitations (base64, not encrypted). Sealed Secrets (encrypted, safe in Git). HashiCorp Vault (dynamic secrets, encryption as a service). External Secrets Operator (sync from AWS/GCP/Azure secrets manager). | Set up Sealed Secrets. Encrypt sensitive values, commit to Git. ArgoCD syncs sealed secret → controller decrypts → creates K8s Secret. Alternative: Vault with dynamic DB credentials |
| 232 | 3h | Deployment strategies review: canary vs blue-green vs rolling. When to use each. Deployment checklist (backup, rollback plan, monitoring, communication). Chaos engineering intro (Chaos Mesh, Litmus). | Write deployment checklist. Run game day: deploy a change, "something goes wrong" → detect via monitoring → rollback. Test chaos experiment (kill a random pod) |
🔹 🏗️ Capstone: Production-Ready Deployment Pipeline (Days 233–240) — Total: ~27 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 233 | 3.5h | CI/CD pipeline: GitHub Actions builds + tests → push Docker image → update image tag in GitOps repo → ArgoCD detects change → syncs to K8s. End-to-end automation. | Build full CI/CD pipeline for food delivery app. Trigger: push to main. Build all services. Push images. Update Helm values in git. Verify ArgoCD syncs |
| 234 | 3.5h | Helm chart for food delivery: Create umbrella chart (parent chart with subchart per service). Common values, service-specific overrides. Umbrella chart versioning. | Create umbrella Helm chart. Subchart for each service (Order, Payment, Restaurant, Delivery). Parameterize all configs. One helm install deploys everything |
| 235 | 3.5h | Observability stack: Prometheus operator. ServiceMonitor/PodMonitor for auto-discovery. Grafana dashboards (provisioned via ConfigMap). Loki + Promtail for logs. Jaeger/Tempo for traces. | Deploy full observability stack on K8s. Auto-discovery of metrics endpoints. Provision dashboards from Git. Log aggregation working. Distributed tracing across services |
| 236 | 3.5h | Production hardening: PodDisruptionBudget (minAvailable). Pod anti-affinity (spread across nodes). Network policies. Resource quotas. Pod security standards. RunAsNonRoot. | Add PDB for Order service (minAvailable=2). Add pod anti-affinity (prefer different nodes). Add network policies (only Kafka/DB/Redis allowed). Apply pod security context |
| 237 | 3h | Canary deployment for Order service: Argo Rollouts. Canary with 10% → analysis (Prometheus metrics) → promote or rollback. | Set up Argo Rollouts for Order service. Canary deploy v1.1. 10% traffic for 5 min. Auto-promote if error rate < 0.1%. Auto-rollback if error rate > 1% |
| 238 | 3.5h | Load testing in production-like environment: k6 scripts for realistic workflows (create order → track → complete). Ramp-up load. Observe scaling, alerting. | Write k6 test scenarios. Run with 100/500/1000 concurrent users. Observe HPA, alerts, dashboards. Find breaking point (max RPS before latency spikes) |
| 239 | 3.5h | Runbook & documentation: Alert response procedures. Common failure scenarios and fixes. Architecture diagram (C4 model). API documentation. Deployment guide. Incident postmortem template. | Write runbook with 10+ scenarios. Draw C4 diagram (Context, Container, Component). Write deployment guide. Run a mock incident, write postmortem |
| 240 | 3h | Final review: Review all services against production readiness checklist. Security audit. Cost optimization. Document learnings from Months 5-8. | Run security scan (trivy, govulncheck). Review cloud costs. Write "Lessons Learned" blog post. Tag final release |
✅ Month 8 Checkpoint — INTERMEDIATE LEVEL COMPLETE: You can design, build, deploy, monitor, and operate production Go microservices at scale. You operate at a mid-to-senior backend engineer level.
Goal: Master system design, distributed systems theory, AI integration, and ace the interview. You're targeting top-tier companies (ByteDance, Tencent, global tech).
| Days | Topic | What to Learn | Hands-on |
|---|---|---|---|
| 241–248 | Distributed Systems Theory | CAP theorem (real tradeoffs, not just definition). Consistency models (strong, eventual, causal, read-your-writes). PACELC. Network partitions & failure modes. Time in distributed systems (Lamport clocks, vector clocks). | Analyze real failure scenarios. Write a paper summary of "Dynamo" (Amazon) and "Spanner" (Google). Explain CAP tradeoffs for each |
| 249–256 | Core System Design Patterns | Consistent hashing (with virtual nodes). Rate limiting (token bucket, sliding window log, leaky bucket). Idempotency keys. Backpressure. Circuit breaker. Bulkhead. Service discovery. | Implement each pattern in Go: consistent hash ring, token bucket rate limiter, circuit breaker wrapper |
| 257–265 | System Design Practice (Whiteboard) | Design 6 classic systems ON PAPER/whiteboard: ① URL shortener (TinyURL) ② Chat system (WhatsApp/WeChat) ③ News feed (Twitter/微博) ④ Ride matching (Uber/Didi) ⑤ Distributed KV store (Redis-like) ⑥ Video streaming (YouTube/抖音) | Draw architecture diagrams. Calculate capacity (QPS, storage, bandwidth). Discuss tradeoffs. Record yourself explaining — review. |
| 266–270 | Advanced Architecture Patterns | Saga (choreography vs orchestration). TCC (Try-Confirm-Cancel). 2PC. CQRS + Event Sourcing deep dive. Materialized views. Read models. | Implement Saga orchestration for an order flow. Compare with event choreography. Document tradeoffs |
🔹 Distributed Systems Theory (Days 241–248) — Total: ~25 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 241 | 3h | CAP theorem deep: Consistency (linearizability), Availability (every request gets response), Partition Tolerance. The real choice: CP vs AP during a partition. PACELC: if Partition → choose A or C, Else → choose Latency or Consistency. | Analyze 5 systems (etcd=CP, Cassandra=AP, Spanner=CP, DynamoDB=AP, Redis Cluster=CP). Justify classification, explain tradeoffs |
| 242 | 3.5h | Consistency models: Strong/linearizable, Sequential, Causal (Lamport's happens-before), Eventual. Read-your-writes, monotonic reads, consistent prefix. | Implement eventual consistency demo (2 replicas, async sync). Implement strong consistency (single leader). Measure staleness window |
| 243 | 3h | Network partitions & failure: Crash-stop vs crash-recovery vs Byzantine. Two Generals' Problem, FLP impossibility. Split-brain. Fencing tokens to prevent stale writes. | Simulate network partition (iptables drop). Observe etcd (CP) vs Cassandra (AP) behavior. Implement fencing token to prevent split-brain writes |
| 244 | 3.5h | Time in distributed systems: NTP, clock skew, monotonic clocks. Lamport logical clocks (counter per process). Vector clocks (detect causality). Hybrid Logical Clocks (HLC). TrueTime (Google Spanner). | Implement Lamport clock in Go. Implement vector clock with merge. Detect concurrent updates. Read about TrueTime — how Spanner achieves external consistency |
| 245 | 3h | Distributed systems papers: Read "Dynamo" (Amazon) — eventual consistency, consistent hashing, gossip, vector clocks. Read "Spanner" (Google) — TrueTime, external consistency. Write 1-page summaries. | Write summaries. Answer: "Why did Dynamo choose AP and Spanner choose CP?" Present findings to a peer |
| 246 | 3h | Consensus fundamentals: Properties (termination, agreement, validity). Paxos basics (proposer, acceptor, learner). Raft as "Paxos but understandable". | Whiteboard: explain consensus to a junior engineer. Write simplified proposer-acceptor simulation in Go. Observe when consensus succeeds/fails |
| 247 | 3h | Gossip protocols: Epidemic dissemination. Push, pull, push-pull. SWIM protocol (failure detection + membership). Use cases: Cassandra, Consul, Redis Cluster. | Implement gossip in Go (N nodes, periodic random gossip, converge). Measure rounds to convergence. Use for service discovery simulation |
| 248 | 3h | Review & connections: Map all concepts (CAP → consistency → time → consensus → gossip). Trace through a real scenario: "How does a leaderless AP system handle writes during a partition?" | Build concept map. Explain (record video): partition → gossip → vector clocks → read repair → convergence. Review all Month 9 theory |
🔹 Core System Design Patterns (Days 249–256) — Total: ~25 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 249 | 3.5h | Consistent hashing: Ring (0 to 2^64-1). Node addition remaps K/N keys. Virtual nodes for even distribution. Data replication (node + N successors). | Implement consistent hash ring in Go with virtual nodes. Test: 10000 keys, add 1 node → remap ~909 keys. Compare with naive modulo |
| 250 | 3.5h | Rate limiting: Token bucket (steady rate + burst), leaky bucket (constant outflow), fixed window, sliding window log, sliding window counter. Compare accuracy vs memory vs speed. | Implement all 4 algorithms in Go. Benchmark precision and memory. Build token bucket middleware. Test burst above limit, sustained at limit |
| 251 | 3h | Idempotency: Why critical (network retries, at-least-once). Idempotency keys (client-generated UUID). Server checks Redis → cached response for 24h. Stripe-style idempotency. | Implement idempotent payment API. Client sends Idempotency-Key. Server checks Redis. Test concurrent duplicate requests → same response returned |
| 252 | 3h | Backpressure & Load Shedding: Consumer slower than producer → backpressure propagates. Queue-full: block, reject, drop. Load shedding (drop low-priority under overload). Rate limiting at boundary. | Implement pipeline: producer → channel (buffer 100) → consumer. Full → producer blocks. Add load shedding (accept only if queue < 80%). Test recovery |
| 253 | 3h | Circuit breaker: States (Closed → Open → Half-Open). Failure threshold (5 failures in 10s). Timeout (30s → half-open). Success → Close, Failure → back to Open. | Implement circuit breaker in Go. Wrap HTTP client. Test: downstream fails → circuit opens → fast-fail → downstream recovers → half-open probe → close |
| 254 | 3h | Bulkhead: Isolate failures (ship compartments). Separate goroutine pools, connection pools per downstream. Prevents one bad service from starving others. | Implement bulkhead: 2 downstream services, each with dedicated goroutine pool (100). Saturate pool A → service B still responsive. Compare with shared pool |
| 255 | 3h | Service discovery: Client-side (client queries registry — etcd, Consul). Server-side (LB queries registry — K8s Service, AWS ELB). DNS-based (SRV records). Health checking (passive vs active). | Implement service discovery with etcd: register with lease + TTL. Client watches prefix. Test: instance dies → lease expires → client updates endpoints |
| 256 | 3h | Retry patterns: Exponential backoff (base × 2^attempt). Jitter (full, equal, decorrelated). Max retries. Retryable vs non-retryable errors. Retry budgets. | Implement retry library in Go: backoff + full jitter + max retries. Test with flaky downstream (50% failure). Compare jitter vs no jitter (thundering herd) |
🔹 System Design Practice — Whiteboard (Days 257–265) — Total: ~28 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 257 | 3h | Interview framework: ① Clarify requirements (5 min). ② Capacity estimation (QPS, storage, 10 min). ③ High-level design (boxes + arrows, 15 min). ④ Deep dive 2-3 components (10 min). ⑤ Bottlenecks & tradeoffs (5 min). | Practice framework on TinyURL. Record yourself. Self-review: clarify? estimate? tradeoffs? |
| 258 | 3.5h | Design ① URL Shortener: base62 generation, collision handling, redirect (301 vs 302), analytics. 100M writes/month, 10:1 read:write. 5yr: 3TB storage. | Whiteboard. Calculate QPS (write 40, read 400). Deep dive: hash, DB schema, caching (Redis for hot URLs). Write POC in Go |
| 259 | 3.5h | Design ② Chat System (WhatsApp/WeChat): 1-on-1 + group chat, online presence, message history. 1B users, 50M msgs/sec. Deep dive: WebSocket, message storage (partition by chat_id), online status. | Whiteboard. Calculate: 50M/s × 100B × 86400 = 432TB/day → optimization strategies. Implement WebSocket chat POC in Go |
| 260 | 3h | Design ③ News Feed (Twitter/微博): post tweet, timeline, follow/unfollow. 500M tweets/day. Fan-out on write (normal users) vs fan-out on read (celebrities >1M followers). Deep dive: timeline service, Redis list, caching. | Whiteboard. Discuss celebrity optimization. Implement timeline POC in Go with hybrid fan-out |
| 261 | 3.5h | Design ④ Ride Matching (Uber/Didi): rider requests → match nearest driver → ETA → pricing. 10M rides/day. Deep dive: geospatial (Redis GEO, Google S2, Uber H3), real-time location, surge pricing. | Whiteboard. POC: Redis GEOADD drivers, GEORADIUS nearest 5. Simulate 1000 moving drivers, match to riders |
| 262 | 3.5h | Design ⑤ Distributed KV Store (Redis-like): GET/SET/DEL + TTL, in-memory, high throughput. Deep dive: hash table, persistence (RDB/AOF), replication, sharding (consistent hashing), eviction (LRU). | Whiteboard. Implement mini KV in Go: in-memory map + RWMutex, HTTP API, TTL goroutine. Benchmark: 100K+ QPS |
| 263 | 3h | Design ⑥ Video Streaming (YouTube/抖音): upload → transcoding → CDN → playback. 500 hrs uploaded/min. Deep dive: video processing pipeline, adaptive bitrate HLS/DASH, CDN, storage tiering. | Whiteboard. Calculate: 500hr/min × 3 qualities × 1GB/hr = 1.5TB/min. Discuss CDN cost optimization. Write HLS manifest generator |
| 264 | 3.5h | Cross-system patterns: What repeats? (caching, sharding, async processing, CDN, read replicas). Build "System Design Pattern Library". Common bottlenecks and solutions. | Build 2-page cheatsheet: pattern → when → alternatives → real example. Internalize for interviews |
| 265 | 3h | Rapid-fire practice: 3 mini-designs (30 min each). Notification System, Search Autocomplete, Web Crawler. Focus: speed, confidence, tradeoff communication. | Complete 3 mini-designs. Record. Review: what skipped? what assumptions? Improve |
🔹 Advanced Architecture Patterns (Days 266–270) — Total: ~16 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 266 | 3.5h | Saga: Long-running transaction across services. Choreography (events, decentralized) vs Orchestration (Saga Execution Coordinator, explicit). Compensating transactions. Failure recovery (backward = compensate, forward = retry). | Implement Saga orchestration in Go: OrderSaga coordinates Order→Payment→Inventory→Shipping. Each has compensate(). Test Payment failure → rollback |
| 267 | 3.5h | TCC (Try-Confirm-Cancel): Try (reserve, no side effects). Confirm (finalize, must never fail). Cancel (release, must never fail). Compare with Saga. Use cases: bank transfers, inventory. | Implement TCC: Try(reserve stock), Confirm(deduct), Cancel(release). Timeout → auto Cancel. Handle confirm/cancel failure retries |
| 268 | 3h | 2PC (Two-Phase Commit): Coordinator + participants. Phase 1 (Prepare): all vote. Phase 2 (Commit/Abort): based on votes. Blocking nature (coordinator failure). XA transactions. Why NOT in microservices. | Implement simplified 2PC in Go. 3 participants. Test: participant fails at prepare → abort. Participant fails after voting yes → blocking. Discuss limitations |
| 269 | 3h | CQRS + Event Sourcing deep: Event versioning + upcasting. Snapshot strategies. Rebuilding projections. Handling eventual consistency in UI (stale reads, read-your-writes, optimistic update). | Evolve event schema v1→v2 with upcaster. Rebuild projection. Measure rebuild time. Design UI pattern for eventual consistency |
| 270 | 3h | Pattern comparison: Saga vs TCC vs 2PC vs Event Sourcing. Dimensions: consistency, latency, failure handling, complexity. Real examples: Uber (Saga), Alibaba (TCC), banks (2PC). Write decision guide. | Create flowchart: "Given requirements X, Y, Z → which pattern?" Test 5 scenarios. Publish as blog post |
✅ Month 9 Checkpoint: You can confidently whiteboard-design any system a senior interview throws at you. You think in tradeoffs, not just solutions.
| Days | Topic | What to Learn | Hands-on |
|---|---|---|---|
| 271–278 | Raft Consensus Deep Dive | Leader election, log replication, safety. Raft in etcd (watch, lease, MVCC, compaction). MIT 6.824 labs if ambitious. | Implement a simplified Raft in Go (or study etcd/raft source). Use etcd for service discovery + leader election demo |
| 279–286 | Service Mesh & API Gateway | Istio (sidecar proxy, traffic management, fault injection). Envoy. API Gateway patterns (Kong, APISIX). Rate limiting at gateway. Authentication at edge. | Deploy Istio on your K8s cluster. Configure traffic splitting (90/10 canary). Circuit breaker via DestinationRule. Set up APISIX/Kong |
| 287–294 | Database at Massive Scale | Sharding strategies (key-based, range-based, directory-based). Resharding. Cross-shard queries. Distributed transactions. CDC (Change Data Capture) with Debezium. Materialized views at scale. | Design a sharded database for 1 billion users. Write sharding logic in Go. Simulate cross-shard queries. Set up CDC pipeline |
| 295–300 | 🏗️ CAPSTONE PROJECT | Distributed system design doc | Design Document: Choose a real system (e.g., "Design TikTok's Video Upload Pipeline"). Write a 10-page design doc. Cover: requirements, capacity estimation, high-level design, component deep-dives, failure modes, monitoring plan, migration strategy. Peer-review with a friend |
🔹 Raft Consensus Deep Dive (Days 271–278) — Total: ~25 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 271 | 3h | Raft overview: 3 roles (Leader, Follower, Candidate). 2 RPCs (RequestVote, AppendEntries). Terms (monotonically increasing). Leader election (timeout → candidate → votes → leader). | Read Raft paper (sec 1-5). Watch Raft visualization. Whiteboard: explain leader election. Simulate with goroutines (3 nodes) |
| 272 | 3.5h | Log replication: Leader receives command → appends log → AppendEntries to followers → majority acknowledged → commit → apply. Log matching property. Leader completeness guarantee. | Implement log replication simulation. Leader logs entry, replicates. Observe commit on majority. Handle follower lagging (catch-up via AppendEntries) |
| 273 | 3.5h | Safety: Election restriction (candidate must have up-to-date log). Commitment rules (can't commit entries from previous terms directly). Leader append-only. Cluster membership changes (joint consensus). | Read Raft paper (safety section). Explain: "Why can't a leader commit entries from older terms?" Simulate config change with joint consensus |
| 274 | 3h | etcd internals: Raft + boltdb. MVCC (multi-version concurrency control). Watches (long polling). Leases (TTL + keepalive). Transactions (compare-and-swap). Compaction. | Set up etcd cluster (3 nodes). Explore: put/get/watch/lease/transaction. Watch key changes in real-time |
| 275 | 3h | etcd in Go: clientv3. Put/Get/Delete/Watch. Lease grant + keepalive. Transactions. Concurrency: distributed lock, leader election via etcd. | Implement leader election with etcd. 3 Go instances → one leader. Kill leader → another takes over. Implement distributed mutex |
| 276 | 3h | etcd operations: Backup/restore. Defragmentation. Monitoring (metrics, alarms). Cluster tuning (heartbeat, election timeout). Disaster recovery. | Take etcd snapshot. Simulate data loss → restore. Monitor with Prometheus. Tune election timeout for faster failover |
| 277 | 3h | MIT 6.824 Lab 2 (Raft): Attempt Lab 2A (leader election). Even partial completion deepens understanding. Test edge cases (split votes, network delays). | Set up MIT 6.824 framework. Implement leader election. Run tests. Debug edge cases. Document learnings |
| 278 | 3h | Consensus in production: etcd at scale (K8s stores all state). Limits (3-7 nodes recommended, small data). Alternatives: ZooKeeper (ZAB). Write Raft vs Paxos comparison. | Deploy Go app using etcd for config + service discovery + leader election. Test failover end-to-end. Write Raft vs Paxos comparison |
🔹 Service Mesh & API Gateway (Days 279–286) — Total: ~25 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 279 | 3h | Service mesh concept: Sidecar proxy (Envoy) per pod. Control plane (Istio). Features: traffic management, mTLS, observability. Why? (offload cross-cutting concerns from app code). | Install Istio. Enable sidecar injection. Deploy 2 services in mesh. Verify Envoy sidecars running |
| 280 | 3.5h | Traffic management: VirtualService (routing rules). DestinationRule (subsets, LB, connection pool). Traffic splitting (weighted). Fault injection (delay, abort). Timeouts and retries. | Configure VirtualService: v1 90% + v2 10%. Add 2s timeout. Inject 500ms delay on 10%. Circuit breaker via DestinationRule |
| 281 | 3h | Security: mTLS auto-provisioned by Istio. AuthorizationPolicy (allow/deny between services). PeerAuthentication (strict vs permissive). RequestAuthentication (JWT at proxy). | Enforce strict mTLS cluster-wide. AuthorizationPolicy: Order only called by API Gateway. Add JWT validation at ingress |
| 282 | 3.5h | Observability with Istio: Auto metrics (request count, duration). Auto tracing (Envoy propagates headers). Kiali (service graph, traffic, errors). | Open Kiali → explore topology. Generate traffic → observe. Use Jaeger → automatic spans from Envoy. Check Grafana dashboards |
| 283 | 3h | API Gateway (APISIX/Kong): Routes, upstreams, services. Plugins: rate limiting, auth (JWT, key-auth), CORS, logging. North-south traffic control. | Install APISIX. Create route to Go service. Add rate limiting (100 req/min). Add JWT auth. Test rate limit + auth rejection |
| 284 | 3h | Gateway vs Mesh: API Gateway = north-south (external ↔ internal). Service Mesh = east-west (service ↔ service). Together: APISIX at edge + Istio inside. Document responsibilities at each layer. | Design architecture: External → APISIX (auth, rate limit) → K8s Ingress → Istio gateway → VirtualService → Service |
| 285 | 3h | Envoy deep: Bootstrap config, listeners, clusters, routes. xDS (dynamic config from Istio). Filters. Access logs. Admin interface. | Explore Envoy admin (/config_dump, /stats). Read access logs. Understand Istio→Envoy xDS flow. Write standalone Envoy config |
| 286 | 3h | Mesh patterns review: Retry, timeout, circuit breaking, canary, dark launch (mirror traffic). "When would you NOT use a service mesh?" (simplicity, overhead, debugging complexity). | Implement each pattern via Istio config. Write cheatsheet. Discuss anti-patterns and when mesh adds unnecessary complexity |
🔹 Database at Massive Scale (Days 287–294) — Total: ~25 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 287 | 3h | Sharding strategies: Key-based (hash % N → simple but resharding remaps everything). Range-based (A-M, N-Z → possible hotspots). Directory-based (lookup table → flexible but extra hop). Consistent hashing for resharding. | Implement 3 strategies in Go. Benchmark: add shard → key redistribution %. Test hotspot scenario (all hot keys → same range shard) |
| 288 | 3.5h | Resharding: Moving data between shards live. Steps: add new shard → split key range → migrate data (copy + catch-up writes) → update routing → remove old range. Tools: Vitess, Citus. | Implement live resharding simulation: 2→3 shards. Copy data while accepting writes. Switch routing atomically. Verify no data loss |
| 289 | 3.5h | Cross-shard queries: Scatter-gather (query all shards → merge). Distributed JOINs. Aggregations. Secondary indexes across shards (global index table). Denormalization for performance. | Design cross-shard query engine. Scatter-Gather for COUNT(*). Distributed JOIN. Measure latency vs single-shard |
| 290 | 3h | Distributed transactions: 2PC across shards. Saga as alternative. Best practice: design sharding key so most transactions are single-shard. Denormalize reference data. | Implement 2PC across 3 shards. Test: insert (shard A) + update (shard B) atomically. Handle coordinator failure |
| 291 | 3h | CDC (Change Data Capture): Capture DB changes as event stream. PostgreSQL logical replication + pgoutput. Debezium for auto-CDC. Use cases: cache invalidation, search sync, data warehouse ETL. | Set up PostgreSQL logical replication. Go consumer reads WAL changes via replication slot. Publish to Kafka. Sync to in-memory search index |
| 292 | 3h | Materialized views at scale: Pre-computed results. Full vs incremental refresh. Use cases: dashboards, complex aggregations. PostgreSQL: REFRESH MATERIALIZED VIEW CONCURRENTLY. |
Create materialized views for analytics (daily sales, hourly active users). Write refresh job in Go. Compare query time: raw vs materialized |
| 293 | 3h | Read/Write splitting at scale: Primary for writes, replicas for reads. Lag handling (read-after-write: force primary for N seconds). Lag monitoring. Load balancing across replicas. | Implement read/write split with lag handling. After write → force primary reads 2 sec. Monitor lag → avoid stale replicas |
| 294 | 3h | Big picture: Combine sharding + replication + CDC + caching. Design DB architecture for 1B users. Write decision document: sharding key, replication topology, CDC, cache, backup. | Write architecture document. Estimate costs. Identify SPOFs. Present design (record 5-minute pitch) |
🔹 🏗️ Capstone: System Design Document (Days 295–300) — Total: ~20 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 295 | 3.5h | Choose system + requirements: "Design TikTok's Video Upload Pipeline". Define: functional requirements, non-functional (availability, latency, consistency), scale (1B DAU, 10M uploads/day). | Write requirements section. Define out of scope. Document assumptions |
| 296 | 3.5h | Capacity estimation: Storage (10M × 100MB × 3 qualities × 365 = 1.1EB/year). Bandwidth (1B views × 10MB × 10 videos/day). QPS (upload: 116, feed: 116K). Data model design. | Calculate all capacities. Design data model. Draw high-level architecture (upload → transcoding → CDN → playback → recommendation) |
| 297 | 3.5h | Deep dives: ① Upload pipeline (chunked, preprocessing, transcoding queue). ② Transcoding (worker pool, HLS/DASH). ③ CDN (edge caching, eviction). ④ Recommendation (offline training + online serving). | Write 2-3 pages per component. Include: diagram, API, data flow, failure modes, scaling strategy |
| 298 | 3.5h | Failure modes & resilience: 15+ scenarios. For each: probability, impact, detection, mitigation. Monitoring & alerting plan with SLO-based alerts. | List all failure scenarios. Design dashboard with key SLOs. Write runbook entries for top 5 incidents |
| 299 | 3h | Peer review: Share with friend/mentor. Key questions: "Simplest version?", "What if only 1 engineer?", "Most likely to break?" Revise based on feedback. | Schedule review. Collect feedback. Add "Alternatives Considered" section |
| 300 | 3h | Polish: Finalize 10+ page document. Architecture diagrams (Mermaid/draw.io). Executive summary (1 page). Presentation (5 slides). Publish — this alone impresses ByteDance/Tencent interviewers. | Polish and publish on blog/掘金. This is your portfolio centerpiece! Tag final version |
✅ Month 10 Checkpoint: You understand how consensus, sharding, and service meshes work. You can design systems that handle millions of QPS.
| Days | Topic | What to Learn | Hands-on |
|---|---|---|---|
| 301–308 | Python for Go Devs | Python syntax (focus on differences from Go). Virtual environments (venv/poetry). FastAPI (async Python). Pydantic models. NumPy/Pandas fundamentals. |
Build a FastAPI microservice. Integrate with Go backend via gRPC (protobuf shared). Data processing with Pandas |
| 309–313 | LLM API Integration | OpenAI API (chat completions, function calling, streaming). Anthropic Claude API. Token management. Prompt engineering (system prompts, few-shot, chain-of-thought). Cost optimization. | Build AI code review bot. Function calling with Go backend. Streaming responses via gRPC streaming |
| 314–318 | RAG (Retrieval-Augmented Generation) | Embeddings (text-embedding-3, multilingual models). Vector databases (pgvector, Milvus, Pinecone). Chunking strategies. Semantic search. Hybrid search (keyword + semantic). Re-ranking. | Build RAG system: Ingest docs → chunk → embed → store pgvector → query → retrieve → augment → generate. Evaluate quality with RAGAS |
| 319–324 | AI Backend Patterns | AI service architecture (Go orchestration + Python inference). Model serving (vLLM, Ollama). Prompt caching. Rate limiting for LLM APIs. Observability for AI (token usage, latency, quality). Guardrails (content filtering, PII detection). | Productionize RAG system. Rate limiting, caching, monitoring. LLM fallback (OpenAI → Claude). Content safety filter |
| 325–330 | 🏗️ CAPSTONE PROJECT | AI-powered backend | Intelligent Document Q&A System: Upload PDFs → Go parses + chunks → Python embeds → pgvector stores → user asks question → semantic search → RAG → LLM answers. gRPC Go↔Python. Full observability. Deployed on K8s |
🔹 Python for Go Devs (Days 301–308) — Total: ~25 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 301 | 3h | Python setup: pyenv, venv, pip/poetry. Dynamic typing, indentation scoping, None. Types: int, float, str, bool, list, dict, tuple, set. f-strings, comprehensions. | Install Python 3.12. Create venv. Write: variable decl, type conversions, list/dict comprehensions. Compare with Go equivalents |
| 302 | 3h | Control flow & functions: if/elif/else, for/while, def, default args, *args, **kwargs. List comprehensions, lambda. | Write FizzBuzz, Fibonacci, word counter. Map/filter/reduce with comprehensions. Lambda with sorted(key=...) |
| 303 | 3.5h | OOP in Python: classes, init, self. Inheritance, multiple inheritance. Dunder methods. Properties, dataclasses. Exceptions: try/except/finally. | Build Shape hierarchy. Implement area(), perimeter(). Use dataclasses. Custom exceptions. Compare with Go interfaces |
| 304 | 3.5h | Async Python: async/await, asyncio. Coroutines vs goroutines (single-threaded cooperative vs multi-threaded preemptive). GIL and when async helps. | Write async HTTP server with aiohttp. Compare with Go net/http. Async file reader. Understand async vs goroutine differences |
| 305 | 3h | FastAPI: Path operations, query params, Pydantic models. Dependency injection. Background tasks. Auto OpenAPI/Swagger. | Build FastAPI CRUD service. Add Pydantic models. Swagger docs. Background task for notifications |
| 306 | 3h | Pydantic v2: Data validation with type hints. Models, fields, validators. JSON Schema. Settings management. Rust-powered performance. | Define complex Pydantic models (nested, discriminated unions). Custom validators. Config from env. Benchmark vs Go structs |
| 307 | 3h | NumPy + Pandas: ndarray, vectorized ops. DataFrame (read CSV/JSON, filter, groupby, merge). Analysis pipeline: load → clean → transform → analyze. | Load Kaggle dataset. Clean missing values. Analyze: groupby, aggregations. Export results. Appreciate Python's data ecosystem |
| 308 | 3h | Go + Python integration: gRPC with shared proto. Python gRPC server (grpcio). Go client calls Python. Serialization perf. REST fallback. | Generate Python gRPC stubs. Implement Python text-analysis service. Go calls Python via gRPC. Measure latency. Docker Compose (Go + Python) |
🔹 LLM API Integration (Days 309–313) — Total: ~16 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 309 | 3h | OpenAI API: Authentication. Chat Completions: system/user/assistant roles. Models (gpt-4o, gpt-4o-mini). temperature, max_tokens. Error handling (rate limits, content filter). | Sign up for OpenAI. First API call from curl, then Go client. Handle errors. Generate poem, code snippet, summary |
| 310 | 3.5h | Function calling: Define functions in schema. LLM decides when to call. Pattern: query → LLM returns function_call → Go executes → send result → LLM generates response. | Build weather bot: get_weather(city, date). LLM extracts city, calls function, returns weather. Extend: get_stock_price(), search(), send_email() |
| 311 | 3.5h | Streaming: SSE (Server-Sent Events). OpenAI stream=True. Tokens as generated. Go: read SSE, forward via gRPC streaming. Perceived speed boost for long responses. | Implement streaming chat: Go POST → OpenAI streaming → stream tokens to client via gRPC/SSE. Demo in browser |
| 312 | 3h | Prompt engineering: System prompts (behavior, constraints). Few-shot (examples). Chain-of-thought (step-by-step). Structured output (JSON). Prompt templates + versioning. | Write system prompts for: coding assistant, customer support, doc writer. Test same query across prompts. Version prompts in Git |
| 313 | 3h | Cost optimization: Token counting (tiktoken). Model selection (gpt-4o-mini for simple, gpt-4o for complex). Caching common responses. Budget alerts. Claude comparison. | Add token counting. Log usage/request. Cache identical queries. Cost dashboard. Compare OpenAI vs Claude: cost/quality analysis |
🔹 RAG — Retrieval-Augmented Generation (Days 314–318) — Total: ~16 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 314 | 3.5h | Embeddings: text → vector (1536 dims). OpenAI text-embedding-3. Cosine similarity. pgvector: CREATE EXTENSION, embedding <=> query_embedding. IVFFlat/HNSW indexing. | Set up pgvector. Embed 100 docs. Store. Query nearest 5. Compare with/without index. Measure recall |
| 315 | 3.5h | Chunking: Fixed-size (500 chars, 100 overlap). Sentence/paragraph-based. Semantic (split at topic boundaries). Recursive. Impact on retrieval quality. | Implement chunking strategies in Python. Chunk document 5 ways. Test which gives best retrieval for factual vs summarization Q's |
| 316 | 3h | RAG pipeline: Query → embed → vector search (top K) → augment prompt → LLM generates with citations. Basic template: "Use context to answer: ... | |
| Context: | |||
| {chunks} |
Question: {query}" | Build end-to-end RAG in Python. Load PDF → chunk → embed → pgvector. Query → search → augment → generate. Test factual vs opinion questions | | 317 | 3h | Advanced RAG: Hybrid search (BM25 keyword + semantic). Re-ranking (cross-encoder). Multi-query (sub-questions). HyDE (hypothetical answer embedding). | Implement hybrid search (pgvector + PostgreSQL FTS). Add re-rank. Compare: basic vs hybrid vs reranked. Evaluate with RAGAS | | 318 | 3h | Evaluation: RAGAS (faithfulness, relevancy, context precision/recall). Build eval dataset (20 Q&A pairs + relevant chunks). LLM-as-judge. Iterate on chunk size, retrieval K, prompt. | Build eval set. Score pipeline. Document what improved scores most. Create eval report |
🔹 AI Backend Patterns (Days 319–324) — Total: ~19 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 319 | 3h | AI service architecture: Go (orchestration: HTTP, auth, rate limit, caching, routing) + Python (AI: embeddings, LLM, inference). gRPC communication. Why split? (Python AI ecosystem, Go infrastructure). | Design architecture: Go API Gateway → gRPC → Python AI. Proto for AI service interface. Go handles auth+caching+rate limiting |
| 320 | 3.5h | Model serving: OpenAI (managed, pay-per-token). vLLM (high-throughput self-hosted). Ollama (local, simple). When to self-host? (data privacy, cost at scale, latency). Tradeoffs. | Run Ollama with llama3/qwen. Go client calls Ollama (OpenAI-compatible API). Compare latency/cost/quality with OpenAI |
| 321 | 3h | Prompt caching: Exact match (hash query → Redis). Semantic cache (embed query → cosine similarity with cached embeddings). Cache invalidation on data change. | Implement 2-tier cache: Exact + Semantic. Measure hit rate and cost savings. Set cache TTL + invalidation on document update |
| 322 | 3.5h | Rate limiting for LLM: Token-based (not request-based). Cost quotas per user/day. Tiered access (free 1K/day, premium 100K). Queue for expensive requests. | Implement token-aware rate limiter. User quota: 10K tokens/day. Exhausted → 429. Premium queue. Monitor per-user usage |
| 323 | 3h | AI observability: Token usage (input+output). Latency (first token, total). Cost/request. Generation quality (user feedback). Error tracking. | Add AI metrics to Prometheus. Dashboard: tokens/sec, cost/hour, latency p95, error rate. User feedback (thumbs up/down) → quality tracking |
| 324 | 3h | Guardrails: Content filtering (moderation API). PII detection + redaction. Prompt injection prevention (system prompt hardening). Output validation (JSON schema, content policy). | Add moderation before LLM call. Redact PII from input. Harden system prompt. Validate structured output. Test with adversarial inputs |
🔹 🏗️ Capstone: Intelligent Document Q&A System (Days 325–330) — Total: ~20 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 325 | 3.5h | Architecture: Go (API gateway, upload, chunking, orchestration) + Python (embeddings, LLM). gRPC between them. pgvector for vector search. | Project setup (monorepo go/ + python/). Proto: Embed, GenerateAnswer, Search. Implement Go upload → Python embed → store pgvector |
| 326 | 3.5h | Core Q&A: Upload PDF → Go parses (or Python PyPDF2) → text extraction → chunking (Python) → embedding (OpenAI) → pgvector. Query → embed → search top 10 → augment → LLM generate with citations. | Implement full pipeline. Test with knowledge base (your Month 10 design doc). Ask: "What failure modes are discussed?" → cited answer |
| 327 | 3h | Advanced: Multi-doc support (upload multiple PDFs). Document management (list, delete). Conversation memory (last 5 exchanges). Source highlighting (which chunk answered). | Add multi-doc. Chat history in context. Highlight sources. Test with 10+ documents |
| 328 | 3.5h | Production: Auth (JWT, per-user isolation). Token-based rate limiting. Caching (semantic + exact). Monitoring (tokens, latency, errors). | Add JWT → users see only their docs. Rate limiting per user. Caching for common Q's. Prometheus + Grafana |
| 329 | 3.5h | Deployment: Docker Compose (Go + Python + pgvector). K8s manifests. CI/CD. Documentation (README, API docs via gRPC-gateway). | Dockerize everything. K8s manifests. CI/CD. Deploy to K8s. Write README with architecture diagram |
| 330 | 3h | Polish: E2E tests. Load test (100 QPS). RAGAS evaluation. Blog post: "How I Built an AI-Powered Document Q&A with Go + Python". | Run E2E tests. Load test. Evaluate quality. Publish blog. Tag release. This is your flagship AI project for interviews! |
✅ Month 11 Checkpoint: You can build AI-integrated backends — the #1 highest-growth skill right now. Go handles the infrastructure; Python handles AI. You bridge both worlds.
| Days | Topic | What to Learn | Hands-on |
|---|---|---|---|
| 331–340 | LeetCode Intensive | Target: 150–200 problems. Data structures: arrays, strings, hash maps, trees, graphs, heaps. Algorithms: binary search, two pointers, sliding window, BFS/DFS, DP (easy-medium), backtracking. Go-specific patterns. | 10 days × 10–15 problems/day. Start Easy → Medium. Focus Top 100 Liked / 热题100. Time yourself. Mock coding with a friend |
| 341–344 | Chinese Interview Prep (八股文) | Go 八股文: GMP, GC, escape analysis, channel, map, slice, interface, defer, context. CS fundamentals in Chinese: OS, network, DB. 面经 review (牛客网). | Practice answering GMP model in Chinese within 3 min. Record yourself. Review 10+ company-specific 面经 |
| 345–348 | System Design Mock Interviews | 10+ mock interviews. Design systems under 45 min. Common Chinese questions: design 抖音, 微信朋友圈, 秒杀系统 (flash sale). | Schedule mocks. Each: 5 min clarify → 35 min design → 5 min Q&A. Iterate on weak points |
| 349–356 | Resume, Portfolio & Open Source | Polish GitHub (READMEs, pinned repos). Write 2–3 technical blog posts (掘金/知乎/Medium). Contribute to 1 Go open-source project. Resume optimization (1 page, STAR, metrics). | Publish blog about AI project. Submit PR to CNCF project. Get resume reviewed by 3+ engineers |
| 357–365 | 🚀 APPLY & INTERVIEW | Target: Batch 1 (ByteDance, Tencent, Alibaba). Batch 2 (Meituan, Didi, Xiaohongshu). Batch 3 (Kuaishou, Bilibili, international). | Apply via 校招. Use BOSS直聘 + 牛客网内推. Track in spreadsheet. Iterate: interview → feedback → improve |
🔹 LeetCode Intensive (Days 331–340) — Total: ~50 hours (5 hrs/day)
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 331 | 5h | Arrays & Hashing: Two Sum, Contains Duplicate, Valid Anagram, Group Anagrams, Top K Frequent, Product Except Self, Valid Sudoku, Longest Consecutive. | Solve 8 problems in Go. Analyze time/space. Write edge cases. Target: 45 min/Medium |
| 332 | 5h | Two Pointers & Sliding Window: Valid Palindrome, 3Sum, Container With Most Water, Longest Substring Without Repeating, Longest Repeating with Replacement, Minimum Window Substring. | Solve 6 problems. Master sliding window template: for right < n { add; while invalid { remove; left++ }; update } |
| 333 | 5h | Stack & Binary Search: Valid Parentheses, Min Stack, Eval RPN, Daily Temperatures. Binary Search, Search Rotated Sorted, Find Min in Rotated, Median of Two Sorted. | Solve 8 problems. Binary search: mid := left+(right-left)/2. Go sort.Search for built-in |
| 334 | 5h | Linked List & Trees: Reverse LL, Merge Two, Reorder, Remove Nth, Detect Cycle. Invert Binary, Max Depth, Same Tree, Subtree, LCA, Level Order, Validate BST, Kth Smallest. | Solve 12 problems. Recursion on trees. Iterative traversal with stack. BFS vs DFS decision |
| 335 | 5h | Graphs & BFS/DFS: Number of Islands, Clone Graph, Course Schedule, Pacific Atlantic, Word Ladder. Matrix traversals. | Solve 6 problems. Adjacency list/matrix. BFS for shortest, DFS for connectivity. Cycle detection |
| 336 | 5h | Heap & Backtracking: Kth Largest, Top K Frequent (heap), Find Median from Data Stream, Task Scheduler. Subsets, Combination Sum, Permutations, Word Search, N-Queens. | Solve 8 problems. Go container/heap. Backtracking: func bt(path, opts) { if goal { save }; for opt in opts { choose; bt; unchoose } } |
| 337 | 5h | Dynamic Programming: Climbing Stairs, Coin Change, Longest Increasing, Longest Common Subseq, Word Break, House Robber, Unique Paths, Decode Ways. | Solve 8 problems. Recursion → memoization → tabulation. Overlapping subproblems + optimal substructure |
| 338 | 5h | Interval & Greedy: Merge Intervals, Insert Interval, Non-overlapping, Meeting Rooms. Jump Game, Gas Station, Maximum Subarray. | Solve 6 problems. Sort intervals by start. Greedy: local optimum → global optimum |
| 339 | 5h | Company-tagged: ByteDance Top 50, Tencent Top 50 on LeetCode/力扣. Focus medium. 30 min target per problem. Explain solution aloud in Chinese while coding. | Solve 10-15 company-tagged problems. Simulate real interview: explain, code, test |
| 340 | 5h | Mock coding interviews: 3 simulated (Pramp, interviewing.io, or friend). 45 min each. Go syntax quiz. Code under pressure. | Complete 3 mocks. Review feedback. Fix weak areas. Create Go patterns cheatsheet for interviews |
🔹 Chinese Interview Prep — 八股文 (Days 341–344) — Total: ~16 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 341 | 4h | Go 八股文: GMP模型 (G/P/M, 工作窃取, 抢占式). GC (三色标记+写屏障). 逃逸分析 (堆/栈, -gcflags). channel (hchan, 环形队列). map (hmap, 桶, 扩容). slice (SliceHeader, 扩容). interface (eface/iface). defer (链表, 开放编码). | Answer each in Chinese, 3-5 min. Record video. Target: confident, clear, with code examples |
| 342 | 4h | CS fundamentals in Chinese: 操作系统 (进程/线程/协程, 虚拟内存, 缺页中断, 调度). 计算机网络 (TCP握手挥手, TIME_WAIT, 拥塞控制, HTTP/1.1/2/3, HTTPS). 数据库 (隔离级别, MVCC, B+树, 最左前缀, 慢查询). | Practice each in Chinese. Draw diagrams. Use Chinese technical terms. Record and review |
| 343 | 4h | Company-specific 面经: Read 15+ 面经 on 牛客网 (ByteDance, Tencent past 3 months). Note recurring questions. Differences in company interview styles. | Create flashcard set. ByteDance: more Go internals. Tencent: more system design + Linux |
| 344 | 4h | Mock 八股文: Friend asks random questions in Chinese. You answer under pressure. Structured: 定义 → 原理 → 举例 → 总结. | 2h rapid-fire Q&A. Review weak areas. Write ideal answers for top 20. Practice until no hesitation |
🔹 System Design Mock Interviews (Days 345–348) — Total: ~16 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 345 | 4h | Design Chinese apps: 设计抖音 (video feed, recommendation, upload, CDN). 设计微信朋友圈 (timeline, fan-out, privacy). 设计红包系统 (red packet splitting, high concurrency, consistency). | Whiteboard each. Capacity estimation, API, data model, architecture, tradeoffs |
| 346 | 4h | High-concurrency: 秒杀系统 (flash sale, inventory deduction, queue, anti-fraud). 设计12306 (train ticketing, seat selection). 设计微博热搜 (trending topics, real-time aggregation). | Design each. Handle spike: 100→100K QPS. Strategies: pre-warming, rate limiting, queue, eventual consistency |
| 347 | 4h | Mock interviews (4 × 45 min): Design 抖音, 秒杀, Distributed Message Queue, Rate Limiter. Different interviewers each time. | Complete 4 mocks. Note strengths + weaknesses. Common feedback: "Deeper on failure scenarios", "More explicit tradeoffs" |
| 348 | 4h | Review: System design cheatsheet (in Chinese). Review all 10+ designs. Identify go-to patterns and blind spots. Practice 2-minute intro for each design. | Write Chinese cheatsheet. Review: what would you change now? Final mock: random design, nail it |
🔹 Resume, Portfolio & Open Source (Days 349–356) — Total: ~25 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 349 | 3h | GitHub polish: Every project needs descriptive README (what, why, how, architecture diagram), clear setup instructions, badges. Pin best 4-6 projects. Clean up old repos. | Audit all repos. Improve READMEs. Add Mermaid diagrams. Pin: Todo API, Food Delivery, Document Q&A, URL Shortener. Make profile README |
| 350 | 3.5h | Resume (English): 1 page. Sections: Contact, Education, Skills, Projects (3-4, STAR + metrics), Experience. Numbers: "Built X handling Y req/s, reducing latency Z%." Action verbs. | Write resume. Metrics: "Event-driven delivery system processing 10K orders/min, <50ms p95." Grammar check. Export PDF |
| 351 | 3.5h | Resume (Chinese): 中文简历. Add: 期望城市, 到岗时间, 学校信息. More modest tone than English. | Translate/adapt resume. Review with Chinese friend. Both versions ready |
| 352 | 3h | Technical blog posts (2-3): "Building a Real-time Chat System with Go gRPC Streaming", "Go + Python AI Backend: Document Q&A System". Publish on 掘金, 知乎, Medium. | Write + publish. Code snippets, diagrams, lessons learned. Share on social media |
| 353 | 3h | Open source: Find CNCF/Go project with "good first issue". Read contributing guide. Submit PR (even small: fix typo, add test, improve docs). Iterate on review. Get it merged! | Find issue on kubernetes/client-go, grpc/grpc-go, or smaller project. Submit PR. Address review comments. Get merged |
| 354 | 3h | Portfolio website (optional): Simple static site (Hugo/GitHub Pages). Showcase projects, blogs, resume. | Create yourname.github.io. Link to GitHub, blog, LinkedIn. Keep simple and professional |
| 355 | 3h | LinkedIn & 脉脉: Update LinkedIn (English) + 脉脉 (Chinese). Professional photo. Headline: "Go Backend Engineer | AI Integration |
| 356 | 3h | Final review: Resume reviewed by 3+ engineers. Iterate. All materials ready: English PDF, Chinese PDF, LinkedIn, 脉脉, GitHub, portfolio. | Send resume for review. Incorporate feedback. Polish everything. Create "Job Search" folder with all materials |
🔹 🚀 Apply & Interview (Days 357–365) — Total: ~35 hours
| Day | Time | Subtopic — What Exactly to Learn | Exercise |
|---|---|---|---|
| 357 | 4h | Strategy: Batch 1 (ByteDance, Tencent, Alibaba) via 校招 + 牛客网内推. Batch 2 (Meituan, Didi, Xiaohongshu) via BOSS直聘 + 校招. Batch 3 (Kuaishou, Bilibili, international) via LinkedIn + BOSS. Track in spreadsheet. | Set up tracking spreadsheet. Apply to 5 companies. Find 内推码 on 牛客网 |
| 358 | 4h | 校招 mastery: Learn campus recruitment timeline for your university. 宣讲会 schedule. 内推码 from seniors. Online assessment (笔试) format. | Register on career portals. Find 内推码. Note 笔试 dates. Set calendar reminders. Apply to 5 more companies |
| 359 | 4h | BOSS直聘: Complete profile 100%. Status: "正在看机会". Upload Chinese resume. Respond to recruiters within 24h. Template messages. | Polish BOSS profile. Message 10 recruiters with personalized intro. Track responses |
| 360 | 4h | Online assessments (笔试): Practice company-specific OA. ByteDance: algorithm + CS basics. Tencent: algorithm + system design MCQs. Use 牛客网 past OAs. | Take 2 practice OAs. Time yourself. Review mistakes. Focus: speed + accuracy |
| 361 | 4h | First interviews: Phone/video screen. Revise: self-intro (Chinese + English, 1 min). "Why our company?" Behavioral: "Tell me about a challenging project" — use STAR. | Write and practice intro scripts. Record. Mock behavioral interview. Ready for: "Tell me about yourself" (60 sec) |
| 362 | 4h | Technical interviews: Round 1 = algorithm (1-2 LeetCode Medium). Round 2 = Go/project deep dive. Share screen, code, explain architecture, discuss tradeoffs. | Mock technical interview. Narrate thinking while coding. Explain food delivery architecture in 5 min. Handle: "What if Kafka goes down?" |
| 363 | 4h | Final rounds: System design (review Month 9). Behavioral + culture fit. Research salary (牛客网, 脉脉, Levels.fyi). Know your worth. Prepare questions. | Review system design. Questions: "Success in 6 months?", "On-call?", "Tech stack?". Know salary range |
| 364 | 4h | Interview iteration: Log questions, what went well, what to improve. Update notes. Study weak areas. Practice. Interviewing is a skill — get better each time. | At least 2 real interviews this week (even non-dream companies = practice). After each: write notes. Adjust preparation |
| 365 | 3h | 🏁 ROADMAP COMPLETE! Celebrate! Review 365-day journey: zero Go → interviewing at China's top tech companies. Publish "365 Days of Go" retrospective. Keep applying — the right offer will come! | Write retrospective: what worked, what didn't, what you'd change. Publish. Celebrate with friends. You've earned it! 🎉 |
✅ Month 12 Checkpoint — ADVANCED LEVEL COMPLETE: You've completed a full year of deliberate, data-driven growth. You can interview at ByteDance, Tencent, or any global tech company with confidence.
| # | Topic | Days | Key Skill |
|---|---|---|---|
| 1 | Go Setup & Syntax | 3 | Write basic Go |
| 2 | Control Flow & Functions | 4 | Idiomatic Go logic |
| 3 | Structs, Interfaces & Methods | 5 | Go's type system |
| 4 | Goroutines & Channels | 6 | Concurrency basics |
| 5 | Standard Library | 6 | net/http, encoding/json, context |
| 6 | Capstone: CLI + REST API | 6 | First project |
| 7 | Advanced Concurrency | 5 | sync, atomic, race detector |
| 8 | Testing & Profiling | 5 | testing, benchmarks, pprof |
| 9 | SQL Fundamentals | 5 | CRUD, JOINs, aggregation |
| 10 | PostgreSQL Advanced | 7 | Indexes, EXPLAIN, window functions |
| 11 | Capstone: Blog/Forum API | 8 | Go + PostgreSQL project |
| 12 | Git Mastery | 5 | Rebase, bisect, workflows |
| 13 | Docker Fundamentals | 7 | Dockerfile, compose, networking |
| 14 | Linux Essentials | 6 | CLI, permissions, processes |
| 15 | REST API Design | 7 | Pagination, rate limiting, Swagger |
| 16 | Capstone: E-commerce API | 5 | Dockerized + deployed |
| 17 | gRPC + Protobuf | 5 | Proto3, unary RPC |
| 18 | gRPC Advanced | 5 | Streaming, interceptors, gateway |
| 19 | Redis Fundamentals | 5 | Data structures, caching, Pub/Sub |
| 20 | Authentication & Security | 7 | JWT, OAuth2, bcrypt, RBAC |
| 21 | Capstone: Chat Backend | 8 | gRPC + Redis + Auth |
| # | Topic | Days | Key Skill |
|---|---|---|---|
| 22 | Go Runtime (GMP) | 7 | Scheduler deep dive |
| 23 | Go Memory & GC | 7 | GC tuning, escape analysis |
| 24 | PostgreSQL at Scale | 8 | Query optimization, partitioning |
| 25 | Capstone: Analytics Pipeline | 8 | High-perf data ingestion |
| 26 | Kubernetes Core | 8 | Pods, Deployments, Services |
| 27 | Kubernetes Advanced | 8 | Ingress, HPA, RBAC, rolling updates |
| 28 | Cloud Platform | 8 | AWS/Alibaba Cloud hands-on |
| 29 | Capstone: URL Shortener on K8s | 6 | Cloud-native deployment |
| 30 | Apache Kafka | 7 | Producers, consumers, partitions |
| 31 | Event-Driven Patterns | 7 | CQRS, Outbox, DLQ, idempotency |
| 32 | Redis at Scale | 8 | Cluster, Sentinel, Streams, Redlock |
| 33 | Capstone: Food Delivery | 8 | Event-driven microservices |
| 34 | CI/CD Pipelines | 7 | GitHub Actions, test/build/deploy |
| 35 | Observability | 7 | Prometheus, Grafana, OTel, tracing |
| 36 | GitOps & Advanced Deployments | 8 | ArgoCD, Helm, canary, blue-green |
| 37 | Capstone: Production Setup | 8 | Full CI/CD + monitoring pipeline |
| # | Topic | Days | Key Skill |
|---|---|---|---|
| 38 | Distributed Systems Theory | 8 | CAP, consistency models, clocks |
| 39 | System Design Patterns | 8 | Consistent hashing, rate limiting, circuit breaker |
| 40 | System Design Practice | 9 | Design 6 real systems |
| 41 | Advanced Architecture | 5 | Saga, TCC, CQRS deep dive |
| 42 | Raft Consensus | 8 | etcd internals, leader election |
| 43 | Service Mesh & Gateway | 8 | Istio, Envoy, APISIX |
| 44 | Database at Massive Scale | 8 | Sharding, CDC, distributed transactions |
| 45 | Capstone: Design Doc | 6 | 10-page system design document |
| 46 | Python for Go Devs | 8 | FastAPI, Pandas, gRPC interop |
| 47 | LLM API Integration | 5 | OpenAI, Claude, function calling |
| 48 | RAG Architecture | 5 | Embeddings, vector DB, semantic search |
| 49 | AI Backend Patterns | 6 | Production AI, guardrails, monitoring |
| 50 | Capstone: AI-Powered System | 6 | Go + Python AI backend |
| 51 | LeetCode Intensive | 10 | 150–200 problems |
| 52 | Chinese Interview Prep (八股文) | 4 | Go + CS fundamentals in Chinese |
| 53 | System Design Mocks | 4 | 10+ mock interviews |
| 54 | Resume & Portfolio | 8 | GitHub, blogs, open source |
| 55 | Apply & Interview | 9 | Campus recruitment + BOSS直聘 |
⏰ MORNING (2–3 hours) — Learning
├── Study new concepts (read docs, watch tutorials)
├── Take notes (use the Feynman technique: explain it simply)
└── Answer: "Can I explain this in an interview?"
⏰ AFTERNOON (2–3 hours) — Coding
├── Hands-on exercises for today's topic
├── Push code to GitHub (green squares matter!)
└── Write tests (TDD habit from Day 1)
⏰ EVENING (1 hour) — Review & Community
├── Review what you learned (spaced repetition)
├── Read 1 面经 on 牛客网
└── Spend 15 min on BOSS直聘 browsing job descriptions
| Milestone | Day | What You Can Do | Target Salary (China, monthly RMB) |
|---|---|---|---|
| 🟢 Beginner Complete | 120 | Junior Go Developer | ¥15,000–22,000 |
| 🟡 Intermediate Complete | 240 | Go Backend Engineer (Mid-level) | ¥22,000–30,000 |
| 🔴 Advanced Complete | 365 | Senior-ready Go Backend Engineer | ¥30,000–40,000+ |
💡 These are conservative estimates for China. Top companies (ByteDance, Tencent) pay at the higher end or above. With AI integration skills (Month 11), you command a premium.
| Your Asset | How to Leverage It | Market Value |
|---|---|---|
| 🇨🇳 China-based | Can interview on-site for Chinese tech giants | Huge — no visa issues for China roles |
| 🇧🇩 Bangladeshi background | English + Bengali + Chinese = rare trilingual | Very high for global teams |
| 🎓 Studying in China | Access to campus recruitment (校园招聘) | Critical — easiest entry point |
| 🌏 International perspective | Understanding both Asian & Western markets | Valuable for companies expanding globally |
| 💻 Go language focus | Go is heavily used in China's top tech | Direct alignment with market |
-
Leverage campus recruitment (秋招/春招):
- Chinese companies have dedicated new grad hiring seasons
- 秋招 (Fall Recruitment): August–November
- 春招 (Spring Recruitment): February–April
- This is the EASIEST time to get into ByteDance, Tencent, etc.
-
Build your 中文 technical vocabulary:
- Learn system design terms in Chinese
- Practice explaining your projects in Chinese
- Chinese technical interviews are different from Western ones
-
Target these companies specifically (ordered by Go usage):
- 字节跳动 (ByteDance) — #1 Go user globally
- 腾讯 (Tencent) — Heavy Go in cloud division
- 滴滴 (Didi) — Go for real-time systems
- 美团 (Meituan) — Go for high-throughput services
- 哔哩哔哩 (Bilibili) — Go for video platform backend
-
Keep international options open:
- Singapore is a great middle-ground (English + Asian market)
- Remote roles from US/EU companies are increasingly available
- Your international background is a differentiator
| # | Book | Why | When to Read |
|---|---|---|---|
| 1 | Designing Data-Intensive Applications (Kleppmann) | The Bible of backend engineering | Month 1–9 (read twice!) |
| 2 | 100 Go Mistakes and How to Avoid Them | Go-specific pitfalls | Month 1 |
| 3 | Concurrency in Go (Katherine Cox-Buday) | Go concurrency deep dive | Month 1–2 |
| 4 | Database Internals (Alex Petrov) | Understanding storage engines | Month 2–3 |
| 5 | Systems Performance (Brendan Gregg) | Linux & performance | Month 3–4 |
| 6 | Kubernetes in Action (Marko Lukša) | K8s deep understanding | Month 4–5 |
| 7 | Designing and Building Enterprise Knowledge Graphs (optional) | For AI/RAG work | Month 11+ |
| Resource | Topic | Cost |
|---|---|---|
| ByteByteGo (bytebytego.com) | System Design | $99/year — worth it |
| DDIA video course (YouTube: Martin Kleppmann lectures) | Distributed Systems | Free |
| Ardan Labs Go Training | Advanced Go | Paid, excellent |
| Linux Foundation: Kubernetes Fundamentals (LFS258) | K8s | ~$300 |
| Hussein Nasser (YouTube) | Backend Engineering Deep Dives | Free |
| MIT 6.824: Distributed Systems | Consensus, Raft, etc. | Free |
| Platform | Use For |
|---|---|
| LeetCode (力扣) | Algorithm interviews — aim for 200+ problems |
| 系统设计面试 (System Design Interview) | Chinese & English system design practice |
| Exercism Go Track | Go language mastery |
| Katacoda / Killercoda | Hands-on K8s/Docker labs |
Use this checklist to track your progress. Mark items as [x] when completed.
- Go goroutine scheduler (GMP model) understood
- Can profile and optimize Go code with pprof
- Can read and explain EXPLAIN ANALYZE output
- Built a URL shortener with analytics
- Understand ACID, MVCC, transaction isolation levels
- Can write a production-grade Dockerfile
- Deployed an app to Kubernetes with HPA
- Understand Linux process/network internals
- Can use strace/perf for debugging
- Built a gRPC service with streaming
- Understand Kafka architecture deeply
- Implemented Redis caching strategies
- Built a real-time chat system
- Deployed to AWS (or Alibaba Cloud)
- Built a CI/CD pipeline with GitHub Actions
- Wrote Terraform for infrastructure
- Implemented canary deployment
- Can whiteboard-design 5+ real systems
- Understand Raft consensus deeply
- Can explain CAP theorem with real examples
- Designed and documented a system from scratch
- Can write Python microservices for AI
- Built a RAG system
- Integrated LLM APIs into a Go backend
- Understand vector databases
- LeetCode: 200+ problems solved
- System design: 10+ mock interviews
- Chinese technical vocabulary ready
- 3+ significant projects on GitHub
- Open source contribution(s)
- Resume reviewed by 3+ peers
Estimate your return on learning investment:
Expected Salary Impact = (Skill Score / 10) × Market Weight
For China (ByteDance target):
Base new grad salary: ¥350K RMB/year
With Tier 1 skills only: ¥350K (no premium)
With Tier 1+2+3: +15% (¥402K)
With Tier 1–5 (system design): +30% (¥455K)
With ALL tiers (AI integration): +40–50% (¥490K–525K)
For US (remote or on-site):
Base new grad: $120K
With all tiers: $170K+
🎯 The AI integration skills (Tier 6) are the highest ROI skillset right now
because: highest growth trajectory (10/10), highest AI synergy (10/10), high salary premium (9/10).
Based on data showing these skills have declining demand or low ROI:
| Skill | Why Skip | Data |
|---|---|---|
| PHP | Usage declining, salary lowest ($48K median) | SO Survey 2024 |
| jQuery | Still used but declining; modern frameworks replace it | SO Survey: 22.5% (down) |
| Ruby on Rails | Shrinking job market, very few new projects | SO Survey: 5.2% usage |
| AngularJS (v1) | Legacy; no new jobs | Dead technology |
| Blockchain/Solidity (unless specialized) | Hype cycle over, few real jobs | SO Survey: 1.1% usage |
| Building CRUD apps endlessly | AI writes CRUD now; no competitive advantage | AI can do this in seconds |
| Memorizing syntax/framework APIs | AI tools handle this; focus on concepts | Copilot/Cursor handle syntax |
┌──────────────────────────────────────┐
│ PILLAR 1: DEEP GO ENGINEERING │
│ Concurrency, memory, profiling, │
│ GC, goroutine scheduling │
└────────────┬─────────────────────────┘
│
┌────────────▼─────────────────────────┐
│ PILLAR 2: SYSTEM DESIGN THINKING │
│ Distributed systems, CAP, Raft, │
│ tradeoffs, scalability patterns │
└────────────┬─────────────────────────┘
│
┌────────────▼─────────────────────────┐
│ PILLAR 3: AI-ERA INTEGRATION │
│ Python, LLM APIs, RAG, vector DBs, │
│ embedding, AI backend patterns │
└──────────────────────────────────────┘
Pillar 1 + Pillar 2 = Solid Backend Engineer (employable anywhere)
Pillar 1 + Pillar 2 + Pillar 3 = Future-proof AI-era Backend Engineer
Research Data: Scraped from BOSS直聘, 牛客网 (Nowcoder), GitHub repos, and real Chinese tech community discussions. Analysis of 50+ real interview experiences (面经), job postings, and community posts.
Chinese tech recruitment works fundamentally differently from the West. You must understand this ecosystem to succeed:
| Platform | Type | What It's For | Monthly Active Users | Key Feature |
|---|---|---|---|---|
| BOSS直聘 (Boss Zhipin) | Job matching | #1 platform for all tech jobs | 40M+ | Direct chat with hiring managers/CTOs |
| 牛客网 (Nowcoder) | Interview prep + community | Interview题库, 面经, mock interviews | 8M+ | Real interview questions + salary database |
| 脉脉 (Maimai) | Professional network | China's LinkedIn — company reviews, salary leaks, referrals | 15M+ | Anonymous company reviews, 职言 community |
| 拉勾 (Lagou) | Tech-focused jobs | Internet/tech company jobs | 5M+ (declining) | Curated tech roles, salary transparency |
| 猎聘 (Liepin) | Mid-senior recruitment | 3+ years experience roles | 10M+ | Headhunter-driven, higher-end roles |
| 实习僧 (Shixiseng) | Internships | Student/new grad internships | 3M+ | Campus-focused, 校园招聘 |
| 小红书 (RED) | Social media | Career advice, 面经, salary sharing | 200M+ (general) | Unfiltered career posts, real experiences |
| 知乎 (Zhihu) | Q&A / Knowledge | Technical Q&A, career advice | 90M+ | Long-form career guides, industry insights |
校招 (Campus Recruitment / 校园招聘)
├── 秋招 (Fall Recruitment): Aug–Nov ← 🏆 YOUR BEST CHANCE
│ ├── 提前批 (Early Batch): Jul–Aug ← Apply here first!
│ ├── 正式批 (Official Batch): Sep–Oct
│ └── 补录 (Supplementary): Nov–Dec
└── 春招 (Spring Recruitment): Feb–Apr ← Smaller scale, fewer roles
社招 (Social Recruitment / 社会招聘)
└── Year-round, requires 1–3+ years experience
└── Harder for new grads — 校招 is your golden ticket
🔥 Critical Insight: As a university student in China, you qualify for 校招. This is 3–5× easier to get in than 社招. Companies like ByteDance hire 60–70% of their new grads through 校招. Do NOT miss the Fall 2026 秋招 cycle!
I analyzed 50+ real Go backend interview experiences (面经) from 牛客网. Here's what Chinese companies actually ask:
| Rank | Question | Frequency | Companies Asking |
|---|---|---|---|
| 1 | GMP调度模型 (Goroutine scheduler GMP model) | ~85% | ByteDance, Tencent, Baidu, Didi, 美团 |
| 2 | channel 有缓冲/无缓冲区别 | ~80% | All companies |
| 3 | 逃逸分析 (Escape analysis) | ~75% | ByteDance, Tencent, Baidu |
| 4 | GC机制 (Garbage collection mechanism) | ~70% | All companies |
| 5 | defer 执行顺序 & 应用场景 | ~65% | All companies |
| 6 | map 线程安全? 如何保证安全? | ~60% | 腾讯, 滴滴, 好未来 |
| 7 | sync.Mutex vs sync.RWMutex | ~55% | 映客直播, 百度 |
| 8 | slice与array区别, 扩容机制 | ~55% | 游族网络, MetaApp |
| 9 | 反射原理 (Reflection) | ~50% | 腾讯, 百度 |
| 10 | interface底层实现 | ~45% | ByteDance, 腾讯 |
ByteDance/TikTok — 抖音后端 (Douyin Backend):
- GMP模型详细追问 + 抢占式调度
- TCP拥塞控制 (BBR算法)
- Redis缓存三剑客 (穿透/击穿/雪崩)
- 数据库索引优化 + SQL调优
- 手撕算法: 三数之和、二叉树序列化
- System design: 设计一个短视频推荐feed
Tencent — 腾讯云/微信:
- Go逃逸分析 + 零拷贝实现
- sync.Map底层原理
- Linux虚拟地址空间布局
- NUMA架构对性能影响
- WebSocket全双工通信原理
- 容器 vs 虚拟机本质区别
Baidu — 百度:
- Go内存分配优化
- ETCD watch & lease机制
- leader选举实现
- Agent服务注册发现
- "百度文库社招golang二面面经" — 面试官质疑AI辅助面试 (new trend!)
Didi — 滴滴:
- 多线程/多进程/多协程区别
- vector底层原理 (C++ + Go对比)
- 迭代器失效问题
- Go channel 阻塞/非阻塞
Meituan — 美团:
- Go性能调优经验
- pprof使用场景
- 分布式事务 (TCC/Saga)
- 消息队列选型 (Kafka vs RocketMQ)
| Trend | What It Means for You |
|---|---|
| AI作弊检测 | 面试官现在会怀疑AI辅助面试 (百度真实案例). You must be able to explain your thinking live |
| 手撕代码 (Live coding) | Almost every interview has live coding. LeetCode is non-negotiable |
| 八股文疲劳 | Companies increasingly go beyond memorized answers. They want depth |
| AI项目经验加分 | Having AI-related project experience is a huge differentiator |
| 英语能力 | For global teams (TikTok, 腾讯海外), English is tested |
Based on aggregated data from 牛客网, BOSS直聘, 脉脉, and 小红书:
| Company | Position | New Grad (校招) Salary (RMB/Year) | Breakdown |
|---|---|---|---|
| 🥇 ByteDance | Go后端开发 | 350K–500K | 25K–35K/mo × 15–16 months |
| 🥇 Tencent | Go/云后台开发 | 300K–480K | 22K–32K/mo × 14–16 months |
| 🥇 Alibaba | Go/中间件开发 | 300K–450K | 22K–30K/mo × 14–16 months |
| 🥈 Pinduoduo | Go后端 | 350K–550K | Higher base, intense work |
| 🥈 Meituan | Go后端开发 | 280K–420K | 20K–28K/mo × 14–15 months |
| 🥈 Xiaohongshu (RED) | Go后端 | 280K–420K | 20K–28K/mo × 14–15 months |
| 🥈 Didi | Go平台开发 | 260K–400K | 18K–27K/mo × 14–15 months |
| 🥉 Bilibili | Go后端 | 250K–380K | 18K–25K/mo × 14–15 months |
| 🥉 Kuaishou | Go后端开发 | 300K–450K | 22K–30K/mo × 14–15 months |
💡 Note: These are 2024-2025 data points. The higher end typically = 985/211 university graduates + strong internship experience + algorithm competition awards.
X (Twitter) ≠ primary job search platform for China. Here's how X fits into your strategy:
| Use Case | Platform | Why |
|---|---|---|
| Chinese job search | BOSS直聘, 牛客网 | These ARE the market. X is nearly irrelevant for China-based jobs |
| Global/remote job posts | X (Twitter), LinkedIn | Western companies use X to announce openings |
| Tech community building | X (Twitter) | Follow global Go community, tech influencers |
| Finding referrals | 脉脉, X, LinkedIn | Network for internal referrals |
| Salary benchmarking | 脉脉 (匿名区), 小红书, Levels.fyi | Best for real compensation data |
| Interview preparation | 牛客网, LeetCode 力扣 | Actual past interview questions |
| Industry news & trends | X (Twitter), 知乎 | Breaking tech news, company updates |
Global Go Community on X:
├── @golang — Official Go account
├── @golangweekly — Go Weekly newsletter
├── @davecheney — Go core contributor, author
├── @bradfitz — Go team member (HTTP, net/http)
├── @rakyll — Former Go team, observability expert
├── @kelseyhightower — Kubernetes legend (Go/K8s ecosystem)
Chinese Tech on X (海外账号):
├── @ByteDanceTalk — ByteDance updates
├── @AlibabaGroup — Alibaba tech
├── @TencentGlobal — Tencent global
Job Posting Accounts:
├── @GoHire_Dev — Go-specific job listings
├── @golangjobs — Go job aggregator
├── @remote_dev_jobs — Remote developer jobs
├── @YCBackedJobs — YC startup jobs (many use Go)
| Metric | Data |
|---|---|
| % of tech jobs posted on X | ~5–8% (growing, but still niche) |
| % of Chinese tech recruiters active on X | <2% (they use 脉脉/微信/飞书) |
| Best use of X for Chinese job seeker | Following global trends + building international network |
| Most active X Go job accounts | @golangjobs (50K+ followers), @GoHire_Dev |
⚠️ Verdict on X: X/Twitter is a supplementary tool, not a primary job search platform for China. For China-based roles: BOSS直聘 + 牛客网 + 脉脉 are your daily drivers. X is for global exposure, networking with Western engineers, and staying current with worldwide industry trends.
DAILY ROUTINE (during job search season):
📱 Morning: 牛客网 check
├── Review latest 面经 (interview experiences) for your target companies
├── Practice 1-2 real interview questions from 题库
└── Check 内推 (internal referral) posts
📱 Lunch: BOSS直聘
├── Chat with recruiters who messaged you
├── Browse new job postings
├── Save interesting positions
└── Update your online resume/status
📱 Evening: 脉脉 + 小红书
├── Pulse check company reviews (脉脉匿名区)
├── Salary comparison (脉脉/小红书)
├── Read industry news (知乎/公众号)
└── Network for referrals
📱 Weekend: X/Twitter + LinkedIn
├── Catch up on global Go/tech news
├── Engage with Go community
├── Look for remote/international opportunities
└── Build your English technical writing (post about your projects)
━━━━━━━━━━━━━━━━━━━━━━━━
🎯 PRIORITY ORDER (for China job search):
1. 牛客网 — Interview prep (non-negotiable)
2. BOSS直聘 — Job search + recruiter chat (non-negotiable)
3. 脉脉 — Company research + referrals
4. LeetCode 力扣 — Algorithm practice (200+ problems)
5. GitHub — Portfolio + open source
6. X/Twitter — Global exposure (nice to have)
7. LinkedIn — International backup plan
Here are real, verified interview questions from recent 面经 on 牛客网:
- GMP调度模型 — P的作用是什么?为什么要有P?
- 逃逸分析 — 什么情况下变量会逃逸到堆上?如何验证?
- GC机制 — 三色标记法 + 混合写屏障的工作流程
- channel — 向已关闭的channel读写会怎样?如何优雅关闭?
- defer — 多个defer的执行顺序?defer + return的执行顺序?
- map — map的扩容机制?为什么map不是线程安全的?
- interface — interface的底层数据结构?eface vs iface区别?
- slice — append扩容机制?slice作为函数参数会改变原值吗?
- sync.Map — 与加锁的map有什么区别?适用什么场景?
- context — WithCancel, WithTimeout, WithDeadline的区别和使用
- 如何设计一个短链接系统 (TinyURL)?
- 如何设计一个分布式ID生成器?
- 如何设计一个限流器 (Rate Limiter)?
- 如何设计一个消息队列?
- 微服务之间如何通信?gRPC vs HTTP优缺点?
- MySQL索引 — B+树 vs B树?联合索引最左前缀?
- Redis缓存三剑客 — 穿透 (布隆过滤器), 击穿 (互斥锁), 雪崩 (随机过期)
- 数据库主从复制原理?读写分离如何实现?
- 分库分表方案?sharding key如何选择?
- Redis数据结构 — zset底层实现 (ziplist + skiplist)?
- TCP三次握手四次挥手?为什么是三次不是两次?
- TIME_WAIT状态的作用?大量TIME_WAIT如何解决?
- HTTP/1.1 vs HTTP/2 vs HTTP/3的区别?
- HTTPS握手过程?证书链验证?
- 进程/线程/协程的区别?上下文切换成本?
🎯 Pro tip: 牛客网 has these questions organized by company and role. Search
golang 面经 字节orgolang 面经 腾讯for company-specific preparation.
| Source | Data Type | Sample Size |
|---|---|---|
| Stack Overflow Developer Survey 2024 | Language usage, salary, AI | 65,437 respondents |
| TIOBE Index (June 2026) | Language popularity trends | Web search engine data |
| SimplifyJobs Summer 2026 Internships | Real job postings | 320+ active roles |
| BOSS直聘 (Boss Zhipin) | China job market data | 40M+ monthly active users |
| 牛客网 (Nowcoder) | Real interview 面经 + 题库 | 50+ verified 面经 analyzed |
| 脉脉 (Maimai) | Company reviews, salary data | 15M+ users |
| 小红书 (RED) | Career sharing, salary leaks | 200M+ users |
| 知乎 (Zhihu) | Technical Q&A, career advice | 90M+ users |
| X/Twitter | Global tech community | Supplementary source |
| LinkedIn Jobs | International job postings | Global |
Disclaimer: This roadmap is based on real data as of June–July 2026. Markets change. Re-evaluate every 6 months using the same data-driven framework. The goal is not to predict the future perfectly — it's to make better decisions than "someone on Reddit said so."
Built with real data, not random opinions.