Lesson 2 of 2 · ⭐ Gap priority

Full-Stack Production Bar

Picking up a legacy service outside your comfort language is a lot less daunting once you know what to look for first — and what "production-grade" actually requires.

Reading fluency across languages

You don't need expertise in every language — you need enough fluency to navigate one safely.

Reading fluency means being able to navigate an unfamiliar codebase, recognize common idioms and structure, and make a safe, pattern-matching change — not writing idiomatic code from scratch without reference. Before touching anything, find the test suite (it documents intended behavior), the dependency manifest (Gemfile, composer.json, go.mod — what's actually available), and an existing similar pattern to follow instead of inventing a new one.

The production bar

Four practices separate code that works from code that's actually production-grade.

Code review

Every change gets read critically by someone else before merging — catching what the author could not see in their own diff.

Testing

Enough automated coverage that a change's blast radius is caught before a human notices it in production.

Safe deploys

Rolling out gradually — canary, feature flag, staged rollout — so a bad change affects a fraction of traffic, not everyone at once.

Observability hooks

New code ships with enough logging and metrics to answer "is this working" without needing a follow-up deploy just to add visibility.

Exercises

Compare the two implementations below, then work through both exercises.

// Go: an HTTP handler
func handleOrder(w http.ResponseWriter, r *http.Request) {
    id := r.PathValue("id")
    order, err := store.GetOrder(id)
    if err != nil {
        http.Error(w, err.Error(), http.StatusNotFound)
        return
    }
    json.NewEncoder(w).Encode(order)
}

# Ruby (Rails-style): the same shape
def show
  order = Order.find(params[:id])
  render json: order
rescue ActiveRecord::RecordNotFound
  render json: { error: "not found" }, status: :not_found
end

Concept check

Answer in your head first, then click a question to reveal the answer.

Scenario checklist

Work through the sample Go/Ruby comparison and check each item off. Progress is saved in your browser.

Go deeper

These primers are a starting point. Read the primary sources to build real fluency.

Training Notes

What building this project taught me.

This is a flagged gap-priority module

Full-Stack Production Bar was Tom's #10 self-identified gap across a scan of 30+ job descriptions — the ask, in company language, was usually "comfortable across the stack, not just one language."

The Go/Ruby comparison is about pattern recognition, not translation

The goal isn't memorizing syntax mappings between languages — it's recognizing the same conceptual shape (lookup, error handling, response) regardless of which language it's written in.