In practice, we deliver value. What practices (techne) are worth knowing?
§Ability to ship increments of working code in 15 minutes to two
hours
Context. Given a level of individual expertise and
codebase quality, it’s possible to solve real problems and ship the
solutions to master in 15 minutes to two hours. Why can I say this?
Because I’ve seen it working with Sindre and Oddmund. See also Fred George talk
about teams working in this rhythm.
List of techniques that help enable shipping rapid increments.
Codebase is decoulpled and can be tested in isolation.
We have tests for our business logic, and we can change the business
logic without fear.
We have automated tests runnning elsewhere, and can see exactly
which commits pass the tests.
We can iterate quickly on our code and our tests locally, writing
new code and re-running the tests in ~10-15 seconds
We can spin up a local development environment in a few seconds
We are comfortable juding which changes are safe to
make
Our codebase are structured such that a significant amount of our
changes are safe to make
We limit mutation in our codebase to where it is approperiate
We automate operational work
We are able to leverage feature flagging to limit work in progress
(inventory) and to enable insight into the real system
§Tastefully understand how code changes, product features and
product outcomes connect
Code changes power product features
Product features power product outcomes
The motivation for doing stuff is product outcomes, but we
must balance product outcomes with codebase quality.
Sometimes it’s easier to ship a big thing by cutting it up into
multiple smaller pieces (eg an incremental migration)
Sometimes it’s impossible to cut a big thing into smaller pieces (eg
users must see real product in order to provide real feedback in real
context)