Engineering Guides

Engineering Guides

How to design APIs, run postmortems, estimate, pick brokers, review PRs.

75Articles
75Topics covered
Articles in this category

All 74 articles, sorted alphabetically

NEW · RECENT DEVELOPMENT

GitHub Actions Moves ubuntu-latest to Ubuntu 26.04 From 19 October 2026: What Changes on the Image and How to Pin, Test and Migrate

From 19 October 2026 the ubuntu-latest label begins resolving to Ubuntu 26.04, finishing by 19 November. The verified image differences, including Java 25 as default, Node 24, Helm 4 and Docker 29, the setup-python gap for old interpreters, and a pin, test and migrate procedure.

Read article →
NEW · RECENT DEVELOPMENT

Python 3.15 Is Out: Adopting Lazy Imports and Surviving the UTF-8 Default

Python 3.15.0 was released on 9 October 2026. A migration guide to the two changes most teams feel first, UTF-8 as the default encoding and explicit lazy imports, plus the porting notes, removals and the new sampling profiler.

Read article →
ARTICLE · 01

Agentic Coding Workflows: Plan, Execute, Verify, Subagents, and Parallel Worktrees

How to structure work for AI coding agents as a plan, execute, verify loop: read-only planning with a plan file, bounded execution with checkpoints, v…

Read article →
ARTICLE · 02

AI Engineer Roadmap 2026: From First API Call to Production Agents

A staged roadmap for becoming an AI engineer in 2026: first API call and token economics, structured output, a correct tool-use loop, retrieval with a…

Read article →
ARTICLE · 03

Backend Engineer Roadmap 2026: Distributed Systems, Data, Cloud, and AI Integration

A staged backend engineering roadmap for 2026: one language and HTTP, relational data and transactions, distributed-systems failure handling with idem…

Read article →
ARTICLE · 04

Data Engineer Roadmap 2026: Pipelines, Streaming, Lakehouses, and AI Data

A staged data engineering roadmap for 2026: SQL and data modelling, batch processing with Spark and columnar files, lakehouse table formats such as Ic…

Read article →
ARTICLE · 05

Eval-Driven Development: Building LLM Features Test-First with Evals

A practical guide to eval-driven development for LLM features: writing eval cases before the prompt exists, deterministic and model-graded graders, a …

Read article →
ARTICLE · 06

API Design, in depth: consistency and longevity across many teams, with a style guide enforced in CI, breaking-change detection, payloads built to grow, versioning policy and a deprecation lifecycle

How organisations keep APIs consistent with each other and stable for years: why inconsistency and breakage are the expensive failures, a house style …

Read article →
ARTICLE · 07

Code Review, in depth: running review as a team system with small changes, fast turnaround, prepared authors, labelled comments, ownership rules and metrics that do not lie

Code review as a system a team runs, not a habit: what review is for, the review loop and where time is lost, splitting changes so they can be reviewe…

Read article →
ARTICLE · 08

Documentation Culture, in depth: ownership, docs-as-code, freshness checks and the incentives that keep engineering docs true

How to build an engineering documentation culture that lasts: why docs rot, a map of document types with owners and review rules, a docs-as-code pipel…

Read article →
ARTICLE · 09

Error Messages, in depth: anatomy of a recoverable error, one error for three audiences, catalogs, CLI and form patterns, and testing messages like code

How to write and engineer error messages people can recover from: the what-why-next anatomy, rendering one typed error for users, API clients and oper…

Read article →
ARTICLE · 10

Incident Response, in depth: getting systems back up fast with a time-to-mitigate budget, change-first triage, a mitigation catalogue, safe recovery and proof that it held

A responder's guide to shortening outages: where incident minutes go, the first five minutes, change-first triage with a merged change timeline, …

Read article →
ARTICLE · 11

Naming Things, in depth: what a name must carry, length by scope, naming by kind, names that cross boundaries and renaming safely

A practical guide to naming in software: what information a name must carry, scaling length with scope, conventions for booleans, functions, collectio…

Read article →
ARTICLE · 12

On-Call, in depth: the responder's playbook, from shift readiness and the first fifteen minutes of a page to mitigation before diagnosis, escalation, handoffs, onboarding and staying sustainable

A practical guide to being on call: a readiness check before every shift, the acknowledge-assess-mitigate-verify loop, the first fifteen minutes of a …

Read article →
ARTICLE · 13

Postmortems, in depth: writing for readers, local rationality, causal graphs instead of five whys, strong action items and mining the corpus

How to write a postmortem that changes the system: who reads it, how to replace counterfactual and blaming language, how to build a causal graph inste…

Read article →
ARTICLE · 14

Writing Documentation That People Actually Read, in depth: reader cards, structure for scanning, sentences, tested examples, editing passes and reader testing

