Regatta-Driven Development: A Manifesto
It's important to note that, in the realm of modern software delivery, the humble two-week sprint and the storied yacht regatta have far more in common than is typically acknowledged. Let's delve in.
The thesis
Every sprint is, fundamentally, a regatta. There is a starting line (Monday standup), a finish line (a slightly emotional retro), and somewhere in the middle a single product manager waving frantically at a buoy. The wind is whatever the upstream API decided to do that morning. The rocks are the things you forgot to write tests for.
The four principles
1. Tack early, tack often
In sailing, "tacking" is the act of zig-zagging into the wind to make forward progress. In engineering, this is called "rewriting the same function three times before lunch." Both are completely normal. Both require a captain who is calm and a crew who has accepted their fate.
2. The lightest yacht wins
A boat carries only what it must: sails, rope, water, and a single sandwich for the captain. A backend service should be the same. If you cannot justify the dependency in one sentence — and that sentence cannot be "it was already in the lockfile" — it goes overboard. We are not running a buffet; we are running a regatta.
3. Trust your charts, but check the depth
A nautical chart will confidently tell you the seabed is 14 meters down
right up until the moment it isn't. A type system will confidently tell
you a value is a User right up until someone in another service
renames a field. The chart is not the territory. The schema is not the
wire format. Sound the depth before you commit.
4. The retro is the post-race debrief, but with worse coffee
A good crew gathers after the race to discuss what went well and what nearly killed them. A good team does the same. The crew, however, has the decency to do this on a wooden deck in golden hour, while you are doing it on a Zoom call, and your camera is off, and someone keeps saying "can you see my screen?"
A note on velocity
Velocity, in sailing, is measured in knots. Velocity, in agile, is measured in story points, which are not units of time, distance, or anything that physically exists. Knots are at least real. Adopt knots. Tell your manager the team did 7.4 knots this sprint. Refuse to elaborate.
Conclusion
Software is not, in fact, a regatta. But the metaphor was holding up suspiciously well for ~600 words, and the AI was reluctant to let it go. Sail safely. Ship safely. Pin your dependencies — see the next post for regrettably more of this.