EngineeringPlatform Engineering

Golden paths beat golden cages

An internal platform has earned its place when developers would still use it if it were optional. Here's how to make the supported route the fastest one, keep it current, and let teams leave it safely.

Cohash Engineering Practice May 2026 updated October 2026 11 min read 6 chapters 3-question check
part 3 of 8 · Cloud calls you'll have to make
GOLDEN CAGE Adoption by mandate Coverage as themetric Shadow deployscripts Leaving is forbidden GOLDEN PATH Chosen when optional Fastest route toproduction Template updateskeep coming Escape hatch owned,visible

the ideaA platform has proved itself when developers would still use it if it were optional.

after reading, you can
  • Tell mandated coverage apart from voluntary adoption, and pick metrics like time-to-first-deploy that show real choice.
  • Spell out what one scaffold command should produce, so that going through the platform is the fastest way to production.
  • Set up an escape hatch with a deviation record, on-call handed to the team that leaves, and a review now and then.

Every internal platform claims to make developers faster. The honest test is brutal: if usage were optional, would anyone still use it? A golden pathdefinitionOn an internal platform, it's the supported, ready-made way to build and ship a service, designed to be the easiest correct option. gets traffic because it's the easiest correct way to ship. A golden cage gets traffic because someone mandated it, and a mandate is the most expensive way to hide that your platform lost the argument.

in plain wordsPractice guide

Your platform is the shared toolkit developers use to ship software. It only works if they'd pick it anyway

Many companies with several software teams end up building an internal platform. It's the shared setup every team uses to create a new service, test it, put it live and keep an eye on it. A golden path is the ready-made, supported way through that setup. When it's done well, a developer runs one command and gets a working project with the safety checks already switched on. When it's done badly, teams are told to use it, find it slow, and quietly build their own workarounds. You end up paying for the platform and for the workarounds, and nobody can see the second bill.

think of it like this

Think of a company travel portal. If booking through it is quicker than booking yourself, people use it without being told, and finance gets clean records for free. If it's slower, people book on their own cards and claim it back later. The policy still says everyone uses the portal, but the real spending has moved somewhere nobody is watching.

who should care
  • CTOs and heads of engineering
  • Platform and DevOps teams
  • Product teams shipping services
  • Business owners funding a platform
  • Security and compliance teams
chapter 01

Why it matters to you

We treat a platform like anything else we build: it has to survive checking. For an internal platform, the thing you can actually check is adoption. Whether teams pick it up depends on the engineering choices below. Get one wrong and it tends to show up months later as slow releases or an audit finding.

Platform teams love to report coverage ("90% of services are on the platform") while the mandate behind the number does the real work. Mandated adoption tells you nothing, because the alternative was a policy violation. Worse, it breeds shadow platformsdefinitionTooling a team quietly runs itself, like private deploy scripts, because the sanctioned platform is too slow for them.. Think of the team that quietly runs its own deploy scripts because the sanctioned pipeline costs them a day per release.

For a business owner, those shadow scripts are where the risk sits. Nobody patches them, nobody scans them, and the person who wrote them may have left. The platform report still says everything is covered, so the gap only shows up when something breaks or an auditor asks how a service got to production.

Measure what developers do when they have a choice instead. Voluntary onboarding rate is one. Time-to-first-deploy for a new service is another, and so is how often teams who left come back. Treat the platform as a product with internal customers who can churn. They can, and the ones who churn silently are the ones you learn nothing from.

how it worksHow a golden path earns its adoptionEach step is something a team can see for itself. If one of them is slower than doing it by hand, teams start walking around the platform.
  1. 01 A team needs a new service

    Someone has a feature to build and wants it live soon. They'll take whichever route gets them there first.

  2. 02 One command builds the project

    The scaffold hands them a repository with the pipeline, logging and security checks already wired. Nobody files an access ticket.

  3. 03 It reaches production the same day

    Teams notice when the supported route is quicker than doing it by hand. After a couple of releases they stop looking for another way.

  4. 04 Template fixes keep arriving

    The platform team fixes something in the template, and older services get the same fix as an automated pull request. Nobody hand-patches it later.

  5. 05 Some teams step off, on the record

    A workload the platform can't serve leaves through an escape hatch. The team writes down why and takes over its own on-call.

  6. 06 Repeated exits become features

    When several teams leave for the same reason, the platform team usually builds that next. Those exits told them what to build.

