Most of what separates a codebase that is pleasant to work in from one that is not comes down to conventions being enforced by machinery rather than remembered by people. This is standard on every project we run.
What that looks like on an average project.
$ bin/setup database dropped, created, migrated fixtures loaded, 2 tenants, every role credentials owner / admin / staff / customer ready on http://localhost:3000 4.1s
$ bin/test models 1,284 assertions 1.9s jobs 212 assertions 0.6s controllers 891 assertions 3.1s mailers 96 assertions 0.7s system (rack) 340 assertions 12w 6.4s system (js) 54 assertions 4w 9.2s 2,877 assertions, 0 failures, 0 skipped 22s coverage models 100% controllers 100% jobs 100%
Representative, not a target. Seconds, not minutes, and that is deliberate. A suite that takes twenty minutes stops being run, and a suite nobody runs is decoration.
How we operate
We do not hire people in order to manage them. No delivery manager, no ceremony, no status meeting that exists to reassure someone else. You get the problem, the context and the access.
It fails immediately with anyone who needs to be told what to do next, which is most of what we screen for.
Agents
We use coding agents where they earn their place, and our repositories carry written briefs for them. It has made us faster on the mechanical work. It has not changed what we are willing to ship, and the reason is worth stating plainly.
Generated code is fluent whether or not it is correct. It compiles, it reads well, it passes the tests that already exist. That removes the signal experienced reviewers have always relied on, which is that bad code usually looks bad. So the discipline has to carry the weight instead.
Teams with real test discipline get faster with this. Teams without it get faster at producing unverified change, which feels like acceleration for about a quarter.
Stack