Development Process with AI

With every update to the various models and tools, AI becomes more capable and in a lot of ways more independent. In much the same way as a junior developer learns over time and can take on more complex tasks, and can carry the tasks out with less supervision, we’ve seen AI mature to the point where you can assign it entire units of work, with relatively little guidance and review. As developers adopt AI into their workflow, it is causing a massive shift in the development process, and in fact the process of creating and shipping software. In this post we’ll look at traditional development workflows and how they are being affected by the use of AI.

In discussing the development process I don’t want to get into the debate over the relative merits of different processes, such as Waterfall, Agile, Scrum, etc. Instead, I’m going to focus our attention on the relatively low-level workflow that a developer might follow when going about their work. Let’s assume that this starts with being assigned, or self-assigning, an issue to work on. The developer would go about doing the necessary investigation, planning, design, coding, tests etc required in order to complete the work. Once they’re done, there’s probably some sort of review process from a peer, or manager, before the work is either merged (if it needs to be combined into an existing code base), or published (if it’s a standalone tool/app/site). This might seem overly simplistic but let’s examine how this looks when we introduce AI.

Again, for the purpose of this discussion, let’s keep our attention on the developer workflow. Of course, AI can be incorporated into many other aspects of the product development lifecycle but for now, let’s look at in the context of the workflow we’ve just described. To start with, let’s start at the point the developer picks up the issue to work on. Normally it would be up to the developer to start investigating the issue in order to work out either the cause of the bug, or what needs to be done to implement a feature. With AI, depending on which tool you’re using, this initial step can either be skipped, or altered.

Some tools, like GitHub and Codex, support the full delegation of an issue, allowing the agent to investigate, plan and complete the implementation. The output is either a branch or a pull request, which can then be reviewed by the human-in-the-loop. This might result in further direction to the agent to continue development. Alternatively, the developer might pick up the work and either complete it, or adjust the work, in order to provide more direction to how the agent should complete the work. This is not too dissimilar to the role of a senior developer delegating work to a more junior developer.

Alternatively, the developer might want to be more involved. Rather than simply assigning the issue to the agent they can pick up the issue themselves. However, again, instead of going at it alone, the developer can interact with AI using chat to ask, plan and even code some of the work, much like when developers pair program.

In either of these two augmented workflows the developer is leveraging AI to both increase their productivity as well as their effectiveness. The developer is moving away from being a day-coder, into more of an orchestrator role.

In this post we’ve briefly examined one area where AI is making a difference in the development process. What’s becoming clear is that whilst there’s currently no clear guidlines for developers to follow when using AI, developers need to become familiar with the evolving world of AI agents and tools. Understanding when to delegate steps in the process to AI will become a key skill required to be a successful developer in the world of AI engineering.

Leave a comment