chapter 02

What changes when the path is golden

side by sideThe same platform budget, spent two ways
Golden cage
  • Teams are on it because a policy says so
  • Success is reported as coverage
  • Slow teams run their own deploy scripts in the shadows
  • Templates help on day one, then services drift
  • Leaving is forbidden, so leaving happens quietly
Golden path
  • Teams would choose it even if it were optional
  • Success means voluntary onboarding and a quick first deploy. Those show what teams pick when they have a choice.
  • The supported route gets a team to production faster than building it themselves. Nobody has to be told to use it.
  • Template updates keep reaching existing services
  • Teams can leave through an escape hatch. They write down why and carry their own pager.

Teams pick the paved road when the default path already bundles everything they'd otherwise assemble by hand. One scaffolddefinitionYou run a command or template and get a new project with the structure and standard setup already in place. Nobody on the team assembles it by hand. command should give them a repository with CI/CD wired and observability instrumented. Security scanning should be on, secrets management configured and an owner recorded in the service catalogdefinitionOne central list of every service an organization runs, with who owns it and how to reach them, including on-call.. Backstage-style software templates work well here.

Leave compliance out of the pitch to delivery teams and talk about time. The platform route reaches production this afternoon. The artisanal route reaches it next month, pending four access tickets. Sensible defaults do the rest of the persuading. Structured logs and health endpoints should arrive without anyone asking, and so should dependency pinning.

paved-road scaffold (example output)example output
# one command, production-shaped from minute one
$ platform create service --template api-service
  ci/cd: pipeline wired · deploy on merge
  observability: logs + traces + golden-signal alerts
  security: SAST · dependency scan · secrets vaulted
  catalog: owner registered · on-call linked
  escape hatch: documented · deviations owned by your team
✓ time-to-first-deploy: same day

The road also has to stay paved. A template that scaffolds beautifully and then abandons its services is a one-time gift, and a gift doesn't make a platform. Six months later every team is hand-patching the same CI upgrade the template already fixed for new arrivals.

If your platform needs a mandate to get adopted, the mandate is measuring the gap between what you built and what developers needed.
chapter 03

What to do now

What to do now, by who you are

Business owner or CTOthis month
  • Ask the platform team which teams joined without being told to. If nobody can say, the coverage number you've been shown doesn't tell you much.
  • Ask how long a brand-new service takes to reach production on the platform. As a rough guide, days are fine. Weeks mean teams are probably going around it.
  • Fund the platform like a product, with someone who listens to the teams using it. A platform nobody maintains slowly turns into a cage.
Platform teamthis quarter
  • Start tracking voluntary onboarding, time-to-first-deploy and how many teams come back after leaving.
  • Time your own scaffold from empty folder to first production deploy. Then fix whatever step makes someone wait.
  • Set up automated pull requests that carry template updates into services that already exist.
  • Write down how the escape hatch works, on one page. A team leaving should know what to record, which work it takes over and when you'll check back.
Developers and delivery teamsnext new service
  • Try the paved road first and time it. If it's slow, tell the platform team which step held you up.
  • If you need to leave the road, write a short deviation record. Say what you're doing differently, why, and who carries the pager.
Security and compliancethis quarter
  • Ask for the list of services that left the paved road, with their deviation records. Those are the ones to review first.
  • Use the drift scorecard as a starting point for audits. It shows which services are behind the current baseline and by how much.
chapter 04

Harden so the next one hurts less

Sooner or later a workload shows up that the platform wasn't designed for. Maybe the ML team needs GPUs the pipeline doesn't schedule. Maybe an edge service has latency budgets the standard runtime can't hit. A cage forbids leaving, while a path prices it.

So make leaving through the escape hatchdefinitionAn approved route off the standard platform path, for a workload the platform can't serve. Whichever team leaves picks up the extra operational work itself. legal and visible, and owned. The team writes a short deviation record saying what they're doing differently and why, and they explicitly take over the operational burden the platform was absorbing. If you left the paved road, you carry your own pager.

