iwantcoding.com
🔥 Daily 👥 Rooms 🏆 Top Log in Sign up

Certificate

Go track certificate: pass criteria, project brief, and a worked example marking sheet.

Go — certificate

EXAMPLE
# ===== Award criteria =====
# Pass: >= 70%; Distinction >= 85%.
#
# 1. Project structure          (10)
# 2. Idiomatic Go               (15)
# 3. Concurrency                (15)
# 4. Error handling             (10)
# 5. Testing + benchmarks       (15)
# 6. HTTP / gRPC service        (15)
# 7. Build + deploy (Docker)    (10)
# 8. Communication              (10)

# ===== Project brief =====
# Ship a small Go service with the following:
# - HTTP API (4+ endpoints) using net/http or chi/echo
# - Real database (Postgres, MongoDB, or SQLite)
# - Structured logging (slog or zerolog)
# - Configuration via env vars + flags (Viper or stdlib)
# - Graceful shutdown
# - Concurrent worker pool for at least one async task
# - 70%+ test coverage including table-driven tests
# - Multi-stage Dockerfile producing a < 20 MB image
# - README with architecture diagram + ops notes

# Ideas: URL shortener, blog API, task queue runner, GitHub events ingester,
# small chat backend, OAuth callback handler.

# ===== Sample structure =====
# myapp/
#   cmd/api/main.go              (entrypoint)
#   internal/
#     api/                       handlers
#     storage/                   db + migrations
#     pricing/                   domain
#     worker/                    async jobs
#   pkg/                         (optional public-ish helpers)
#   Dockerfile
#   docker-compose.yml
#   README.md
#   go.mod

# ===== Marking sheet (example) =====
# 1. Project structure   9/10  cmd + internal layered cleanly
# 2. Idiomatic Go        13/15 gofmt clean, small interfaces, errors as values
# 3. Concurrency         13/15 bounded worker pool, context cancellation
# 4. Error handling      9/10  wrapped with %w, sentinel errors
# 5. Testing             13/15 table-driven, benchmarks for hot path
# 6. HTTP service        14/15 middleware stack, OpenAPI / swagger
# 7. Build + deploy      9/10  multi-stage Dockerfile, distroless, scratch alternative
# 8. Communication        9/10 README, ADRs, screenshots
# Total: 89/100 -> Distinction

# ===== Idiomatic checklist =====
# - errors.Is / errors.As over string comparison
# - context.Context as first param of I/O functions
# - go fmt + go vet + staticcheck in CI
# - Small interfaces (1-3 methods)
# - Build constraints for OS-specific code

# ===== Patterns to internalise =====
# - cmd/<binary>/main.go layout
# - internal/<pkg>/ for private packages
# - Errors as values; sentinel errors and wrap with fmt.Errorf
# - Graceful shutdown with signal handling

# ===== Pitfalls =====
# - god structs holding many responsibilities
# - Panics in library code (use error returns)
# - No bounded concurrency -> resource exhaustion
# - main.go with all the business logic inline

Why it matters

The Go certificate proves you can ship a real Go service: idiomatic structure, concurrency under control, tested, dockerised, documented. Hit the rubric and you have a portfolio repo plus the muscle memory to start the next service from scratch.

Tip: Tweak the snippet with Try it Yourself », then sit the quiz at the bottom of the page.

Example

Example
// /certificate/go
Try it Yourself »

Discussion

Loading…