AI adoption in software engineering depends on the developer experience. How well does the AI fit into existing developer workflows, including popular tooling, while maximising value add from the current state of the art in AI code generation?
Development workflows are complex, personal, and battle tested to deliver complex work in high-pressure environments. Habits are formed for good reason and AI driven change must complement these workflows, not replace them. As far as possible, the development workflows should remain unchanged.
A near universal waypoint in the engineering workflow is a GitHub pull request. AI code generation for high-performing teams must be built around this. Additionally, there is usually a ticket defining a piece of work, particularly in the context of a software engineering team. We ignore the many products that allow individuals to build ‘toy’ apps.
Assistance vs Autonomy
There is a spectrum of options that fill the gap between ticket and PR - from local IDE autocomplete to autonomous software engineering agents. We can loosely bucket them into three categories as follows.
IDE assistants. Starting with autocomplete as you type, they have become increasingly sophisticated. There are many options, but most are forks of or extensions for VSCode which include various ways to interact with a selection of LLMs and incorporate the code directly in the editor.
On the one hand, IDE assistants require the smallest change in workflow. However, they also require that engineer is actively working alongside the AI. At best, this is an incremental improvement in productivity and, at worst, costs valuable time when the AI fails to generate functioning code.
Cloud based workspaces require a greater change in behaviour in exchange for some greater prospective benefits.
Firstly, the IDE experience can be rebuilt with AI in mind, rather than as an add-on. This usually means making natural language a first-class citizen. Additionally, using an environment that allows AI to operate asynchronously and autonomously means that the AI can continue to work in the environment even after an engineer leaves the session.
Autonomous agents. Often marketed more like an employee than a software product, agents typically handle tasks on an end-to-end basis. This approach usually requires little change to workflows but can operate as a black box. In the case of software development, an agent could autonomously pick up tickets and make PRs but might suffer from lack of guidance in the middle.
A combination of a cloud-based IDE with autonomous agency provides the best value with minimal disruption to workflows. The agent should provide value with no supervision, while the IDE is strictly optional where adoption can be gradual.