The durable fixes, in the order we'd do them

  1. 01
    Measure choice, not coverage

    Report voluntary onboarding rate, time-to-first-deploy and how often teams who left come back. Drop coverage from the headline. A mandated number hides the teams that are quietly going around you.

  2. 02
    Make one command do the whole setup

    The scaffold should wire CI/CD, logging and tracing, security scanning and vaulted secrets, and record an owner in the service catalog. If a team still has to raise a ticket to ship, that ticket is your next fix.

  3. 03
    Treat scaffolded output as a managed surface

    Automated pull requests roll template updates into existing repositories. Teams review and merge them like any other change, so a CI fix made once reaches every service that merges it instead of only the new ones.

  4. 04
    Give every service a drift scorecard

    Each service gets a scorecard showing where it has drifted from the current baseline. Drift you can see is a to-do list. Drift you can't see is next year's security finding.

  5. 05
    Open a governed escape hatch

    A team that leaves writes a deviation record and takes over the on-call and upkeep the platform used to handle. Nobody gets punished for leaving. The reason sits on file, so you can check later whether it still holds.

  6. 06
    Review deviations now and then

    Check periodically whether the reason still holds. Deviations stay in the open that way, and they double as a roadmap. Three teams escaping for the same reason is the platform's next feature, discovered for free.

before

Before: the platform scaffolds once and walks away. Older services drift.

New services start from the template, then drift. Teams that find the pipeline slow run their own deploy scripts, and nobody sees those on any report.

Before: the platform scaffolds once and walks away. Older services drift. New services start from the template, then drift. Teams that find the pipeline slow run their own deploy scripts, and nobody sees those on any report. 01 · TEAMS 02 · PLATFORM 03 · PRODUCTION scaffold once no updates too slow, go around unseen deploys mandated route Delivery team told to use the platform Shadow deploy scripts unscanned, unowned Template used once at creation Sanctioned pipeline a day per release Services drifted from baseline © Cohash · cohash.com
01 · TEAMS02 · PLATFORM03 · PRODUCTION Delivery team: told to use the platform Delivery team told to use theplatform Shadow deploy scripts: unscanned, unowned Shadow deployscripts unscanned, unowned Template: used once at creation Template used once atcreation Sanctioned pipeline: a day per release Sanctionedpipeline a day per release Services: drifted from baseline Services drifted from baseline scaffold once no updates unseen deploys mandated route © Cohash · cohash.com
after

After: a paved road that stays paved

The scaffold wires everything on day one, template updates keep flowing as pull requests, and teams that leave do it through a recorded escape hatch with their own on-call.

After: a paved road that stays paved The scaffold wires everything on day one, template updates keep flowing as pull requests, and teams that leave do it through a recorded escape hatch with their own on-call. 01 · TEAMS 02 · PLATFORM 03 · PRODUCTION one command automated PRs drift visible owner recorded when it can't fit on the record Delivery team chooses the platform Escape hatch deviation record, own pager Template managed surface Service catalog owner and on-call Drift scorecard per service Services current baseline © Cohash · cohash.com
01 · TEAMS02 · PLATFORM03 · PRODUCTION Delivery team: chooses the platform Delivery team chooses theplatform Escape hatch: deviation record, own pager Escape hatch deviation record,own pager Template: managed surface Template managed surface Service catalog: owner and on-call Servicecatalog owner andon-call Drift scorecard: per service Driftscorecard per service Services: current baseline Services current baseline one command automated PRs drift visible on the record © Cohash · cohash.com
chapter 05

If it goes wrong

If the platform rollout goes wrong

It often shows up as a stalled rollout or a pile of exception requests. Sometimes an audit finds services nobody knew about. Resist tightening the mandate and work through these phases instead.

  1. 01Stop the bleedingfirst week
    • Pause any new mandate or deadline. Forcing teams on now just pushes more work into the shadows.
    • Make a list of every way services actually reach production, including the scripts teams run themselves.
    • Put a basic security scan and an owner on every shadow route you find, even before teams move back.
  2. 02Find out whyfirst two weeks
    • Sit with two or three teams while they ship something. Write down every step where they wait or work around the platform.
    • Take a brand-new service from scaffold to production and time it. Then ask a team how long their hand-built route takes, and compare.
    • Read the exception requests. When the same reason keeps coming up, you've found a missing feature.
  3. 03Fix the roadfirst month
    • Remove the slowest step first, often an access ticket or a manual approval. Then time the route again.
    • Turn on automated template updates so existing services catch up with the current baseline.
  4. 04Win teams backfirst quarter
    • Offer the shadow-script teams a migration they'd actually want, with someone from the platform team doing the work beside them.
    • Give teams that need to stay off the road a proper escape hatch, with a deviation record and their own on-call.
  5. 05Report and learnongoing
    • If an audit found the gap, show the auditor the list of production routes, the drift scorecard and the deviation records, and agree dates for the rest.
    • Report voluntary adoption and time-to-first-deploy to leadership from now on, so the next problem shows up early.
