AI Engineer Summit 2023
The Code AI Maturity Model and What It Means For You
Slide chapters
11 slide and demo groups · Timestamps are approximate.
Read the talk
The Code AI Maturity Model and What It Means For You
Sourcegraph’s six-level framework tracks how coding assistants gain context, initiate work, and take responsibility for software from implementation through deployment.
From a talk by Ado Kukic
Before you start: Familiarity with code completion, application libraries, and pull-request review will help you follow the examples.
Who does the work when software builds software?
When software can build software, what remains the developer’s responsibility? Writing a function, reviewing a proposed change, and validating a finished product are different kinds of work. A useful maturity model needs to distinguish them—not simply count how much code an assistant generates. Ado Kukic, Sourcegraph’s director of Developer Relations, introduces the Levels of Code AI as a framework originally used internally to educate customers and guide the company’s thinking. He positions Cody as an assistant that knows the entire codebase, describing that capability as unique to Sourcegraph’s product. The framework became a starting point for discussion with the broader community at the AI Engineer Summit.
Kukic defines Code AI as software that builds software. In this 2023 presentation, he reports that 92% of developers use Code AI tools, compared with 1% a year earlier. The contemporary survey behind a similar 92% headline covered 500 U.S. developers at large employers and measured self-reported use at work or personally; it does not establish worldwide adoption or the 1% baseline. Kukic also relays Sourcegraph CEO Quinn Slack’s prediction that AI would write 99% of code within five years. That is a forecast from the talk’s historical context, not a measured result.
The framework divides six levels into three broad categories:
- Human-initiated code: humans remain the primary coders, with AI assisting their work.
- AI-initiated code: AI begins taking a proactive role in software development.
- AI-led code: AI has full autonomy over a codebase.
The progression concerns both capability and responsibility: what the assistant can produce, what starts its work, and where a human must remain involved. Kukic uses the SAE levels of vehicle automation as a recurring analogy for these changes in control.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Levels 0–1: From manual coding to completion
Level 0 starts with the developer doing all the coding. Writing, testing, and debugging are human responsibilities. An IDE may offer symbol-name completion, but AI neither generates nor modifies the codebase. This is the traditional development workflow before AI assistance. In the driving analogy, the human handles acceleration, steering, braking, and everything else.
At level 1, the developer supplies intent and AI fills in code. Suggestions may be a single line or an entire block. For example, a developer writes a function signature, and the assistant infers an implementation from it. Kukic describes training on millions of lines of open-source code as the foundation for these completions: the assistant draws on broad programming knowledge, guided by what the developer is currently writing.
The corresponding driving assistance is cruise control or lane centering. These features make a task easier while still requiring the driver’s full attention. Likewise, a completion helps with implementation without taking over responsibility for the development workflow.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Level 2: Suggestions that fit the codebase
At level 2, the assistant gains specific context about the codebase it is working in. Broad programming knowledge can suggest a plausible implementation; repository context helps it choose an implementation that belongs in this application.
Kukic’s example is a Node.js application that already uses Axios for HTTP requests. An assistant with that context should suggest Axios, rather than introducing Fetch or SuperAgent. The distinction is not whether those alternatives can make an HTTP request. It is whether the suggestion follows the application’s existing library choice.
For a concrete JavaScript illustration, suppose the developer needs a function that retrieves a user record. A completion consistent with the Axios example could be:
javascript
import axios from "axios";
export async function getUser(baseUrl, userId) {
const url = new URL(`/users/${encodeURIComponent(userId)}`, baseUrl);
const response = await axios.get(url.href);
return response.data;
}
The user endpoint gives the example a specific task; the source-grounded distinction is the choice of HTTP client. The assistant uses knowledge of the repository to narrow the implementation it proposes.
Kukic pairs this with partial driving automation: traffic-aware cruise control or automatic lane changes can perform more of the immediate work, but the human remains in control and can override the vehicle. More context improves the assistance without removing human authority.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Level 3: Requirements become integrated components
At level 3, the input becomes a high-level requirement, and the output becomes a code-based solution. The assistant moves beyond individual snippets to complete components and integrations with other software. Kukic’s example is adding user authentication to an application: the developer requests the capability, and the assistant generates the required code.
The assistant then explains what it wrote, how the implementation works, and how it integrates with the rest of the application. This explanation matters because the developer is now evaluating a larger solution than a completion inside a function. In the driving analogy, level 3 is where the vehicle takes the primary driving role, with the human available as a fallback. If the vehicle encounters a task it cannot perform safely or adequately, it hands control back.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Level 4: Proactive work, reviewed as pull requests
Level 4 changes who initiates the work. The assistant can proactively handle coding tasks without a developer supervising their execution. Kukic proposes two background workflows:
- Documentation maintenance: monitor code changes continuously and submit pull requests that keep documentation current.
- Bug fixing: monitor customer bug reports and submit pull requests addressing the reported issues.
These are proposed capabilities of the level, rather than a live demonstration of either workflow.
The developer can then review and merge the pull requests. That boundary makes the meaning of autonomy precise: the assistant independently identifies and carries out a task, while the proposed changes still pass through a human merge decision. Autonomous task execution does not, in this example, imply autonomous release.
The driving comparison is automation under specific operating conditions. Kukic points to Waymo’s driverless taxis, describing service in cities with high-quality mapping data. Within the service’s operating area and availability, a passenger hails a vehicle through an app and provides a destination; the vehicle completes the trip without further human driving input. The analogy illustrates independence within a bounded setting, rather than the ability to operate everywhere.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Level 5: From concept to production
At level 5, the assistant handles the entire software development life cycle with minimal human guidance on code generation. The developer supplies high-level requirements and specifications. The AI designs the architecture, writes production-quality code, handles deployment, and continuously improves the codebase. Deployment and ongoing improvement are part of the level’s definition, not tasks left outside the assistant’s remit.
The developer’s remaining responsibility is to validate that the end product meets the stated requirements. That validation need not involve examining the generated code. The shift is from approving implementation changes to accepting the resulting product, while the assistant has autonomy to take code from concept to production.
Kukic completes the analogy with a level 5 vehicle that performs all driving tasks under all conditions, with humans optional. In his framing, neither a steering wheel nor a human override is necessary: the vehicle makes the decisions. This is the conceptual endpoint of the presentation’s autonomy comparison.
The six levels are offered as Sourcegraph’s working framework, open to agreement and disagreement. Kukic closes by inviting discussion at Booth G5 and encouraging attendees to install Cody in their IDE through the then-current cody.dev invitation. The framework leaves a concrete question for that discussion: as an assistant gains responsibility, should the developer be writing the implementation, reviewing its changes, or validating the product it delivers?
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Resources
Further reading
Waymo's contemporary account of driverless service and its gradual commercial expansion in San Francisco.
Updates since the talk
Current guidance for Cody's codebase context, supported IDEs, and Sourcegraph Enterprise integration.
Read the complete timestamped transcript
11 slide groups. Extracted from the recording; expand builds to follow changes. Timestamps are approximate.
- 0:00
[on hold music] Hello, and welcome to my talk on how we're thinking about the Levels of Code AI.
How We’re Thinking About the Levels of Code AI
Ado Kukic introduces Sourcegraph’s internal Levels of Code AI framework, developed to educate users and shape the company’s thinking, and shares it with the broader developer community.
Text in image
Sourcegraph How We’re Thinking About the Levels of Code AI Ado Kukic
- 0:20
My name is Ado Kukic, and I am the director of DevRel at Sourcegraph. At Sourcegraph, we're building Cody, the only AI coding assistant that knows your entire codebase. To help educate our customers and users, as well as shape our thinking of Code AI, we've been using a concept that we call Levels of Code AI internally.
- 0:44
These levels have really resonated with our community, so we wanted to publicize them and start a conversation with the broader developer community, and where better to do it than at the AI Engineer Summit.
How We’re Thinking About the Levels of Code AI
Ado Kukic introduces Sourcegraph’s internal Levels of Code AI framework, developed to educate users and shape the company’s thinking, and shares it with the broader developer community.
Text in image
Sourcegraph How We’re Thinking About the Levels of Code AI Ado Kukic
Code AI
Ado Kukic defines Code AI as software that builds software. He says 92% of developers use Code AI tools, up from 1% a year earlier.
Text in image
Code AI Software that builds software
- 0:56
When we talk about Code AI, we refer to software that builds software. Today, ninety-two percent of developers are using Code AI tools, whereas this number was just one percent a year ago.
- 1:11
Our founder and CEO, Quinn Slack, has shared a bold prediction that in five years, ninety-nine percent of code will be written by AI. While we await that future, let's talk about how we see the Levels of Code AI today.
Levels of code AI
The model moves from humans as primary coders through proactive AI assistance to full autonomy over a codebase at level 5.
Text in image
Levels of code AI Human-initiated AI-initiated AI-led 0 — No assistance 1 — Code completion 2 — Code creation 3 — Interactive automation 4 — Background automation 5 — Full autonomy Keyboard callouts: if, {}, else, {}, for, [illegible], =, [illegible], </> Keyboard callouts: TAB, else, for- 1:27
We see six distinct levels across three different categories. Human-initiated, where humans are the primary coders; AI-initiated, where AI starts to take a proactive role in software development; and AI-led code, where AI has full autonomy over a codebase.
- 1:47
We'll contrast these levels of code with the SAE levels of autonomy for vehicles. Let's dive in.
SAE automation levels
The SAE scale moves from driver control to full automation. Level 2 requires continuous driver engagement; level 3 requires readiness to take over with notice. Levels 4 and 5 automate driving under certain or all conditions, respectively.
Text in image
SOCIETY OF AUTOMOTIVE ENGINEERS (SAE) AUTOMATION LEVELS Full Automation 0 No Automation Zero autonomy; the driver performs all driving tasks. 1 Driver Assistance Vehicle is controlled by the driver, but some driving assist features may be included in the vehicle design. 2 Partial Automation Vehicle has combined automated functions, like acceleration and steering, but the driver must remain engaged with the driving task and monitor the environment at all times. 3 Conditional Automation Driver is a necessity, but is not required to monitor the environment. The driver must be ready to take control of the vehicle at all times with notice. 4 High Automation The vehicle is capable of performing all driving functions under certain conditions. The driver may have the option to control the vehicle. 5 Full Automation The vehicle is capable of performing all driving functions under all conditions. The driver may have the option to control the vehicle.
Level 0
At level 0, the developer writes, tests and debugs code without AI; symbol name completion can still help. The driving analogy leaves acceleration, steering and braking to the human.
Text in image
Level 0 No AI assistance • Developer writes all the code • Traditional way to write software • Ex: Symbol name completion No automation • Human drives • No automation • Ex: Blind spot detection Keyboard illustration: if, [illegible], else, [illegible], for, [illegible], =, !=, </>
- 1:54
At level zero, the developer writes all code manually without any AI assistance. The developer is responsible for writing, testing, and debugging a codebase. AI does not generate or modify any part of the codebase, but IDE features like symbol name completion can provide a bit of assistance.
- 2:15
This level reflects the traditional software development process before introducing any AI assistance into the development workflow.
- 2:25
A vehicle operating at level zero is fully reliant on the human driver for acceleration, steering, braking, and everything in between. At level one, the developer begins to use AI that can generate single lines or whole blocks of code based on developer intent.
Level 1
The developer writes code while AI uses broad context to suggest completions. The analogy is driver assistance: the human drives, with help such as cruise control or lane keeping.
Text in image
Level 1 Code completion • Developer writes code • Code AI provides autocompletion • Broad context Keyboard illustration labels: TAB, else, for Driver assistance • Human drives • Ex: cruise control or lane keeping
- 2:42
For example, a developer might write the signature of a function, and the AI will infer the context and generate the implementation details for said function. At level one, the AI assistant has been trained on millions of lines of open source code and can leverage this to provide superior completions based on the developer's guidance.
- 3:05
SAE level one vehicles still require the full attention of the human driver, but offer features such as cruise control or lane centering that make driving an easier, safer, and more comfortable experience.
Level 2: Code creation and partial automation
At Level 2, AI uses codebase-specific context to help write code and tests while the developer remains involved. The driving analogy is supervised automation, with the human still in control.
Text in image
Level 2 Code creation • Developer writes some code • AI write some code, unit tests, documentation, etc. • Superior context Partial automation • Human drives • Car can drive supervised • Ex: Traffic-Aware Cruise Control or Automatic Lane Changes
- 3:20
At level two, the AI coding assistant has superior understanding and context of the codebase it is interacting with. Where at level one the context is broad and general, a level two AI coding assistant has specific context about the codebase that it is working in.
- 3:38
This allows the AI assistant to make better suggestions for code completions. For example, if you were working in a Node.js codebase and were using the Axios library to handle HTTP requests, a level two AI assistant would provide autocomplete suggestions based on the Axios library, as opposed to a different node HTTP library like Fetch or SuperAgent.
- 4:02
At SAE level two, we get partial automation. The human driver is still in control and can override anything the car does at any time, but features such as traffic-aware cruise control or automatic lane changes can make driving a much smoother experience.
Level 3: Interactive and conditional automation
At level 3, AI builds components and integrations from human requirements for review. In the driving analogy, the car drives while a human is ready to take over.
Text in image
Level 3 Interactive automation • AI writes code based on human requirements • Human reviews and accepts • Components and integrations Conditional automation • Car drives • Human driver takes over if needed • Tesla FSD Beta is about here
- 4:18
At level three, the developer provides high-level requirements, and the AI assistant delivers a code-based solution. The AI coding assistant goes beyond generating singular snippets of code to building out full components and even integrations with other pieces of software.
- 4:36
Rather than writing the code themselves, a developer could instruct a level three code AI assistant to add a user authentication to an application that they are building, and the coding assistant would generate all of the code required.
- 4:50
The coding assistant could then explain to the developer the code it wrote, how it works, and how it integrates with the rest of the application. SAE level three is also the first level where the vehicle itself takes on the primary role of driving, with the human driver being a fallback in case the vehicle cannot drive itself safely.
- 5:09
The vehicle can perform most of the driving tasks, but may encounter situations where it cannot adequately perform these tasks, so it's forced to give control back to the human driver.
Level 4: Background and high automation
A level 4 AI assistant could proactively submit fixes for human review and merging, much as a car handles driving without human takeover under specific conditions.
Text in image
Level 4 Background automation • AI writes most code proactively • Human reviews and merges PRs • It’s like having a Sr. Engineer on your team High automation • Car drives under specific conditions • Human take over not needed • Waymo or Cruise
- 5:20
At level four, the code AI assistant can proactively handle coding tasks without developer oversight. Let's imagine a few scenarios where a level four code AI assistant would play a role.
- 5:33
A level four capable code AI assistant could continuously monitor your code changes and autonomously submit PRs to ensure your documentation stays up to date. Even better, the coding assistant could monitor bug reports from customers and submit PRs to fix the issues.
- 5:51
The human developer could then simply review the pull requests and merge them.
- 5:57
Level four SAE vehicles can perform virtually all driving tasks under specific conditions. For example, Waymo operates a fleet of fully automated self-driving taxis in cities where they have high-quality mapping data and can provide a safe driving experience for passengers without human drivers.
- 6:17
A customer simply hails a Waymo taxi using a mobile app, provides a destination, and the vehicle is responsible for taking the passenger to their final destination without any additional human input.
- 6:31
At level five, the AI assistant requires minimal human guidance on code generation and is capable of handling the entire software development life cycle. The developer provides high-level requirements and specifications.
Level 5: Full autonomy and automation
In this model, AI handles the software development lifecycle while a human checks the end product against requirements. The driving analogy is a car that operates unrestricted without human interaction.
Text in image
Level 5 Full autonomy • AI owns software development lifecycle • Human ensures requirements are met, but not necessarily checking code generated Full automation • Car drives unrestricted • No human interaction needed • No steering wheel necessary
- 6:45
The AI then designs the architecture, writes production quality code, handles deployment, and continuously improves the codebase.
- 6:55
The developer's role is to validate that the end product meets the stated requirements, but the developer does not necessarily look at the generated code.
- 7:04
The code AI assistant has complete autonomy to take code from concept to production.
- 7:11
A self-driving car capable of level five driving automation can perform all driving tasks under all conditions, humans optional. The car is responsible for making all the decisions. At this level, a steering wheel or any ability for a human to override the car is unnecessary.
Thank you
Sourcegraph invites viewers to try Cody for free at cody.dev.
Text in image
Sourcegraph Thank you! Try Cody for free at cody.dev
- 7:31
So there you have it. The six levels of Code AI, or at least how we're thinking about them at Sourcegraph. Do you agree? Disagree? We'd love to hear your thoughts.
- 7:41
Find us at Booth G5 and let's chat. And if you'd like to try Cody for yourself, get it for your IDE of choice at cody.dev. Thank you, and I'll see you on the show floor. [outro music]