Skip to main content

Software Development Metrics

How do you know the engineering is getting better — not just busier?

The Engineering Quality Benchmarks define thresholds. This page tracks whether you're hitting them. Without both, standards are static checklists. With both, Deming's loop runs: Plan (set the threshold) → Do (build to spec) → Check (measure here) → Act (update the standard).

The Loop

STANDARDS (eng quality benchmarks)  → defines "module count < 200 per route"

BUILD (best practices) → developer follows checklists

DETECT (anti-patterns) → catch violations before they compound

MEASURE (this page) → did we hit the threshold?

BETTER STANDARDS → benchmarks evolve

Leading Indicators

Predict engineering quality before users encounter problems.

MetricThresholdToolCadence
Modules per route<= 200Module count scriptEvery build
JS bundle per page<= 200KB gzippednext build outputEvery deploy
Full typecheck0 errorstsc --buildEvery PR
New any or @ts-ignore0 added per PRGrep diffEvery PR
Module boundary violations0 on nx lintESLintEvery PR
eslint-disable countTrending to 0Grep + trackWeekly
export * outside entry-points0 instancesGrepWeekly
composite: true compliance100% of lib tsconfigsGrepAfter config changes
Build time (affected)<= 60 secondsCI timingEvery PR
Dev server cold start<= 15 secondsLocal measurementAfter dependency changes

Lagging Indicators

Confirm engineering quality through delivery outcomes. These are DORA metrics — the industry standard for software delivery performance.

MetricWhat It RevealsThresholdTool
Deployment frequencyHow often you shipDaily or more (Elite)CI/CD pipeline
Lead time for changesPR open to productionUnder 1 day (Elite)Git timestamps
Change failure rateHow often deploys breakUnder 5% (Elite)Incident tracking
Mean time to recoverHow fast you fix breaksUnder 1 hour (Elite)Incident tracking
Cycle timeCode to merged PRUnder 24 hoursGit + review tooling
Code churn rateRewrites within 2 weeksUnder 15%Git analysis
Build cache hit rateNx cache effectiveness>= 80%Nx Cloud or CI stats

Monitoring Cadence

FrequencyWhat to Check
Every PRType errors, boundary violations, new any usage, bundle size diff
Every deployModule count per route, build time, cache hit rate
Weeklyeslint-disable count, barrel hygiene, export * audit
MonthlyDORA metrics, cycle time trends, code churn rate
QuarterlyFull engineering quality audit against benchmarks, review which thresholds need updating

Feedback Path

When metrics reveal patterns, update the standard:

PatternAction
Module count consistently under 100Tighten threshold
Build time creeping above 60sAudit dependency graph for new barrel blowouts
eslint-disable count increasingBlock PRs that add new disables without justification
A threshold is always met effortlesslyAutomate it (CI check), remove from manual checklist
A threshold is never metEither fix the system or adjust the threshold with justification
DORA metrics stallingTrace bottleneck — usually review turnaround or flaky tests

If the system always prevents the violation, stop checking manually and let CI enforce it.

Dig Deeper

Context