Top 10 Platform Engineering Things You Must Know
· Sourabh G Kulkarni
A pragmatic guide to Internal Developer Platforms: golden paths, actionable self-service, ownership as code, and the operational guardrails that actually help teams ship faster.

Platform engineering is not about buying an Internal Developer Platform (IDP) tool off the shelf and mandating that every engineer use it. It is the discipline of designing and operating paved roads—curated toolchains and workflows that reduce developer cognitive load while keeping security, reliability, and cost within healthy bounds.
Here are the ten fundamental principles every platform engineer, DevOps lead, and engineering manager should know, with concrete real-world examples for each.
1. Developers are the customers, not captive users
A platform team that acts like an infrastructure DMV—issuing bureaucratic rules and forcing adoption—will always be bypassed. When developers feel blocked by rigid portals, they find shadow IT side doors: spinning up personal AWS accounts on corporate credit cards or writing bespoke scripts that run outside compliance checks.
- Real-World Example: Instead of mandating a portal via executive decree, measure Internal Net Promoter Score (NPS) and tracking Time to First Pull Request (TTFPR). Run monthly office hours and treat feature requests from product teams as product backlog items.
2. One solid golden path beats twenty half-baked options
Providing thirty different database engines, five container orchestrators, and seven CI systems isn't flexibility—it is an operational nightmare. A platform team of six cannot sustainably maintain production-grade security patches, backups, and 24/7 on-call expertise for fifty disparate technologies.
- Real-World Example: Declare one supported golden path for transactional workloads (e.g., managed PostgreSQL on RDS with automated backups, IAM auth, and connection pooling). If a team insists on Cassandra or MongoDB, they are free to run it, but they must maintain their own on-call runbooks and backups.
3. A template is the path made executable
A 40-page documentation wiki explaining "How to set up a new service" goes stale the week it is written. Documentation instructs; software templates execute.
- Real-World Example: Use Spotify Backstage software templates. An engineer selects FastAPI Microservice, enters a service name, and the template automatically provisions a GitHub repo with a multi-stage Dockerfile, a linter config,
/healthzendpoints, and a GitHub Actions pipeline in under a minute.
4. Build once, promote the same immutable digest
Rebuilding an image from source in each environment (Dev, Staging, Production) introduces environment drift. A package version that resolves during Tuesday's staging build might pull a subtly updated sub-dependency on Thursday's production release.
- Real-World Example: Compile code and build your OCI container image once in the CI pipeline. Tag it with its cryptographic commit SHA:
Promote that exact immutable image digest through Dev, UAT, and Production approval gates without rebuilding.
export IMAGE="registry.internal/checkout-service:sha-a8f3b12"
5. Ownership must be declared as code in the catalog
When an API error rate spikes at 3 AM, the on-call engineer shouldn't have to play detective across GitHub commit history to figure out who owns the code.
- Real-World Example: Require a
catalog-info.yamlat the root of every repository registered with the developer portal:If an alert fires in Grafana or Datadog, the dashboard links directly to the owning team and their current on-call rotation.apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: billing-engine annotations: pagerduty.com/service-id: P123ABC spec: type: service owner: group:payments-team
6. Self-service stops at the happy path
Automating 100% of every conceivable edge case creates bloated, unmaintainable platforms. Design self-service automation for the common 80%—standard web services, worker queues, standard cron jobs, and caching layers.
- Real-World Example: The self-service portal handles standard microservice provisioning with predefined CPU/memory limits. If a team needs GPU instances for an LLM fine-tuning job or high-throughput Kafka clusters across multiple availability zones, they consult with the platform team for an architecture pairing session. That conversation informs future platform capabilities.
7. The golden path is opt-out, but exceptions must be documented
Enforcing a platform as an inescapable prison breeds resentment and slows innovation. High-performing organizations allow teams to opt out of the golden path—provided they accept the operational responsibility.
- Real-World Example: If a team needs Rust instead of Go for sub-millisecond trading latency, they write an Architecture Decision Record (ADR) detailing why the paved road was insufficient, how they will handle base image patching, and who will be paged when it fails. A documented exception prevents quiet, unmanaged forks.
8. Observability and security belong inside the skeleton
If you rely on developers to remember to configure Prometheus metrics scrapers, OpenTelemetry trace exporters, and security linters after their app is built, it won't happen until an outage or compliance audit forces the issue.
- Real-World Example: Bake telemetry directly into the base service skeleton:
- Default
/metricsendpoint exposed for Prometheus. - Automatic OpenTelemetry middleware injecting trace IDs into HTTP response headers.
- Pre-configured GitHub Actions step running
trivyorsnykcontainer scans on every PR.
- Default
9. Rollback is a core platform primitive, not an afterthought
If rolling back a broken production deployment requires checking out an older git tag, making a hotfix commit, and waiting thirty minutes for a pipeline to build, your platform is incomplete.
- Real-World Example: Decouple deployment from release. Use Kubernetes deployment rollouts or blue/green traffic shifting:
One-click rollback restores service health immediately; post-mortem debugging can happen safely afterward.
# Instant rollback to previous known-good deployment kubectl rollout undo deployment/checkout-service -n production
10. The paved road is a highway, not a cage
The goal of platform engineering is high velocity with high confidence. A great platform does not eliminate developer autonomy; it eliminates unnecessary undifferentiated heavy lifting.
- Real-World Example: A product engineer shouldn't spend their week debugging IAM trust policies, configuring Kubernetes Ingress cert-managers, or tuning Terraform remote state locks. They should focus on customer-facing features, confident that the platform beneath them is robust, compliant, and observable.
Conclusion
Platform engineering succeeds when it makes the secure, resilient, and observable choice the easiest and fastest choice for developers. When platforms are built with empathy, clear guardrails, and executable golden paths, velocity and stability improve together.