A page-level guide to writing technical documentation people use: how readers scan, defining the reader and task, titles and headings in the reader&#x…

Read article →
ARTICLE · 15

Blue-green deployment architecture

Deep-dive on blue-green deployment: two full production environments fronted by a router, deploying and verifying the idle color, atomic cutover and i…

Read article →
ARTICLE · 16

Canary release architecture, in depth: weighted traffic, an automated judge, and gated promotion

A build guide to canary releases: why graduated real-traffic exposure beats blue-green and rolling updates, the controller/router/baseline/judge archi…

Read article →
ARTICLE · 17

Capacity Planning Architecture, in depth: demand drivers, unit cost models, headroom policy, lead times and the review loop

How to plan capacity as a repeatable process: translate business drivers into per-resource peak demand, measure unit cost with load tests, choose a sa…

Read article →
ARTICLE · 18

Production change management architecture

Deep-dive on production change management: classifying changes by risk, review and approval matched to that risk, staged rollout behind observability …

Read article →
ARTICLE · 19

Chaos engineering

Deep-dive on chaos engineering: the hypothesis-inject-observe-learn scientific method, failure types (instance, latency, resource, network), blast rad…

Read article →
ARTICLE · 20

Configuration as code architecture

Deep-dive on configuration as code: a typed source of truth, CI validation gates, per-environment rendering, immutable promotion, secrets references, …

Read article →
ARTICLE · 21

Deprecation -- retiring things without breaking people

