VivoLearn

Software Development

Software development is a chain of translations — business need → written spec → design → code → verified behavior → running system — and every translation produces an artifact that can be checked before the next one starts.

The thesis · code is the most verifiable artifact in business (it compiles, tests pass or fail, CI is binary), so AI can be pushed harder here than in any other domain — *provided* the verification layer (tests + CI) is strong, because that layer is what converts "AI wrote it" from a risk into a non-event. Where verification thins out — ambiguous requirements, architecture bets, production deploys — humans stay in the loop, and that's exactly where you'll feel it in weeks 9-14.

Filter stages:

Requirements, Intake & Design

per-initiative, refined per-sprint

raw idea / stakeholder ask → problem statement → PRD → technical design doc → estimated backlog (epics → stories with acceptance criteria)

  • Automate
    Intake triageAI clusters incoming requests, flags duplicates against the existing backlog, and drafts a one-paragraph problem statement for each · high volume, low stakes, and a human sees every output downstream anyway
  • Draft
    PRD draftingAI interviews the requester, mines Slack threads and support tickets for context, and produces a structured PRD with open questions listed · context is scattered and partly tacit; the owner must confirm the problem is actually the problem
  • Assist
    Scope negotiationAI generates trade-off options and a "what we're explicitly not doing" list; the PM runs the conversation with stakeholders · this is relationships and political capital, not rules — the artifact is an agreement, not a document
  • Draft
    Technical designAI proposes 2-3 architecture options with trade-offs against the existing stack; a senior engineer picks and edits · consequential and expensive to reverse, but options-generation is where AI adds the most and the human still owns the bet
  • Automate
    Story breakdownAI decomposes the approved PRD into stories with acceptance criteria written as testable statements · mechanical decomposition of an already-approved artifact; errors surface immediately in sprint planning
  • Assist
    EstimationAI drafts estimates from historical velocity and similar past stories; the team adjusts in planning · estimates encode team-specific knowledge AI can't see, and anchoring on AI numbers is a known failure
Tools (2026)
Linear (agent triage + PRD features), Jira with Atlassian Rovo, Notion AI, ChatPRD, Claude with a company-context project
Failure mode
A fluent, confident PRD gets approved because it *reads* finished, and nobody notices it solves a plausible-sounding problem the stakeholder never actually had.
Try it
Take a messy 2-page stakeholder email (provided), use AI to produce a one-page PRD with acceptance criteria, then swap with a classmate who tries to find the requirement the AI invented.

Implementation (AI Pair & Agent Coding)

continuous — daily work of the team, and your daily work in weeks 9-14

story + acceptance criteria → implementation plan → agent task prompt → code diff (PR) → passing local tests

  • Automate
    Codebase orientationAI answers "where does X happen, what will this change touch" by reading the repo · read-only, instantly verifiable by looking, and it's the highest-frequency question in the job
  • Draft
    Implementation planningAI writes a step-by-step plan naming the files it will touch and the approach; developer approves before any code is written · cheap to review, expensive to skip — a bad plan multiplies into a bad afternoon of agent output
  • Automate
    Writing the codecoding agent implements the approved plan, runs tests locally, iterates until green · this is the domain's showcase: fully verifiable output, high volume, human reviews the diff not the keystrokes
  • Automate
    Scaffolding & boilerplateCRUD endpoints, API clients, config, migrations generated whole · pattern-following work with near-zero ambiguity; the compiler and tests catch the failures
  • Assist
    Handling ambiguity mid-taskwhen the agent hits an underspecified decision (which library, how to handle the edge case), it must stop and ask, not guess · the decision, not the typing, is the scarce judgment; agents that guess here produce plausible wrong code
  • Avoid*
    Prompt-to-PR hygienedeveloper writes the task spec, constraints, and "definition of done" the agent works against (Avoid for delegation) · this artifact *is* the human's job now; delegating it means nobody specified the work
Tools (2026)
Claude Code, Cursor, GitHub Copilot coding agent, OpenAI Codex, Devin
Failure mode
The agent produces 800 lines of working, test-passing code that solves a slightly different problem than the ticket asked for, and the developer merges it because green checkmarks feel like verification of intent.
Try it
Given a small working web app, each student writes an agent task spec for one feature, runs the agent, and grades the diff against their own spec — the lesson is that spec quality, not agent quality, predicted the outcome.

Code Review & Quality

per pull request, dozens per week on an active team

