Discover more from Matt Rickard
I've often written about developer velocity, but haven't formally defined it. In general, velocity is speed with direction. So I think of it like this:
Developer velocity is a measure of productivity related the rate of software changes.
Developer velocity isn't the whole of developer productivity. I think of developer velocity as post-commit workflow. Once a feature or change set is ready, how much "red tape" is there to get those changes out to customers? But "red tape" isn't just bureaucratic with software.
How fast can changes go from development to production? Most organizations don't have a continuous or automated pipeline, so a corollary to this is how often changes are deployed.
How often do changes fail? There's never true parity between development and production. It's why even in organizations with the most advanced tooling, you still see outages due to tough-to-test changes like BGP routing (see Meta). Flaky tests, flaky deploys, and bad deploys all create friction that works against developer velocity.
How fast does it take to reach desired state? Rolling back changes, patching security vulnerabilities, recreating environments? Even in automated systems, full build and deployment times can wildly vary. A build that takes an hour (like recompiling a Linux kernel) can make a deployment cycle frustratingly long. Longer loops mean less feedback for developers.