Deep-dive on deprecation: the retirement need, announcing with a timeline and migration path, sunset dates, usage tracking, warnings and nudges (depre…

Read article →
ARTICLE · 22

How to Write a Design Doc: Non-Goals, Alternatives, ADRs

How to write a software design doc that drives decisions: context and non-goals first, honest alternatives, async review with a named decider, ADRs.

Read article →
ARTICLE · 23

Developer Experience Architecture in Depth

A 2500-word walkthrough of DevEx architecture: metrics, feedback loops, local dev, CI latency, environments, documentation, tooling, deployment, suppo…

Read article →
ARTICLE · 24

Disaster recovery architecture

Deep-dive on disaster recovery: setting RPO and RTO with the business, immutable offsite backups vs cross-region replication, cold/warm/hot standby si…

Read article →
ARTICLE · 25

Error budget architecture

Deep-dive on error budgets: SLI and SLO foundations, the 1-minus-SLO budget over a rolling window, burn-rate and multi-window multi-burn-rate alerting…

Read article →
ARTICLE · 26

Feature Flag Lifecycle and Architecture: Evaluation to Cleanup

Feature flag architecture and lifecycle: streaming rule delivery, local evaluation, deterministic bucketing, kill switches, and cleanup that bounds fl…

Read article →
ARTICLE · 27

Game days -- rehearsing failure before it happens

Deep-dive on game days: the untested-recovery-fails premise, the planned failure exercise, realistic scenarios, controlled blast radius, the hypothesi…

Read article →
ARTICLE · 28

Incident Response Architecture, in depth: severity, roles, the incident state machine, communication and mitigation

How to design incident response as a system: signals and triage, a severity scale based on impact, incident command roles, an incident state machine i…

Read article →
ARTICLE · 29

Incident review architecture, in depth: the incident record, automated timelines, review triage, a factor taxonomy and action items that are verified

The system behind incident reviews: a data model for incidents, timelines, contributing factors and action items; automated timeline ingestion from pa…

Read article →
ARTICLE · 30

Launch architecture, in depth: tiering, readiness reviews, go/no-go criteria as code, launch day, hypercare and the retro

How to run a software launch as an engineered process rather than an event: risk tiers, readiness reviews with evidence, go/no-go criteria written as …

Read article →
ARTICLE · 31

Load testing architecture

Deep-dive on load testing as an engineering discipline: open vs closed workload models and coordinated omission, the controller/generator/data/telemet…

Read article →
ARTICLE · 32

Migration architecture, in depth: facade, backfill and change capture, shadow reads, phased cutover and rollback

An architecture for migrating a live system and its data without downtime: the routing facade, backfill plus change data capture instead of dual write…

Read article →
ARTICLE · 33

Migration Playbook Architecture, in depth: phase gates, go/no-go as code, the point of no return and the rollback decision tree

How to run a system migration as a playbook rather than a project plan: phases with measurable entry and exit gates, go/no-go criteria evaluated as co…

Read article →
ARTICLE · 34

On-call architecture, in depth: what may page, burn-rate alerts, routing and escalation, rotation sizing and sustainable load

How to design an on-call system that is effective and sustainable: the paging pipeline from signal to human, rules for what may page, SLO burn-rate al…

Read article →
ARTICLE · 35

Platform Engineering Architecture in Depth

Platform engineering architecture in depth: the five planes of an internal developer platform, golden path templates, catalog, policy as code, a worke…

Read article →
ARTICLE · 36

Release train architecture

Deep-dive on the release train: a fixed-cadence release pattern that fixes the date and flexes the scope. Covers the continuously-releasable trunk, th…

Read article →
ARTICLE · 37

Rollback Strategy: Architecture Deep-Dive

How to design a fast, rehearsed path back to the last known-good state — traffic switches, retained artifacts, expand/contract schema migrations, and …

Read article →
ARTICLE · 38

Runbook architecture

Deep-dive on runbooks as a system: anatomy for 3AM execution (trigger, diagnosis tree, actions with blast radius, verification, escalation), the doc-t…

Read article →
ARTICLE · 39

Secrets management architecture

Deep-dive on secrets management: a central store that issues, protects, rotates, and audits credentials so no human copies a long-lived secret. Covers…

Read article →
ARTICLE · 40

Service catalog architecture

Deep-dive on the service catalog behind an internal developer portal: the service entity with ownership, dependencies, and metadata; registration-as-c…

Read article →
ARTICLE · 41

SLO Program Rollout Architecture, in depth: from a first pilot SLO to organisation-wide error budgets

How to roll out service level objectives across an engineering organisation: the program's components, choosing SLIs from user journeys with budg…

Read article →
ARTICLE · 42

SLO Playbook Architecture, in depth: budget states, triggers, escalation ladders, review cadence and the policy as code

How to build the SLO playbook that turns error-budget numbers into decisions: budget states and the actions bound to them, burn-rate and incident trig…

Read article →
ARTICLE · 43

How to Choose a Database, in depth: a workload-first method with a query inventory, sizing arithmetic, benchmarks and the mistakes that force migrations

A practical method for choosing a database: start from a query inventory instead of product names, answer the questions that actually decide it (invar…

Read article →
ARTICLE · 44

How to Design an API, in depth: resource modelling, errors, idempotency, pagination, concurrency and evolution

A practical method for designing an HTTP API that survives contact with real clients: start from use cases, model resources and states, write the cont…

Read article →
ARTICLE · 45

How to Estimate an Engineering Project, in depth: decomposition, three-point ranges, Monte Carlo, calibration against history and communicating a date you can defend

A practical method for estimating software projects: separate estimates from targets and commitments, decompose into describable tasks, give ranges, s…

Read article →
ARTICLE · 46

How to Estimate Cloud Cost, in depth: drivers, a bill of materials, unit rates, ranges with P50 and P90, and checking the estimate against the first bill

A practical method for estimating the monthly cloud cost of a system before you build it: turn business drivers into resources, resources into metered…

Read article →
ARTICLE · 47

How to Handle Legacy Code, in depth: characterization tests, seams, sprout and wrap, breaking dependencies and the strangler fig

A practical guide to changing code you did not write and cannot safely test: what makes code legacy, pinning current behaviour with characterization a…

Read article →
ARTICLE · 48

How to Pick a Log Library, in depth: facades and backends, call-site cost, async backpressure, OpenTelemetry and supply-chain risk

A practical method for choosing a logging library in Java, Python, Go, Node.js, Rust or .NET: the facade and backend split, what a disabled debug call…

Read article →
ARTICLE · 49

How to Pick a TypeScript Runtime, in depth: Node.js type stripping, Deno and Bun judged by the constraints that decide

A decision guide for choosing between Node.js, Deno and Bun for TypeScript in 2026: what each runtime does with types, Node's stable type strippi…

Read article →
ARTICLE · 50

How to Pick an LLM Provider, in depth: requirements, hard filters, an eval harness on your data, cost and latency models, contracts and an exit plan

A vendor-neutral method for choosing an LLM provider: separating model, platform and contract, writing requirements, applying data and compliance filt…

Read article →
ARTICLE · 51

How to Pick a Message Broker, in depth: queue, log or pub/sub, requirement by requirement, with a worked decision

A decision procedure for choosing a message broker: the three native shapes (work queue, log, pub/sub), the requirements that decide between them, how…

Read article →
ARTICLE · 52

How to Review a Design Doc, in depth: three reading passes, checking the numbers, comments that change the design, and the approval decision

A reviewer's guide to design documents: what review is for, a three-pass reading method (problem, design, failure), re-deriving the doc's nu…

Read article →
ARTICLE · 53

How to Review a Pull Request, in depth: one reviewer's session from triage to verdict, with reading order, local verification, risk hotspots, comments and re-review

A step-by-step method for reviewing a single pull request well: five minute triage, building context before reading code, a reading order that starts …

Read article →
ARTICLE · 54

How to Run a Load Test, in depth: from a written hypothesis and a workload model to a step test, the knee, a soak and a report people can act on

A step-by-step procedure for running a load test that answers a real question: writing the hypothesis, deriving a workload model from production logs …

Read article →
ARTICLE · 55

How to Run a Blameless Postmortem, in depth: triggers, roles, a merged timeline, contributing factors, a facilitation script and action items that actually close

A step-by-step procedure for blameless postmortems after an incident: when to hold one, who owns it, gathering evidence into a merged UTC timeline, an…

Read article →
ARTICLE · 56

How to Run an Incident, in depth: the incident commander operating rhythm, from taking command to the command loop, workstreams, decisions, handovers and standing down

A practical guide to running an incident as its commander: taking command, a 10 to 15 minute command loop, running the call, splitting workstreams by …

Read article →
ARTICLE · 57

Observability from Scratch, in depth: a two-week plan from the questions you need answered to OpenTelemetry, a collector, three stores and the first SLO alerts

A practical guide to building observability from nothing: start from the questions on-call must answer, set resource identity, instrument one service …

Read article →
ARTICLE · 58

How to Write a Design Doc, in depth: from problem statement to approved plan, with the numbers, alternatives and rollout written down

A step-by-step process for writing a design doc: deciding whether one is needed, the problem statement, the one-pager, drafting order, back-of-envelop…

Read article →
ARTICLE · 59

How to Write a Runbook, in depth: choosing what deserves one, mining incidents for steps, step grammar, a worked rewrite, novice dry runs and a linter

A practical method for writing operational runbooks: deciding which alerts need one, extracting steps from incident history and expert interviews, the…

Read article →
ARTICLE · 60

Instruction Files for Coding Agents: Writing AGENTS.md, CLAUDE.md, and Skills That Actually Work

How to write instruction files that coding agents follow: how AGENTS.md and CLAUDE.md are loaded and layered, what belongs in always-on files versus p…

Read article →
ARTICLE · 61

How to Learn Programming Effectively with AI Tutors and Coding Agents Without Losing the Skill

A practical method for learning to program with AI tutors and coding agents without outsourcing the skill: why generation feels like learning but is n…

Read article →
ARTICLE · 62

ML Systems Engineer Roadmap 2026: GPUs, Training, Inference, and Serving

A staged roadmap for ML systems engineers in 2026: how GPUs execute and move memory, the anatomy of a training step, mixed precision, data and model p…

Read article →
ARTICLE · 63

Reviewing AI-Generated Code: What to Check, What Breaks, and How to Scale Review

A practical guide to reviewing code written by AI assistants and agents: the defect classes that are more common in generated code, a reading order th…

Read article →
ARTICLE · 64

Securing AI-Assisted Development: Secrets, Supply Chain, and Prompt Injection in Developer Tools

A threat model and hardening guide for AI coding assistants and agents on developer machines and in CI: why an agent with shell access changes the ris…

Read article →
ARTICLE · 65

SPDD Day to Day: The Generate, Review, Fix-the-Prompt, and Sync Loop on a Real Feature

What Structured Prompt-Driven Development looks like during a working week on one feature: generating a single Operation with a bounded context, revie…

Read article →
ARTICLE · 66

The SPDD REASONS Canvas in Depth: Writing Each Section, with a Complete Template and Worked Example

How to write every section of the SPDD REASONS canvas well: the question each of Requirements, Entities, Approach, Structure, Operations, Norms and Sa…

Read article →
ARTICLE · 67

SPDD (Structured Prompt-Driven Development): Treating Prompts as Versioned Code, with a Worked Example

A practical guide to Structured Prompt-Driven Development: why ad hoc AI chats fail at team scale, the REASONS canvas, the six-step workflow, a comple…

Read article →
ARTICLE · 68

Adopting SPDD in a Team: Prompt Repositories, Review Rules, Governance, and Measuring Whether It Works

A practical guide to rolling out Structured Prompt-Driven Development across a team: deciding which work it applies to, a specs repository layout, COD…

Read article →
ARTICLE · 69

Spec-Driven Development with AI Coding Agents: From Spec to Plan to Tasks to Code

How to run spec-driven development with AI coding agents: the constitution, spec, plan and tasks artifacts, what each review gate checks, a worked inv…

Read article →
ARTICLE · 70

Test-Driven Development with AI Coding Agents: Red-Green-Refactor When the Agent Writes the Code

How to run test-driven development when an AI coding agent writes the implementation: who owns red, green and refactor, a worked shipping-fee example,…

Read article →
ARTICLE · 71

Vibe Coding vs Structured AI Engineering: When Each Works and How to Move from One to the Other

What vibe coding is and is not, where it genuinely works, the failure modes that appear as code lives longer and more people depend on it, a rubric fo…

Read article →
ARTICLE · 72

What Developers Should Learn in 2026: A Practical Roadmap for the AI Era

A practical learning roadmap for developers in 2026: which fundamentals still compound when AI assistants write much of the code, the systems knowledg…

Read article →

Views are my own and do not represent any employer, past or present.