Upgrade to Pro — share decks privately, control downloads, hide ads and more …

From typing code to directing it

Avatar for h3nk3 h3nk3
October 31, 2026

From typing code to directing it

What changes when building gets ten times cheaper: for companies, for society, and for the engineers doing it.

Avatar for h3nk3

h3nk3

October 31, 2026

More Decks by h3nk3

Other Decks in Technology

Transcript

  1. From typing code to directing it What changes when building

    gets ten times cheaper: for companies, for society, and for the engineers doing it Henrik Engström · CTO & Co-founder, Isodora · October 2026
  2. ABOUT ME 25 years of typing code. Three of directing

    it. 1 2 3 4 5 1990s 15 years US & EU 2023 Today Software engineer Distributed systems Startups and consulting AI engineering CTO & Co-founder, Isodora Three decades of building and shipping software The focus of the last fifteen years Building products and helping teams on both sides of the Atlantic From building with LLMs to directing coding agents A production SaaS built with agents every day OFF THE KEYBOARD Avid cyclist Henrik Engström · From typing code to directing it WHY THIS TALK Wine nerd Everything in it comes from shipping a production product this way, every day, for the last months. 2
  3. TODAY Two halves, about two hours, and room to discuss

    1 2 3 Why now Beyond engineering The new role The pace, and what it already looks like The bottleneck moves: company, society Skeptics, evidence, typist to controller 4 5 6 How we work Where it went wrong SDD and scaling out Isodora's operating model, end to end Real failures, and the rules they produced Spec-driven development, ten agents each First half, for everyone (1–2): about 35-40 minutes. Second half, for the engineers (3–6). Henrik Engström · From typing code to directing it 3
  4. FIRST HALF · FOR EVERYONE 01 Why now The pace,

    and what it already looks like Henrik Engström · From typing code to directing it 4
  5. “ Assume this is the worst AI you will ever

    use. Ethan Mollick · Co-Intelligence (2024), the fourth of his four principles Henrik Engström · From typing code to directing it 5
  6. THE PACE From autocomplete to day-long tasks in seven years

    2019 2020 2022 2023 2024 2025 2026 GPT-2 GPT-3 ChatGPT (3.5) GPT-4 Reasoning models Coding agents Claude Opus 5 1.5B parameters 175B parameters; reads ~1,500 words 100M users in two months Finishes ~5-minute tasks 1M-token context arrives A 1T-parameter open model Day-long tasks; 96% on SWE-bench ~200× 33% → 96% 2K → 1M 5–10× longer tasks of real GitHub issues fixed tokens of context cheaper every year Task length an agent finishes half the time: ~5 minutes for GPT-4 (2023), 16 hours+ in 2026. SWE-bench Verified: GPT-4o in August 2024, Claude Opus 5 in July 2026. Now saturated. GPT-3 read ~1,500 words at a time. Today a mid-size codebase fits in one prompt. Price of the same capability. GPT-4-level science answers: 40× cheaper per year. METR time horizons, 2025–2026 OpenAI, 2024 · Anthropic, 2026 OpenAI, Anthropic, Google Epoch AI, 2025 Formed your view of AI on a 2025 model? It is several generations old. Re-test - at a minimum - every six months. Henrik Engström · From typing code to directing it 6
  7. THE PREMISE Two engineers, a production SaaS, releases every day

    364 111 2 pull requests merged in 30 days of them in the last 7 days engineers, each directing several agents ~900k 385 4 lines of TypeScript database migrations apps, in EU and US regions From our production repository, 13 October 2026. Henrik Engström · From typing code to directing it 7
  8. A REAL DAY · 12 OCTOBER 2026 From an auditor's

    notes to production in one day 13 9 10 1 tickets agents in parallel pull requests release, same evening WHAT HAPPENED WHAT THE HUMAN (I) DID • Our ISO 27001 stage 1 auditor's notes became tickets • Wrote and sharpened the tickets • Each agent: own worktree, own port, own test org • Made the product calls • Every ticket tested locally, on desktop and on a phone • Tested every change • CI went red; one more agent fixed it before release • • One promotion; migrations applied; verified in production Choose “back up, then clear” for a data fix • Pressed merge Henrik Engström · From typing code to directing it 8
  9. 02 Beyond engineering The bottleneck moves: to the rest of

    the company, and to society Henrik Engström · From typing code to directing it 9
  10. THE BOTTLENECK MOVES · BEFORE One feature, from idea to

    customer: building is the slowest step total: 16 weeks Illustrative numbers. The shape, not the figures, is the point. Decide What to build, approvals 2 weeks Build Design and code ← the bottleneck 8 weeks Test and review 2 weeks QA, security, sign-off Release 1 week Deploy, docs, announce Sell and onboard 3 weeks Customers start using it weeks, idea to customer 0 4 8 12 16 Today most of the waiting is in engineering. Now make that one step ten times faster. Henrik Engström · From typing code to directing it 10
  11. THE BOTTLENECK MOVES · AFTER Make building ten times faster,

    and the queue moves now: 8.8 weeks Illustrative numbers. The shape, not the figures, is the point. Decide What to build, approvals before: 16 weeks 2 weeks Build Design and code Test and review QA, security, sign-off under 1 week 2 weeks Release 1 week Deploy, docs, announce Sell and onboard ← the new bottleneck 3 weeks Customers start using it weeks, idea to customer 0 10× faster 4 8 12 16 Ten times faster at building, about twice as fast as a company. The rest is everyone else’s job now. Henrik Engström · From typing code to directing it 11
  12. BEYOND ENGINEERING Every department is getting the same shift Support

    Sales WHAT IT ADDS UP TO Agents answer, humans handle the hard cases Research and proposals drafted in minutes Smaller teams, same output Finance Legal & compliance Reconciliation and reporting checked, not typed Contracts and audits prepared by agents People Marketing Policies, onboarding, training material Content and campaigns, with brand rules as guardrails Output stops scaling with headcount, in every function, not only engineering. Judgement is the job Drafts are free. Deciding what is right, and signing for it, is not. Written down, or invisible Agents use only what is documented. Knowledge in people’s heads becomes the bottleneck. 88% of organisations now use AI (Stanford AI Index 2026). Our own product automates compliance work consultants did by hand. Henrik Engström · From typing code to directing it 12
  13. AND SOCIETY The same shift, at the scale of a

    whole society 53% −19% 73% vs 23% 2 Aug 2026 adoption in three years entry-level employment experts vs public EU AI Act transparency Generative AI reached half the population faster than the PC or the internet did. 22–25-year-olds in AI-exposed jobs, against trend. Experienced workers show no gap. Early signal, not proof. Share who expect AI to be good for jobs. The trust gap is a leadership problem, not a technical one. AI-literacy duty since February 2025. Transparency duties from August 2026; high-risk rules December 2027. Stanford AI Index 2026 Stanford Digital Economy Lab, Aug 2026 Stanford AI Index 2026 EU AI Act · Digital Omnibus 2026 Drafts become free. Judgement, trust and how people learn become the scarce things. Henrik Engström · From typing code to directing it 13
  14. START MONDAY · FOR EVERY TEAM Five things any team

    can try next week 1 Map where work waits Follow one feature from idea to paying customer. Write down how long each step really takes. 2 Find the next bottleneck Assume building gets ten times faster. Which step sets the pace then? Start on it now. 3 Run one agent pilot per team One real, repetitive workflow per department, with a named owner and one number to measure. 4 Write it down Agents only know what is written. Processes, decisions and policies in text make delegation possible. * Employment satisfaction How does this new AI world impact employment satisfaction and what can be done to address any dissatisfactions? Henrik Engström · From typing code to directing it 14
  15. SECOND HALF · FOR THE ENGINEERS 03 The new role

    The skeptics, the evidence, and from typist to controller Henrik Engström · From typing code to directing it 15
  16. THE SKEPTIC'S ARC A famous skeptic changed his mind in

    about fifteen months July 2025 7 January 2026 September 2026 6 October 2026 Lex Fridman Podcast #474 Blog: “Promoting AI agents” Rails World keynote, in his own recap Blog: “Over my dead pencil” “I can literally feel competence draining out of my fingers.” “Yes, I'm ready to give the current crop of AI agents a promotion.” “… it's time to put down the pencils.” “We're not going to write the vast majority of code by hand any longer.” David Heinemeier Hansson: creator of Ruby on Rails, CTO of 37signals. Sources in the speaker notes. From “competence draining out of my fingers” to “Don't go down with the pencils” in fifteen months. Henrik Engström · From typing code to directing it 16
  17. OTHER VOICES It isn't only DHH “ “ “ “

    Kent Beck Tobi Lütke Andrej Karpathy Simon Willison Creator of Extreme Programming · April 2023 CEO, Shopify, memo to staff · April 2025 OpenAI co-founder, on “agentic engineering” · February 2026 Co-creator of Django · December 2025 The value of 90% of my skills just dropped to $0. The leverage for the remaining 10% went up 1000x. Henrik Engström · From typing code to directing it Reflexive AI usage is now a baseline expectation at Shopify. You are not writing the code directly 99% of the time, you are orchestrating agents who do and acting as oversight. Your job is to deliver code you have proven to work. 17
  18. THE HONEST EVIDENCE Feeling faster is not the same as

    being faster 19% Amplifier −19% slower Experienced developers with early-2025 tools took 19% longer, yet believed they had been 20% faster. “AI doesn't fix a team; it amplifies what's already there.” 90% use AI at work; 30% barely trust its code. Employment of 22–25-year-olds in AI-exposed jobs, against less-exposed peers. No gap for experienced workers. METR study, July 2025 Google DORA report, 2025 Stanford Digital Economy Lab, August 2026 METR's 2026 follow-up points to a real speed-up now. The lesson stays: measure it, don't feel it. Henrik Engström · From typing code to directing it 18
  19. MY VIEW Worth it, with real costs we should name

    FOR AGAINST Drafts in minutes, not days Confidently wrong, and plausible Tireless on tests, migrations and i18n Review becomes the bottleneck Several tickets in parallel Skills fade; the junior path is unclear Unfamiliar stacks stop being walls New attack surface: injection, permissions Documentation finally pays off Cost, nondeterminism, vendor lock-in My view: strongly net positive for engineers who already know what good looks like. Most costs have known engineering fixes. Henrik Engström · From typing code to directing it 19
  20. CONTROLLER, NOT TYPIST The engineer stops typing and starts directing

    Typist Controller Types the first draft Specifies intent and acceptance criteria Reproduces bugs by hand Splits work into agent-sized tickets Keeps the context in their head Writes context down where agents read it Repeats the same review comment Turns judgement into rules and guards Works on one task at a time Runs several agents and owns the merge Henrik Engström · From typing code to directing it 20
  21. WHAT MATTERS MORE NOW Three skills that matter more than

    typing ever did Specify Verify Constrain Write for a reader who can't ask. Read evidence, not keystrokes. Make the machine say no. Symptom, evidence, acceptance criteria, and how we'll know it's done. Design the test, demand the screenshot and the log, distrust the plausible. Every repeated correction becomes a lint rule, a CI guard or a permission. The old skills still matter: architecture, taste, and knowing what good looks like. They're what make the three above work. Henrik Engström · From typing code to directing it 21
  22. 04 How we work at Isodora A production SaaS, two

    engineers, agents doing most of the typing Henrik Engström · From typing code to directing it 22
  23. THE OPERATING MODEL Every change takes the same path, and

    every step leaves a trace Ticket Agent builds PR + evidence CI guards Human merge Symptom, evidence, acceptance criteria Own worktree; failing test first Test, screenshots, logs, queries Types, lint rules, tests, guards A person reads the diff → → Ticket → branch → pull request commit Production A separate, reviewed promotion deployment Linked in both directions between the tracker and the code host. Any change can be explained months later, by anyone, in minutes. Henrik Engström · From typing code to directing it 23
  24. PLANNING A PRD only when the work actually needs one

    WRITE A PRD WHEN TWO OR MORE APPLY 1 Tracking issue One per PRD, linked both ways Tickets Each sized for one agent and one PR Status board A table in the repo mirrors the tracker Done Marked implemented, with its evidence Cross-app It touches several apps or a shared package 3 A numbered file in the repo, from a template Multi-phase It won't land in one reviewable PR 2 PRD New surface A feature area, a billing flow, an external contract 92 PRDs since May 2026. Most work is a plain ticket. Henrik Engström · From typing code to directing it 24
  25. FOUNDATION The repository is the only context an agent has

    One entry file Rules, not folklore Decisions on record • CLAUDE.md, 241 lines, read first • • 92 PRDs and 30 ADRs • Product, stack, commands, deploy map • Agents read the why before changing it • A PR template that demands evidence • • An index: it links to the depth • Auth, tenancy, errors, i18n, performance Architecture, schema, roles, runbooks Written for a reader who can't ask If an agent has to guess, a human had to guess before it. Henrik Engström · From typing code to directing it 25
  26. THE TOOLKIT Playbooks and connections are committed with the code

    16 3 1 skills Checklists the agent follows the same way every time: review, security, release, tickets specialist agents Database, frontend and compliance, each a Markdown file shared config The same tool connections on every machine Issue tracker Code host Reads and updates tickets PRs, reviews, check results Hosting Database Deployments, runtime logs Read-only queries Error tracking Real browser Stack trace and request id Clicks through the app Least privilege throughout: read-only database, feature branches only, no production writes from a laptop. Henrik Engström · From typing code to directing it 26
  27. TEST LOCALLY FIRST If the agent can't run it, the

    agent can't verify it 4 1 385 <1s apps on the laptop command to reset the DB migrations replayed reload, not a 5–10 min preview 1 2 3 4 5 Start Drive Observe Cross-check Attach Local stack, seeded test org and login Navigate, fill, click; phone width too Console, network, server log, screenshots Query the database: did the row change? Evidence goes into the pull request Every UI change is also checked at 390 px wide. Mobile users get the same product. Henrik Engström · From typing code to directing it 27
  28. GUARDRAILS Agents are fast. The rails make them trustworthy. A

    convention that matters becomes a lint rule or a CI guard, never a review comment made twice. 20 9 892 custom lint rules CI guard scripts test files Tenant isolation, privileged DB access, audit logging, validated input Migration safety, permissive policies, translation parity, grants A bug fix without a regression test doesn't merge 5 0 1 languages in parity secrets in git human on every merge Forget one language and CI says exactly which key Pre-commit blocks env files and scans for keys Agents push branches; never to main, never force Henrik Engström · From typing code to directing it 28
  29. 05 Where it went wrong “Engineer a solution such that

    the agent never makes that mistake again.” Mitchell Hashimoto, February 2026 Henrik Engström · From typing code to directing it 29
  30. FAILURES, AND WHAT THEY TAUGHT US Every failure became a

    rule A confident, wrong root cause An agent blamed a build hang on a compiler running out of memory, with numbers. A human reproduced the real cause: an upload hook. Working theory until it's reproduced Shared test data wiped An agent “cleaned up” the shared local database and erased a human's test data mid-session. Never reset shared data after handover Real AI calls in a test run A mis-ordered test command ran the whole suite with real API keys loaded. No keys in tests; explicit test paths only Green everywhere, red on deploy Tests, types and lint passed. Four production builds failed: a server module leaked into a client bundle. Run a real build before pushing Desktop only Seven pull requests were verified on a desktop screen. Nobody checked a phone. Every UI change checked at 390 px Henrik Engström · From typing code to directing it 30
  31. 06 Spec-driven development The SDD tools, how they compare with

    our way, and ten agents per engineer Henrik Engström · From typing code to directing it 31
  32. WHAT IS SDD? Write the spec first, and let the

    agent build from it “Writing a ‘spec’ before writing code with AI. The spec becomes the source of truth for the human and the AI.” Birgitta Böckeler 1 Spec-first Write a spec before the work, use it for the task at hand. 2 Spec-anchored Keep the spec after the work and evolve the feature through it. 3 Spec-as-source The spec is the source. Humans edit the spec, never the code. Levels from Birgitta Böckeler, “Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl”, martinfowler.com, 15 October 2025. GitHub Spec Kit AWS Kiro Tessl constitution → specify → plan → tasks → implement → converge requirements.md → design.md → tasks.md spec → generated code Open source; v1.0 in August 2026 An IDE; requirements in EARS: WHEN … THE SYSTEM SHALL … The spec-as-source bet; now positioned around agent skills Henrik Engström · From typing code to directing it 32
  33. SIDE BY SIDE Same instinct, different weight SDD tools (Spec

    Kit, Kiro) Isodora When to write a spec For every feature Only past the PRD threshold; otherwise a ticket Artifacts Spec, plan and tasks per feature PRD, then tickets; an ADR for cross-cutting calls Standing rules A constitution, in Markdown Entry file and rules, enforced by lint and CI After the merge The spec stays as the record, or the source PRD marked implemented; code and tests are the truth Done means The task list is complete Evidence in the PR, and a human merge Unit of agent work One run through a task list One agent, one ticket, one worktree, one PR Henrik Engström · From typing code to directing it 33
  34. SCALING OUT Ten agents per engineer: coordination becomes the product

    Collisions on shared files Duplicate work Drift in shared context Try: Append-only catalogs, timestamped migrations, parity guards Try: A registry of active work that agents check first Try: One owner for the entry file; rules as code, not prose Review bandwidth Release entanglement Ownership gaps Try: Agents review agents; humans review the evidence Try: Promote per PRD, not as a mixed batch Try: Cross-cutting decisions become ADRs before code Henrik Engström · From typing code to directing it 34
  35. START MONDAY · FOR ENGINEERS Five things you can try

    next week 1 Write the entry file One page at the repo root: what it is, how to run it, where the rules live. Link out; don't inline. 2 Make the loop runnable One command that starts the stack with seed data, so an agent can run and check its own work. 3 Turn one review comment into a rule The next comment you make twice becomes a lint rule or a CI check with a helpful message. 4 Give agents read-only eyes Connect the tracker, logs and a read-only database, so the agent gathers evidence itself. 5 Require evidence in every PR A failing test turned green, plus screenshots or logs. Review the evidence, then the diff. Henrik Engström · From typing code to directing it 35
  36. “ Don't go down with the pencils. There's so much

    to build. We need you. David Heinemeier Hansson · “Over my dead pencil”, 6 October 2026 Questions and discussion Henrik Engström · From typing code to directing it 36
  37. A Appendix The stack, and four real artifacts from the

    repository Henrik Engström · From typing code to directing it 37
  38. APPENDIX The stack, so you can map it onto your

    own Frontend Backend and data AI in the product • • • • • • • • • Next.js 16, React 19, TypeScript Tailwind 4, shadcn/ui on Radix TanStack Query, react-hook-form + Zod next-intl, 5 locales • • • Supabase: Postgres, pgvector, Auth, Storage Row-level security for tenant isolation Stripe: subscriptions, credits, trials Sentry, LangSmith OpenAI models via an AI gateway LangGraph multi-agent orchestration Retrieval over pgvector MCP servers, public REST API Hosting and regions Repository and CI Agent tooling • • • • • • • • • Vercel, one EU and one US project per app Stockholm + Supabase eu-north-1 Boot-time region guard fails closed Henrik Engström · From typing code to directing it Turborepo + pnpm: 4 apps, 3 packages GitHub Actions: guards, types, lint, tests Jest, 20 ESLint rules, 9 guards Husky pre-commit: secrets, types • • Claude Code; agent definitions in repo MCP: Linear, GitHub, Vercel, Supabase, Sentry, Stripe, Isodora Chrome DevTools MCP for the browser Local Supabase in Docker 38
  39. APPENDIX · IN PRACTICE The entry file every agent reads

    first WHAT IT IS CLAUDE.md · 241 lines, excerpt # CLAUDE.md This file provides guidance to Claude Code when working with code in this repository. It is the entry point — for any depth, follow the links. ## Linear (READ FIRST) This repo maps to the Isodora Linear team — prefix ISO-### only. - Never validate, edit, or reference issues from any other prefix. - If the Linear MCP does not expose an Isodora team, stop and tell the user to reconnect Linear — do not substitute another. ## Tech stack - i18n: 5 locales. en-US is the source of truth; every UI change must touch all 5 catalogs. CI enforces this. ## Where to look | Write code that follows the rules | docs/ENGINEERING_RULES.md | | Understand runtime architecture | docs/ARCHITECTURE.md | | Understand a past decision | docs/adr/ | Henrik Engström · From typing code to directing it One Markdown file at the repository root. The coding agent loads it at the start of every session. WHY IT WORKS It's an index, not a manual. Product, stack, commands and deploy map fit on two screens; everything deeper is a link. NOTICE The first section is a hard rule with a stop condition. Rules an agent must never break go at the top, in imperative language. 39
  40. APPENDIX · IN PRACTICE A rule that became code WHAT

    IT IS eslint-rules/require-audit-log-on-mutation.mjs · excerpt export const requireAuditLogOnMutationRule = { meta: { type: 'problem', messages: { missingAuditLog: 'admin mutation handler `{{name}}` does not write to the audit trail; a privileged admin mutation must record actor / target / action via logAuditEvent so the action is attributable. See src/lib/audit-logger.ts and ISO-76.', }, }, create(context) { if (AUDIT_LOG_ALLOWLIST.has(relPath)) return {} // grandfathered return { ImportDeclaration(node) { if (AUDIT_MODULE_RE.test(node.source.value)) hasAudit = true }, // … report exported mutation handlers without an audit signal } }, } Henrik Engström · From typing code to directing it A custom lint rule: any admin API handler that changes data must write to the audit trail, or the build fails. WHY IT WORKS The message tells the agent exactly what to do and where to look. A review comment would say it once, to one person. NOTICE Existing violations sit in an allow-list that only shrinks. It blocks new debt without a rewrite of the old. 40
  41. APPENDIX · IN PRACTICE A specialist agent is a Markdown

    file WHAT IT IS .claude/agents/supabase-db-expert.md · excerpt --name: supabase-db-expert description: Use this agent for anything related to Supabase, PostgreSQL, schema design, migrations, RLS policies, query optimization, indexing, pgvector, or database-layer bugs. Examples: - User: "The compliance analysis query is taking 8 seconds" Assistant: "Let me use the supabase-db-expert agent to analyze the execution plan and propose index changes." model: sonnet --You are an elite PostgreSQL and Supabase expert … ## Application context - All data is scoped to organizations via org id + RLS - Roles: super_admin, customer_admin, customer_user, consultant, auditor - Consultants can access multiple client organizations Henrik Engström · From typing code to directing it An agent definition: when to use it, which model, and the domain context it starts with. Committed with the code. WHY IT WORKS The description carries examples, so the main agent knows when to hand over. The body carries the tenancy model it must respect. NOTICE A change to an agent is reviewed in a pull request. Improving an agent is the same motion as improving code. 41
  42. APPENDIX · IN PRACTICE A PRD written for an agent

    to execute WHAT IT IS docs/prds/053-cursor-connector-personal-api-keys.md · excerpt # PRD — Cursor connector: accept personal / Ultra API keys Status: In Progress Linear: ISO-645 Created: 2026-09-10 A requirements document for one cohesive change: the problem, the exact files, phases with estimates, and a definition of done. > Single-seat customers cannot mint a Team Admin API key. > Connect fails with 401. Connected is not covered. WHY IT WORKS ## 6. Files to edit src/lib/connectors/cursor.ts + __tests__/cursor.test.ts src/lib/connectors/setup-steps.ts + __tests__/setup-steps.test.ts src/locales/{en-US,sv-SE,de-DE,pl-PL,it-IT}.json ## 13. Implementation phases ### Phase 1 — Detect, persist, runChecks (~2 h) Validation: pnpm test -- src/lib/connectors/__tests__/cursor.test.ts ## 14. Definition of Done [x] Personal key connect succeeds, writes account_kind=personal [x] Locale key parity across all 5 catalogs [ ] Production connect with a real personal key (needs the owner) Henrik Engström · From typing code to directing it An agent can start from section 6 without asking. Each phase names its validation command, so the agent knows when it's finished. NOTICE The definition of done is honest: one box is open, an operator step only a human can do. 42