Tooling MOC
Date: 2026-08-16
Everything around the code. Tooling is where an individual habit becomes a team guarantee.
Version control
- Git Model — commits, trees, refs and the DAG. Understand this once and every git confusion resolves
- Branching Strategies — trunk-based, GitHub flow, git flow, and the release cadence each assumes
- Merge vs Rebase — two histories, two philosophies, and when each is wrong
- Resolving Conflicts — what a conflict actually is, and how to stop causing them
- Git Bisect — binary search through history to find the commit that broke it
- Rewriting History — interactive rebase, amend, and the rules about shared branches
- Commit Hygiene — messages, atomicity, and why it’s for the person doing the bisect in a year
- Code Review — what to look for, what to leave, and reviewing for the change rather than the code
Dependencies
- Package Managers — npm, pnpm, yarn: resolution, hoisting, and disk layout
- Lockfiles — reproducible installs, and why committing them isn’t optional
- Semantic Versioning — what the three numbers promise, and how often that promise holds
- Dependency Management — update cadence, transitive dependencies, and audit noise
- Supply Chain Risk — the attack surface every install adds
Build
- Build Tools — what a bundler actually does, and the stages of the pipeline
- Vite — dev via native ESM, production via a bundler, and why that split works
- Module Bundling — resolution, graphs, chunks and output formats
- Transpilation — Babel, SWC, esbuild, and target compatibility
- Source Maps — debugging generated code, and the decision about shipping them
- Build Caching — local and remote caching, and what makes a build reproducible enough to cache
Quality
- Linting — ESLint’s model, rules as team decisions, and lint-as-documentation
- Formatting — Prettier and the argument formatting tools exist to end
- Type Checking in CI — where types stop being an editor nicety
- Static Analysis — going beyond lint: complexity, dead code, dependency rules
Testing
- Testing Strategy — the pyramid, its critics, and deciding what to test rather than how much
- Unit Testing — the unit boundary, and why picking it badly makes tests fragile
- Integration Testing — testing the seams, which is where the bugs live
- End-to-End Testing — Playwright and the real-browser tier
- Test Doubles — stubs, mocks, fakes, spies: four things routinely called mocks
- Test Data — factories, fixtures, and keeping tests independent
- Flaky Tests — the causes, and why tolerating one is how a suite dies
- Visual Regression Testing — screenshot diffing, and its false-positive problem
- Evaluating Non-Deterministic Systems — testing what won’t answer the same way twice: eval sets, judges, and what “good enough” means as a number
- Accessibility Testing — what automated checks catch, and the large share they can’t
Continuous integration
- Continuous Integration — the practice, not the product: integrating often enough that conflicts stay small
- Continuous Deployment — shipping automatically, and the confidence prerequisites
- Pipeline Design — stages, parallelism, caching, and keeping it under the attention span
- Pre-Commit Hooks — fast local checks, and the ones that belong in CI instead
- Preview Environments — a URL per pull request, and how much review it unlocks
Working environment
- Monorepos — one repo, many packages: what it solves and what it costs
- Containers — Docker as environment reproducibility, and the local-dev tradeoff
- Environment Configuration — env vars, config precedence, and secrets that shouldn’t be in either
- Local Development Setup — the onboarding cost nobody measures
- Debugging Techniques — breakpoints, bisection, logging discipline, and rubber-ducking as a method
- AI Coding Tools — where they help, where they confidently don’t, and reviewing generated code properly
Borders
Filed in other domains, needed constantly here.
- Platforms — GitHub Actions · Vercel · BigQuery