Skip to content
tezvyn:

Versioning

53 bites tagged Versioning — interview questions with model answers, and 60-second explainers.

Docker & Kubernetes1 min read

Adding a required field to a live CRD

Don't make it required immediately; add it optional with a default, introduce a new version with conversion, migrate existing objects, then tighten. CRD schema evolution.

Design Systems1 min read

End-to-end process for a Modal props API break

Justify and design the change, additive rollout with deprecation, major release plus codemod, comms and adoption tracking. the full lifecycle of a breaking API change.

Design Systems1 min read

Technical and comms plan for a Button break

Additive-first then deprecate, major semver, codemod and guide, multi-channel early comms with adoption tracking. pairing technical migration tooling with communication.

Design Systems1 min read

Rolling out a breaking change to a shared Button

Major semver bump, deprecation period, codemod and migration guide, staged comms. managing a breaking change in a high-blast-radius component. forcing an immediate hard cutover with no deprecation window or upgrade tooling.

Design Systems1 min read

Versioning and shipping design tokens via NPM

Semver, deprecate-before-delete with aliases, codemods and migration guides. package versioning discipline for a shared dependency. silently renaming tokens and bumping a minor version, breaking every consumer.

MLOps & Infrastructure2 min read

How would you design a reproducible ML training pipeline?

Tests if you can version ML's three moving parts: code, data, and environment. Good answers cover Git for code, DVC or lakehouse versioning for data, and Docker plus locked dependencies for environments.

MLOps & Infrastructure2 min read

How would you implement versioning for feature definitions in a feature store?

Tests separation of metadata schema versions from data snapshots for reproducible training. Strong answers cover: immutable schema versions on breaking changes, safe appends without backfill, and time-travel data reads.

MLOps & Infrastructure2 min read

Why version code, data, and models in MLOps?

Tests immutable lineage across code, data, and models. Strong answers cover content-addressed data, git commits, a model registry linking both, and CI triggers on any change. Red flag: saying git alone handles data and models.

Go & Rust2 min read

go.mod: Root of Go Module Identity

A go.mod file anchors a Go module, declaring its canonical path and dependencies to turn a directory into a versioned unit. Every project needs one at its root, and the path dictates how others import your packages.

Design Systems2 min read

Release Cadence: The Design System Heartbeat

Release cadence is the heartbeat of a design system: a fixed shipping rhythm that lets teams plan upgrades instead of absorbing random change. It is vital when many squads share a library.

Design Systems2 min read

Changesets: PR Receipts for Monorepo Releases

A changeset is a receipt stapled to each PR that records what changed and how it bumps versions. It lets CI batch monorepo releases and generate changelogs automatically. The footgun is forgetting to add one, leaving unreleased code silently unpublishable.

CI/CD & Automation2 min read

How do you version shared CI steps and handle breaking changes?

This tests CI hygiene and consumer safety. Pin shared steps to immutable tags or SHAs, use semantic versioning, and force consumers to opt into breaking changes. Red flag: referencing a mutable branch like main for reusable workflows.

CI/CD & Automation2 min read

How do you version Docker images: Git SHA or SemVer?

Your grasp of immutable artifacts and traceability versus human-readable releases. Tag every build with Git SHA for immutability, then apply SemVer aliases only on promoted images. Treating floating tags like latest or v1 as safe production targets.

CI/CD & Automation2 min read

SNAPSHOT and RELEASE versions: differences and appropriate use

SNAPSHOTs are mutable; RELEASEs are immutable and tagged. Use SNAPSHOTs on feature branches and RELEASEs for main. Your grasp of artifact mutability and build reproducibility.

UI Design & Figma2 min read

Versioning a Design System with Semantic Versioning

Use Semantic Versioning (MAJOR.MINOR.PATCH) to signal the impact of design system changes. This tells teams if an update is a breaking change (MAJOR), a new feature (MINOR), or a bug fix (PATCH).

Node.js & Express2 min read

package-lock.json: Your Dependency Blueprint

package-lock.json is a blueprint for your node_modules, ensuring everyone on your team installs the exact same dependency versions. It's auto-generated by npm to prevent 'works on my machine' bugs. The footgun is ignoring it or manually editing it.

Node.js & Express2 min read

API Versioning: Managing Change Without Breaking Clients

API versioning lets you evolve an API without breaking existing clients. It's essential for public APIs or services with multiple frontends that can't update in lockstep. The footgun is delaying versioning, forcing a painful migration on early users.

Docker & Kubernetes2 min read

Docker Image Tagging: Versioning for Containers

A Docker tag is a human-readable label for a specific image version, like `ubuntu:22.04`. You use tags to pull specific base images or version your own builds. The biggest footgun is relying on the `latest` tag, which is just a convention.

Design Systems2 min read

Versioning Your Design System Documentation

Think of it like Git for your design system: you create immutable snapshots (versions) of your docs and components. This lets product teams build against a stable spec, even as the design system evolves. The footgun is poor versioning discipline.

Design Systems2 min read

Design System Versioning: One Package or Many?

Do you version your design system as one big package or as many small ones? The first ensures consistency, the second offers flexibility. This choice impacts how product teams consume updates.

Design Systems2 min read

Component Feature Flags: Opt-in to Breaking Changes

Component feature flags are a temporary opt-in switch for new versions, letting you adopt breaking changes before a major release. Design systems use them to roll out updates without forcing an immediate migration.

Design Systems2 min read

Semantic Versioning: The MAJOR.MINOR.PATCH Contract

Semantic Versioning (MAJOR.MINOR.PATCH) is a contract that tells users if an update will break their code. It's used by package managers to safely resolve dependencies.

Design Systems2 min read

Breaking Change Policy: Managing API Evolution

A breaking change policy is a contract with your users, ensuring disruptive API changes are predictable, not chaotic. It governs how you alter shared libraries or design systems, like removing a prop, to prevent downstream failures and maintain trust.

Design Systems2 min read

Design System Changelogs: For Humans, Not Machines

A design system changelog translates code changes into human-readable impact. It's a curated notice for consumers—not a raw git log. It's essential for communicating new components, token updates, and breaking changes so teams can adopt updates safely.

Get Versioning bites daily.

Five a day, five minutes, offline. With quizzes so it sticks.

Open testing — you’ll join as an early tester.