Learning objectives
By the end of this module, you should be able to:
- Explain the difference between a toolchain, a platform team and a platform product.
- Identify a repeatable developer problem worth turning into a self-service capability.
- Define product outcomes and adoption signals for an internal platform.
Platform as product: the platform is an internal product
Platform engineering builds reusable capabilities and interfaces that let application teams safely consume infrastructure, delivery, security and operational services. The platform team owns the product experience; developers are its primary users.
A portal alone is not a platform. A useful platform has contracts, automation, guardrails, support boundaries and feedback loops.
- Product discovery
- Supported interfaces
- Golden paths
- Self-service
- Feedback and adoption
Start from developer friction
Choose high-volume, repeatable work that currently requires tickets, tribal knowledge or expert intervention. Automating an uncommon edge case before a painful common path usually produces little adoption.
Abstraction should remove toil, not evidence
A developer should not need to understand every implementation detail, but the platform must still expose ownership, change status, health, policy failures and rollback paths.
Worked example
From ticket queue to product capability
Repeated request → user journey → platform contract → automation → guardrails → evidence → feedback
- The platform interface is designed from a user need, not from whichever tool the platform team prefers.
- A capability is successful when developers can use it safely without the platform team becoming the human API.
Core lab · account-free
Lab 01 — Score candidate platform capabilities
Goal: Rank three repeated requests and select one golden-path candidate.
Before you start
- No cloud account required.
- Core lab uses bash/Python 3 and local files only.
STEP 1Create candidate data
cat > /tmp/platform-candidates.json <<'EOF'
[{"name":"new-service","frequency":9,"pain":8,"repeatable":9},{"name":"one-off-migration","frequency":2,"pain":9,"repeatable":2},{"name":"test-environment","frequency":8,"pain":7,"repeatable":8}]
EOF
STEP 2Rank the work
python3 - <<'PY2'
import json
items=json.load(open('/tmp/platform-candidates.json'))
for x in items:x['score']=x['frequency']*x['pain']*x['repeatable']
for x in sorted(items,key=lambda x:x['score'],reverse=True):print(x['name'],x['score'])
PY2
STEP 3Write a product outcome
For the top candidate, write one measurable user outcome such as lead time, ticket reduction or successful self-service rate.
Verify
- The selected capability is high-frequency, painful and repeatable.
- The proposed metric measures developer outcome rather than platform activity.
Expected outcome
- A ranked list and one explicit platform-product hypothesis.
Diagnose / troubleshoot
- If every request scores highly, narrow the user segment or workflow.
- If the metric is only “number of templates,” rewrite it as a user or delivery outcome.
Real-world connectionStrong platform backlogs are driven by recurring developer journeys and evidence, not by tool popularity.
Real-tool practicum · optional but recommended
Optional tool lab — map a developer journey
Represent one current workflow in a ticket/whiteboard or Backstage-oriented service blueprint.
Prerequisites
- Use a disposable local lab or organization-approved sandbox.
- Pin tool versions in real platform automation; do not blindly depend on latest.
Cost / risk
- Core learning is account-free. Optional external/sandbox tools may consume local CPU/RAM; do not use production credentials or billable cloud resources.
Warnings
- Do not point training automation at production clusters, repositories or cloud accounts.
- A successful command is not proof of a good platform interface; validate the developer outcome and guardrails.
TOOL 1printf '%s
' 'request -> approval -> repo -> environment -> deploy -> observe'
Avoid these traps
Common mistakes
- Building a portal before understanding developer needs.
- Measuring success only by platform features shipped.
- Abstracting failures so completely that developers cannot diagnose them.
Knowledge check
Can you connect the developer need to a platform contract?
Three concept checks plus one scenario check.
1Who is the primary customer of an internal developer platform?
The developers and delivery teams consuming the platform capabilities.
2What makes a platform capability different from a script?
It has a supported interface, contract, guardrails, lifecycle and feedback model.
3Why start with repeated friction?
High-volume repeatable pain is a better candidate for self-service and produces measurable value.
4Scenario: a portal has 40 plugins but developers still file tickets for environments. What should you investigate first?
The developer journey and missing self-service contract, not the number of portal plugins.