1
0 Comments

How I stopped waiting on other teams (and tripled my shipping speed)

I used to spend 40% of my week in Slack and Zoom sync meetings just to figure out why an endpoint wasn't behaving as expected. It felt like I was constantly begging for permission to ship my next feature.

The goal isn't just to write code, it is to ship value without needing a constant stream of status updates.

The cold logic of the contract

The breakthrough came when I stopped viewing APIs and shared modules as "technical implementations." I started treating every interface as a literal legal document. In modular systems, these are organizational treaties.

They define how teams interact. If you define a clear contract (the treaty), you eliminate the need to negotiate every time you want to release something. If the interface holds its end of the bargain, you can operate entirely independently.

Show the math

Let us look at the real cost of loose boundaries:

  • One hour of sync meeting costs at least three hours of lost deep work flow (and that should be multiplied by the number of engineers in that meeting).
  • A single "quick alignment" call often spawns three more follow-up meetings.
  • The result is a total destruction of your velocity.

Conversely, investing an extra two hours to formalize the interface as a strict, versioned contract saves you infinite time later. You never have to ask "is this safe to change" again. You just check the contract.

The "Treaty" mindset

Treaty-based development forces you to define clear boundaries. It stops the slow decay of your codebase because you are forced to think about the impact of your changes before you commit them.

  1. Treat interfaces as contracts. A change to the interface requires a renegotiation of the treaty, not a 30-minute sync call, and if the contract is good it should not change often.
  2. Automate the enforcement. If your "contract" is a JSON schema, use automated tests to ensure you never break the treaty.
  3. Decouple the teams. If your teams or modules have to talk constantly to get work done, your interfaces are failing you.

The ultimate prize is total autonomy. You ship when you are ready.

I am curious, how do you handle team dependencies? Do you treat your API or interface as a formal contract, or are they just suggestions that keep you in sync hell?

on March 13, 2026