pull request (diff + description) → AI review pass → human review comments → approved & merged commit

  • Automate
    PR description & changelogAI writes the summary of what changed and why from the diff and linked ticket · fully derivable from artifacts in hand; wrong summaries are caught by the first human reader
  • Automate
    First-pass reviewAI reviewer flags bugs, missed edge cases, security smells, and style drift before any human looks · high volume, each finding is cheap to verify or dismiss, and it makes human review time land on what matters
  • Assist
    Substantive human reviewa person judges whether the change is the *right* change: fit with architecture, product intent, maintainability · AI summarizes and answers questions about the diff, but intent-vs-implementation judgment is the review's whole point
  • Avoid*
    Merge approvalthe human clicking approve on anything headed to production (Avoid automating) · this is the accountability gate; a merge is hard to un-ripple once others build on it, and "the AI approved it" satisfies no auditor
  • Automate
    Fix-forward on review commentsagent implements the reviewer's requested changes and re-runs checks · the reviewer specified exactly what to do; the loop closes itself and the reviewer re-verifies
Tools (2026)
CodeRabbit, Graphite (Diamond), Greptile, GitHub Copilot code review, Vercel Agent
Failure mode
Teams let AI-written code get reviewed only by AI reviewers, and six months later nobody on the team can explain how a core module works — review was where humans used to learn the codebase.
Try it
Students receive a PR containing one planted logic bug and one planted intent bug (code does something the ticket didn't ask for); run an AI reviewer, then compare which of the two it caught — it reliably finds the first and misses the second.

Testing & QA

continuous (unit/integration in CI) + per-release (E2E, exploratory)

acceptance criteria → test plan → test code (unit / integration / E2E) → CI results → coverage & flake reports

  • Automate
    Unit test generationAI writes tests for existing and new code, targeting branches and edge cases humans skip out of boredom · volume work with a built-in check — the test suite runs; note the trap that AI happily writes tests that assert current buggy behavior
  • Draft
    Test plan from acceptance criteriaAI translates each criterion into named test cases, including negative and edge cases · the mapping is mechanical but the *omissions* matter; QA owns deciding what's missing
  • Automate
    E2E test authoring & repairAI writes browser-level tests from plain-English steps and self-heals them when the UI changes · flaky selector maintenance was pure toil; failures are visible in CI within minutes and fully reversible
  • Assist
    Exploratory testinga human tries to break the app in ways no spec anticipated, with AI suggesting attack angles · adversarial creativity against unwritten expectations is precisely the unverifiable part
  • Avoid
    Deciding the quality barwhat coverage suffices, which flakes to tolerate, when the suite is trustworthy enough to gate deploys · this policy decision determines how much everyone else gets to automate; it's the load-bearing wall of the whole table
Tools (2026)
Playwright (with agentic test generation), QA Wolf, Momentic, mabl, plus Claude Code/Copilot for unit test generation
Failure mode
AI-generated tests inflate coverage numbers while asserting whatever the code currently does, so the suite passes forever and verifies nothing — a green wall that management reads as safety.
Try it
Students point an AI agent at a small function with a deliberately planted bug and ask it to "write thorough tests," then check whether the generated tests caught the bug or enshrined it.

Release & Deployment (CI/CD)

per-merge (continuous deployment) or per-release train (weekly/biweekly)

merged commit → CI build + test run → staging deploy → release notes → production deploy → post-deploy monitoring verdict

  • Draft
    Pipeline authoring & maintenanceAI writes and fixes CI configs, build scripts, and infrastructure-as-code · verifiable by running, but pipeline changes are the one place a "test" mistake touches production machinery, so a human reads every diff
  • Automate
    CI failure triageAI reads the failed run, distinguishes flake from real break, and either retries or opens a diagnosis with a proposed fix · huge volume, minutes-level reversibility, and the fix still lands via the normal PR gate
  • Automate
    Release notes & commsAI compiles user-facing notes and the internal change summary from merged PRs · derivable from artifacts, low stakes, skim-checked by the release owner
  • Avoid*
    Production deploy decisiona human approves promotion to prod, especially for schema migrations and anything customer-visible (Avoid automating) · irreversibility is concentrated here: data migrations and user-facing breakage don't roll back cleanly, and someone must own the pager
  • Automate
    Post-deploy verification & rollbackAI watches error rates and latency against baseline and auto-rolls-back on breach per a human-written policy · the policy is the human judgment, encoded once; execution is rules-vs-relationships at its purest and speed is the whole value
  • Draft
    Incident summaryAI drafts the timeline and contributing-factors writeup from logs, alerts, and Slack · the record has compliance and blame implications; the incident commander owns the narrative
Tools (2026)
GitHub Actions, Vercel, LaunchDarkly, Datadog (Bits AI / Watchdog), Sentry Seer
Failure mode
Teams wire an agent's convenience credentials into deploy tooling, and an agent "fixing CI" acquires a path to production that no human gate was designed to catch.
Try it
Students deploy a provided app to Vercel via CI, intentionally ship a breaking change behind a feature flag, watch monitoring catch it, and execute the rollback — experiencing the reversibility that makes upstream automation safe.

Maintenance & Legacy Modernization

continuous (bugs, dependencies) + per-program (migrations, quarterly-to-multi-year)

bug report / EOL notice / audit finding → reproduction & diagnosis → fix or migration plan → incremental PRs → regression-verified system → updated docs

  • Automate
    Bug reproduction & diagnosisagent reads the report, reproduces the failure as a failing test, and localizes the cause · the reproduction test *is* the verification; a wrong diagnosis dies in the open instead of in someone's head
  • Automate
    Routine bug fixesagent fixes the failing test it just wrote, for the well-scoped majority of tickets · high volume, verified by the repro test plus the full suite, reviewed like any PR
  • Automate
    Dependency & security patchingagent bumps versions, resolves breaking changes, and opens PRs as CVEs and EOLs land · repetitive, urgent, and fully CI-verified — the canonical "agent does it, humans spot-check" workload
  • Draft
    Documenting legacy behaviorAI reads an undocumented old system and produces current-state docs and behavior specs · enormous leverage on scarce context, but the system's *undocumented intentions* need a veteran's confirmation
  • Assist
    Migration planningchoosing target architecture, sequencing, and what to kill rather than port · a strategic bet with organizational stakes; AI supplies inventory and options, leadership owns the wager
  • Draft
    Migration executionagents translate and port code module-by-module against a characterization test suite written first · translation at scale is AI's sweet spot, but legacy edge cases are exactly where context is thinnest — humans own each module's sign-off
Tools (2026)
GitHub Copilot app modernization, AWS Transform, Renovate/Dependabot + coding agents, Sourcegraph (Amp + code search), Moderne
Failure mode
A migration agent faithfully ports a 15-year-old workaround nobody understands, preserving a bug as a feature because no characterization test existed to say which it was.
Try it
Students get a 300-line undocumented legacy script (provided), use AI to produce a plain-English behavior spec and characterization tests, then have an agent rewrite it and prove equivalence by running both against the tests.

Citizen Development & Internal Tooling

continuous, mostly outside IT's line of sight — this is the domain's governance frontier

team pain point → prompt/spec → AI-built app (Retool, Lovable, sheets-plus-agent) → data connections → adopted tool → (ideally) registered, reviewed, owned tool

  • Automate
    Building the toola business user describes the app and AI builds it: dashboards, form-to-database apps, approval flows · this is the point — the builder is the user, verification is "does it do my job," and the blast radius *should* be one team
  • Avoid*
    Connecting to real datawiring the tool to production databases, HR systems, or customer data (Avoid without IT) · stakes and regulatory exposure jump discontinuously here; a read-write connection to real customer data is not a citizen-dev decision
  • Draft
    Workflow automation glueAI-built connectors between SaaS tools (form → CRM → Slack) with humans approving each new automation once · reversible and low-stakes per run, but silent failures compound, so the owner reviews before enabling
  • Automate*
    Governance & registrationIT maintains an inventory of citizen-built tools, their data access, and their owners; AI scans SaaS logs and OAuth grants to find unregistered ones (Automate the discovery) · high-volume detection with human follow-up; you can't govern what you can't see
  • Assist
    Promotion to supported softwaredeciding which team-built tool has become load-bearing and must be rebuilt or adopted by IT · an organizational judgment about criticality and ownership; AI supplies usage evidence, not the verdict
  • Draft
    Deprecation & offboardingretiring tools when their builder leaves, with AI drafting the handover doc from the tool itself · the doc is derivable but the decision to keep or kill needs the successor's confirmation
Tools (2026)
Retool (+ AI app gen), Lovable, Replit Agent, Airtable (Omni), Zapier (Agents + Canvas)
Failure mode
A revenue team quietly runs on a Lovable app built by an analyst who left in March — no owner, no backup, customer data in an unreviewed database — and IT learns it exists the day it breaks.
Try it
Students build a working intake-form-plus-dashboard tool for a fictional team in Retool or Lovable using only prompts, then write the three-line "registration card" (owner, data touched, blast radius) that IT should require before it connects to anything real.

Source: Directing Intelligence course field guide, 2026. Tool lists are dated on purpose — they churn; the stage verdicts and their blockers are the durable part. Spot something the frontier has dissolved? Contribution is coming; for now, open an issue or PR on GitHub.