# The Developer Experience — Talking Points > **Companion to:** `the-developer-experience-marp.md` (11 main + Appendix TOC + 7 appendix = 19 slides) > **Content source:** `the-developer-experience.md` (full source of truth with speaker notes) > **Purpose:** Presenter-ready cues — 3-6 talking points per slide + the one key takeaway the audience should remember. > **Audience:** Senior Leadership — CTO, Head of Cloud, Head of Infrastructure, Head of DevOps --- ## Slide 1 — Title **Talking points:** - Brief introduction — this deck covers *who uses the platform and how fast/safe they ship*, not the internal mechanics (that's the companion deck) - Set the frame: velocity without sacrificing safety, and security/observability/compliance as platform defaults rather than per-team effort - v1.12 re-verification: every "Testing" claim in this deck is now Verified — 22/22 capabilities via the v1.11 lifecycle pipeline (see A7) **Key takeaway:** The consumer surface is intentionally tiny. The platform's surface is large and opinionated. --- ## Slide 2 — Two consumer paths, one safety envelope **Talking points:** - This is the scope-boundary slide — here's who uses the platform, and here's where ACDL's responsibility starts and stops - Two consumer paths converge on the same contract: **technical** developer writes the contract directly; **citizen** developer declares intent and an AI agent produces a contract that passes the same safety envelope - Upstream is anything — your IDE, an agentic SDLC, or vibe coding on a laptop. ACDL doesn't care how the contract was produced - ACDL is infrastructure only — it provisions and governs AWS resources. Application deployment is upstream of the contract - The two surfaces are *parallel*, not a progression. A citizen developer doesn't "graduate" to the developer surface. There is no "citizen developer mode" with weaker checks **Key takeaway:** Two consumer paths, one safety envelope. ACDL is infra only — anything upstream is fair game. --- ## Slide 3 — The platform at a glance **Talking points:** - One-slide map — frame it from the left edge: "this is what you touch, this is what the platform owns for you" - The leadership beat: the convergence — two surfaces, one pipeline, one evidence stream — is the design point that lets us expand who can ship safely without lowering the bar - Don't walk every node — point to the contract boundary and say "the rest of this deck zooms into the developer-facing pieces" - The bar rises automatically — the confidence signal and HITL gates scale with the target environment, not with a ticket **Key takeaway:** You own the left edge (app + contract). The platform owns everything else, end to end. --- ## Slide 4 — Three things. The entire consumer surface. **Talking points:** - Hold this slide — the audience should sit with how small the consumer surface is. Three things: app code, a contract, a one-line CI definition - The contract is a single YAML file: module, environment, inputs. That's the entire consumer-facing interface to production - The contract example shows **infrastructure inputs** (cpu, memory, desired_count, port) — not an `image:` field. The consumer declares capacity and shape; the platform resolves the rest - Walk the "does not" list quickly — no infrastructure modules, no platform repo cloning, no cloud credentials, no state backends. Every item is a category of toil the platform removes - For the Head of DevOps: this is the lever for throughput — the bottleneck moves off the platform team's ticket queue **Key takeaway:** Three things. That's the entire consumer-side surface. Everything else is the platform's job. --- ## Slide 5 — See what the platform does, in real time **Talking points:** - This directly answers "but developers hate platforms that hide what they're doing" — the platform is opinionated about *what* runs, not *opaque* about *that* it runs - Streamed output by default — the plan, policy results, and each check record flow to stdout - PR comments after every successful pipeline stage — a developer always knows where they stand without refreshing a dashboard - Connection strings posted as PR comments — human-readable, no hunting. Runtime secrets go to encrypted Parameter Store (KMS-encrypted, namespaced), never to logs - The "errors become GitHub issues" point is a DX win that also helps the platform team — every consumer failure is a tracked, queryable artifact, not a lost log line - Clear, explainable halt reasons — a policy violation, an insufficient confidence signal, or a missing attestation. Never an opaque debugging exercise **Key takeaway:** The platform closes the feedback loop — streamed output, PR comments, clear halt reasons, no secrets in logs. --- ## Slide 6 — Pick from pre-built, security-reviewed blocks **Talking points:** - The catalog is what makes "declare intent" practical — you can only declare a module that exists - For leadership: the catalog is the leverage. One well-reviewed module serves every consumer; a fix to the module serves every consumer on the next run. This is the compounding asset - Primitives are single-purpose resources (S3, VPC, ECS, IAM, ALB, ECR, CloudFront, WAF, RDS) — each with documented inputs/outputs and versioning - Modules are composed patterns — a static site with CDN + WAF; a microservice with VPC + ECS + ALB + ECR - Validated examples per module (`simple.yaml` + `complex.yaml`) are validated against the contract schema in CI — examples cannot drift from the schema silently - Auto-promotion of patterns (after 3 observed usages) and compliance extension points (GDPR, SOX, SOC2, DORA) are on the roadmap **Key takeaway:** You don't author infrastructure — you pick from pre-built, security-reviewed building blocks. The catalog is the compounding asset. --- ## Slide 7 — The bar rises automatically with sensitivity **Talking points:** - Promotion is a workflow choice, not a contract edit — a promotion can be reviewed as a *diff in the workflow*, not as a rewritten contract - The DX win: the contract stays stable across environments; the safety win: the platform raises the threshold and attestation bar automatically based on the target environment - The consumer can't bypass the gates — they pick *which* environment to target, and the platform applies the right bar - No staging environment — the design deliberately removes the "staging is basically prod but not really" anti-pattern. Dev is the only autonomous environment - Separation of duties is enforced — the QA approver cannot be the prod approver - Be honest about maturity: dev is tested and pilot-ready; qa/prod/dr wiring is planned **Key takeaway:** The bar rises automatically with sensitivity. The consumer picks the environment; the platform applies the right gate. --- ## Slide 8 — Tearing down is as gated as deploying **Talking points:** - The counter-argument to "deletion protection makes cleanup impossible" is this slide. Decommission is a first-class, gated, two-approval flow — not a lock with no key, and not an ungated `terraform destroy` - The CMDB validation means decommission is auditable, not just possible — the platform queries the CMDB and asserts the CR is `approved` and matches the consumer repo - Two SRE human-attestation gates: disable protection → SRE approves → zero all counts + destroy → a second SRE approves - The per-stack encryption key enters a grace window (default 30 days) so encrypted data remains recoverable during decommission - For the Head of Infrastructure: this is what makes deletion protection safe to ship by default — cleanup is a deliberate, gated path, not an impossible one **Key takeaway:** Tearing down is as deliberate as deploying — two SRE attestation gates + CMDB-validated change request. --- ## Slide 9 — You control when you absorb improvements **Talking points:** - This is the "no surprise upgrades" story. Leadership hears two things: (1) consumers aren't forced to chase the platform, (2) the platform isn't forced to support N forks of every workflow - Floating MAJOR + MINOR tags (e.g. `@v1.12`) — a consumer automatically receives patch updates within the line - Semantic versioning with a clear contract: interface → MAJOR, behavior → MINOR, lifecycle → PATCH - A consumer can pin to an exact version for maximum stability, or float on MAJOR only (`@v1`) to absorb new features on their own cadence - Unversioned references (`@main`, bare) are discouraged — the versioned tag is the only immutability lever a consumer has - The automated release job computes the next semver on merge to main, creates the tag, and updates the floating tags **Key takeaway:** You control when you absorb platform improvements — no surprise upgrades, no forced forks. --- ## Slide 10 — Fails gracefully, not opaquely **Talking points:** - This looks like a small thing; it's actually a cultural one. The platform's posture is "help me get started," not "you should have known" - For the Head of DevOps: this is what drives adoption. Platforms that fail opaquely on first run get routed around - When no environment is bound, the platform emits a user-friendly onboarding prompt — not an opaque failure - The prompt tells the consumer: no environment bound, what the platform will provision, expected turnaround, how to request an environment - The pipeline then exits without attempting a deployment — no partial state, no confusing errors - The citizen developer onboarding path is planned **Key takeaway:** The platform fails gracefully, not opaquely — first impressions are made when it fails for the first time. --- ## Slide 11 — The desired outcomes **Talking points:** - Close on the strategic frame. The platform is not "a CI/CD tool" — it is the organizational lever for shipping safely at the pace the business demands, with the security and audit posture the regulators require - Velocity without sacrificing safety: speed is in the ergonomics (a simple contract, a one-line `uses:`); safety is in the gates the consumer cannot bypass - Security, observability, and compliance as platform defaults — not per-team effort, not post-hoc remediation - Auditability as a byproduct, not a project — every production change is traceable to a human attestation and a tamper-evident evidence event - The bottleneck moves off the platform team's ticket queue — a merged change progresses through lower environments without a platform engineer joining a thread - A path to the citizen developer: the same safety envelope serves a senior engineer and a non-technical consumer - Invite questions; the companion deck ("How the Platform Works") covers the internal mechanics in more depth **Key takeaway:** Ship safely at the pace the business demands, with the security and audit posture the regulators require. --- ## Appendix TOC — Appendix **Talking points:** - These are backup slides for Q&A. Use them when the audience asks for the detail behind a main-slide claim - Don't walk through them in the main talk unless time permits - The appendix is indexed to match the Marp deck's A1-A7 structure **Key takeaway:** Backup slides for Q&A — pull the relevant appendix slide when asked. --- ## A1 — The Citizen Developer Experience **Talking points:** - Be honest about maturity: the *mechanism* (agent → contract → same pipeline) is designed and the stub was proven in the v1.0 demo; the full skill catalog and real agent runtime are planned - The "vibe coding on a laptop" framing is intentional — it meets the citizen developer where they already are, but every submission still passes the same safety envelope - The design point matters to leadership now: we are building for a world where more of the org can ship safely, not where more of the org has to become a platform engineer - Guardrails: skills are versioned, signed, reviewed for sensitive data; agents are stateless; the platform trusts and always verifies - The agent's trace and submission confidence are captured in the contract (`profile: agentic`) for review **Key takeaway:** A non-technical consumer ships by declaring intent — same pipeline, same safety envelope, no weaker checks. --- ## A2 — No Platform Code, No Cloning **Talking points:** - The Head of Cloud cares about this: there is no "platform code in every consumer repo" problem - The version-pinned `uses:` line is the *only* coupling, and it's a coupling that updates itself within the line - The runner checks out the consumer repo, then checks out the platform repo into the workspace — the consumer never clones the platform repo - The platform installs its own runtime dependencies — the consumer installs nothing - When the platform ships a fix, every consumer on a floating tag gets it on their next run — no per-repo upgrade project **Key takeaway:** The consumer never touches platform internals. The versioned `uses:` line is the only coupling. --- ## A3 — Local Reproducibility **Talking points:** - This is the "no surprises before you push" story. A consumer can validate their contract offline, run the plan offline, and only push when they're confident - `scripts/run_ci.sh` mirrors the CI pipeline locally — the same three stages (lint → test → check-only) in sequence - `scripts/run_platform.sh --check-only` runs the platform offline — no AWS, no policy engine, no outbox required - The same declarative contract drives both the local tooling and CI — there's no "works on my machine, fails in CI" gap **Key takeaway:** The entire CI pipeline runs from the shell — no surprises before you push. --- ## A4 — The Road to the North Star **Talking points:** - This is a proposed phasing, not a formally committed plan — call that out explicitly - Phase 1 is what's tested and Verified today (22/22 capabilities, torn down to zero-cost) - Phase 2 is the next milestone (qa/prod/dr wiring) - Phase 3 introduces the agentic surface (skill catalog + agents) - Phase 4 is the north star: citizen developer GA on the same safety envelope - Use this only when an audience member asks "how do you get from here to there" **Key takeaway:** Proposed phasing — Phase 1 Verified, Phase 4 is the North Star (citizen developer GA). --- ## A5 — Glossary **Talking points:** - Keep this slide in your back pocket for the audience member who asks "what does ABAC actually mean?" - Don't read it aloud - All acronyms used in the deck are defined here **Key takeaway:** Reference slide — don't read aloud. --- ## A6 — Operating Model & Cost **Talking points:** - The headline for the Head of Cloud / Finance: less than one cent over 8 days of active development; zero BAU cloud spend - The lifecycle pipeline defaults to plan-only so the PR-time cost is zero; `ACDL_LIFECYCLE_MODE=full` overrides for milestone verification - The pre-mortem is the credibility slide — we already asked "how does this fail?" and the mitigations are structural - The v1.10 decay incident is disclosed honestly, not hidden — that disclosure IS the mitigation - Cost drivers are spike-scoped: Terraform plan reads (free), S3 state storage (cents), DynamoDB outbox (cents). No running infrastructure between milestones **Key takeaway:** Zero BAU cloud cost. Pre-mortemed failure modes with structural mitigations. --- ## A7 — Verified by Construction **Talking points:** - This is the deep-dive slide for the Head of Engineering / Architecture — the two pillars answer "how do you keep the decks honest?" - The adapter is simple enough to reason about (a stateless assembler); the lifecycle pipeline is the automated verification that backs every "Testing" claim - The v1.10 lesson is the negative space: a 918-line adapter with type-specific branches decayed silently because the VERIFY gate was diff-scoped - The ~80-line stateless adapter + the milestone regression gate are the structural fix - The plan-only default (v1.12) means verification runs on every PR at zero cost, with the full apply→destroy gated behind a CI variable override **Key takeaway:** "Verified" is a structural property, not a claim — the stateless adapter + lifecycle pipeline make it so.