Skip to main content

Common Errors in the Paved Path metaphor

·761 words·4 mins

There’s a common error in metaphor of “Paved Paths”, especially in Platforms.

How most people talk about the Paved Path #

Most people say something like “we’re going to build a platform that makes it really easy for a developer to deploy their Java code to an EC2 instance, with automatic load balancing. That’s our “Paved Path” for Java developers.”

But I disagree that this is a Paved Path. It’s a Vehicle.

A different way of thinking about Paved Paths #

At it’s simplest, a paved path is like a road.

Very few road users interact directly with the road. They use a vehicle to move along those roads.

Because roads can be dangerous places, there are regulations:

  • characteristics of vehicles to be allowed on the road (license plates, lights, emissions)
  • how vehicles and drivers are allowed to use the road (speed limits, no right turn on red)
  • requirements for roads and environments themselves (signage, lane markings, surface depth, etc)

A Paved Path is the road and it’s regulations.

Vehicles #

There’s a spectrum for those “vehicles”:

  • Custom/Boutique/Concept Vehicles: you could build a kit car by hand completely by scratch, fabricating every part, and be good to go as long as you followed the rules / “Required Behaviors”.
    • You can go anywhere (even offroad for a bit sometimes!).
    • You can basically do anything you want inside the car (listen to loud music, go barefoot, etc).
    • You’re solely responsible for every bit of this car and its maintenance, which means you have to know $$everything.
    • Radical change often shows up in this class. (Seatbelts started in this category, ~75 years before the first seat belt law!)
  • Opinionated Implementations: you can buy a car from a manufacturer, and you move the decision making about what that car is and can do to the mfr.
    • You trust that the MFR made the car meet the rules of the road.
    • You can still go anywhere the road reaches, but you might break some rules yourself.
    • You can basically do anything you want inside the car.
    • You’re responsible for some of the maintenance, or you have a trusted mechanic to do some of it.
    • It helps (is faster/cheaper) if you understand how the car works (how do I keep the tires full, know when I need gas, how to change the oil, etc).
    • Change here is often slow and incremental, unless regulations require a change.
  • Mass Transit: you buy a ticket and go only to the stops that are pre-determined and fit most users.
    • The rules are extremely rigid (no food, no pets, no bare feet, earbuds only, etc).
    • You can’t change anything about the vehicle, or the stops it goes to.
    • Some other group (normally a lot of people) is responsible for driving, maintaining, cleaning, etc. Change here is glacial and requires massive investment.

Applying the metaphor #

Your Paved Path should be the constellation of things that your organization requires for any way of doing things. These are required behaviors, not required implementations. Some examples might include:

  • pre-merge, pre-deploy required peer review or automated testing results
  • PII Data is handled according to our obligations
  • cost allocation occurs in a way that is visible to finance, et al.
  • AuthN/AuthZ works like our organization needs it to
  • audit logs are discoverable and ingestable in way that the org expects

The things you build that accelerate or make using the path easier than building 100 concept cars are the Vehicles that Platform organizations build and maintain.

Concrete examples:

  1. “We have GitHub orgs that require passing tests and a peer review before deployment & merging” is a paved path.
    • Anyone could build a “kit car”, or market a car, or start a transit service that complies with this rule of the road.
  2. Using github safe-settings to apply required checks on repos is an opinionated implementation/mass-transit.
  3. “GitHub actions that run a generic Makefile and test suite” is somewhere between a concept car and a manufactured car.
  4. “A build team that is responsible for Bazel in monorepos” is somewhere between a manufactured car and mass transit.
  5. EKS + Helm + ArgoCD is somewhere in the opinionated implementation space.
  6. Lambda is most like Mass Transit.

Closing thoughts #

When we accidentally talk about Vehicles and ignore the Paved Path, the rules of the road are not documented, and default to “the vehicle is the rule”. This is where we get into trouble.

If the rules of the road are the tool, then we can never change the tool. We are also not likely to experiment or adopt new beneficial technologies quickly.