chapter 06

What this can look like

What this can look like

01 Slow pipeline a day per release 02 Shadow scripts no security scan 03 Production unseen changes
scenario 01High risk
A growing software company with a mandated pipeline
the setup
A SaaS company has a dozen product teams and an internal platform everyone is required to use. The quarterly report says almost every service is on it.
what happens
Releasing through the sanctioned pipeline costs a team a day, so two teams quietly deploy with their own scripts. Those scripts skip the security scan, and nobody outside the team knows they exist.
what to do
Stop counting coverage and time the pipeline. Fix the slow step, then help those two teams move back with a migration they'd actually choose.
01 Template fix 02 Automated PRs to existing repos 03 Driftscorecard per service 04 Audit finding
scenario 02Medium risk
A regional bank whose templates stopped at day one
the setup
A regional bank's platform team has a good scaffold, and new services come up well configured. Older services are never touched again after creation.
what happens
A CI fix goes into the template, but only new services get it. Every older team hand-patches the same change, and an internal audit finds services far behind the baseline.
what to do
Send template updates to existing repositories as automated pull requests. Give each service a drift scorecard, and show it to the auditors.
01 GPU workload 02 Escape hatch deviation record 03 Own on-call 04 Platformroadmap GPU scheduling next
scenario 03Low risk
A retailer whose ML team needs GPUs
the setup
A retailer's standard pipeline doesn't schedule GPUs. The machine learning team needs them to train models, and so do two other teams.
what happens
With no approved way off the platform, each team builds its own setup. Nobody records it, and the platform team never learns that three teams left for the same reason.
what to do
Open a governed escape hatch. Each team writes a deviation record and takes its own on-call, and the platform team puts GPU scheduling on the roadmap.

We build web platforms the way we'd want to use them ourselves. Usually that means one scaffold that does the whole setup and a pipeline that's quicker than anyone's homemade script. Then we keep template fixes flowing to services that are already live. If you want a second opinion on whether your teams would still choose your platform, start with an assessment. Our web development team does this work.

key takeaways

What to take from this

  1. 01

    Measure voluntary adoption. Mandated coverage tells you nothing about whether a platform works, because teams had no choice.

  2. 02

    Make the default path the fastest path. Teams should get CI/CD, observability and security already wired from one scaffold command.

  3. 03

    Keep the road paved. Automated pull requests and a drift scorecard stop older services from falling behind the template.

  4. 04

    Don't ban escape hatches; govern them. When a team documents a deviation and owns its operational cost, that's roadmap input.

fact-checked October 2026 against vendor and official documentation · where to go next
  1. Web development practice
  2. Book a 30-minute working session with a senior engineer
01Our engineers keep mentioning an internal developer platform. What is it, and why would we pay for one?

It's the shared setup your software teams use to create a service, test it, put it live and watch it. Instead of every team building its own pipeline and monitoring, one platform team builds it once and everyone reuses it. It only pays off if teams actually want to use it.

02We already made the platform mandatory. Is that a problem?

It can hide whether the platform works. Ask how long a new service takes to reach production, and which teams joined before the rule existed. If the answers are slow and few, someone is probably deploying around it. Those workarounds are where your risk sits.

03Teams keep asking for exceptions. How do we know if they're going around the platform?

List every way code actually reaches production, including scripts teams run themselves. Then compare that list with what the platform report says. Exception requests and the services missing from the service catalog usually point to the gaps.

04Won't an escape hatch just let teams ignore our rules? We set the platform up for a reason.

Only if it's unmanaged. A governed escape hatch asks the team to write down what they're doing differently and why, and to carry their own on-call. The platform team reviews it now and then, so a team can't leave quietly and get forgotten.

next step

Tell us what you're running. We'll tell you what we'd do first.

A 30-minute working session with a senior engineer. No slides.

useful to bring
  • The platform and the version you're on
  • Where you need to get to, and by when
  • What's custom: rules, plugins, integrations
  • Any audit finding or deadline driving it