Notes

Autonomous Software Development

Most coding help stops at the suggestion: you describe what you want, something proposes code, you decide whether to keep it. Autonomous software development removes that handoff — an agent takes a ticket and returns a tested change, having done the intervening work itself.

The loop on a real repository
The work looks less like writing code and more like operating a development environment:

  • Read the issue, then search the codebase to find the handful of files that matter.
  • Edit them, run the test suite or the build, and read the failures.
  • Fix and repeat — the feedback comes from the compiler and the tests, not from a person.
  • Open a pull request with a description, and respond to review comments on it.

That tight verification loop is what makes software a favourable setting for agents: the environment grades every attempt automatically and cheaply.

What it takes, and where it stops
Systems such as Devin and SWE-agent, along with the coding agents built into editors and terminals, work this way, and SWE-bench — real GitHub issues, judged by whether the project's own tests pass — is the common yardstick. The limits are structural rather than temporary: an agent is strong on well-specified, well-tested, locally scoped changes and weak where the work needs architectural judgement, undocumented institutional context, or a decision about what should be built at all. Sandboxed checkouts, scoped credentials and human review of the diff remain the price of letting it run.

Autonomous software development is the use of agents to carry a coding task from ticket to tested change without step-by-step direction — locating the relevant files, editing them, running the build and tests, and iterating on the failures before opening a pull request. The test suite supplies the feedback a human reviewer would otherwise give. It shifts the engineer's work from writing the change to specifying it and reviewing the result.

Normally a programmer writes the code and a tool offers suggestions along the way. Autonomous software development flips that: you describe the problem — "the export button breaks on large files" — and the software goes off and does the job.

It reads through the project to find the right place, makes the change, runs the tests the team already wrote, sees what still fails, and tries again. When it is satisfied, it hands you the finished change to approve.

It works best on small, clearly described fixes in projects with good tests. Deciding what to build, and whether the result is wise, is still a human job.