Adapting to AI: The Future Role of Engineers in Software Development
We are in an era of rapid technological changes with AI agents. Large Language Models (LLMs) have become a significant influence in software engineering. According to a recent report, AI contributes to generating nearly 50% of the new code in Google's codebase. This article is the first in a series where we will explore the current and future effects of LLMs on software engineering teams, and how teams can become robust to them.
Evolution and Application of LLMs in Software Engineering
The transformer technology that serves as the basis for modern Language Learning Models (LLMs) has been around since 2017. Yet, only recent advances in scale and computation have made LLMs practical for many applications. This, combined with the growth of ChatGPT and its demonstration of LLM capabilities, has led to their widespread use in various industries.
In software engineering, this began with simple tasks like code generation using tools such as GitHub Copilot in 2021, a year prior to ChatGPT. By leveraging all public repositories on GitHub, LLMs effectively function as code completion tools. However, user experience is crucial for integrating LLM solutions into human workflows, as they're not yet fully autonomous. Engineers utilize code completion for certain tasks, then edit or reject the AI-generated code, repeating this process as needed. The GitHub team has put significant effort into improving user experience, ensuring that code completions align with user needs. Today, Copilot and similar tools are seen as vital for code development.
As LLMs have grown more popular and their applications easier to develop, they've started to permeate other areas of the software development cycle. The next frontier appears to be code reviews, both in creating and amending code based on feedback. LLMs can help identify common mistakes, enforce company-specific coding patterns, and even make code changes requested by a reviewer. They're also useful for generating commit and PR messages. Some more advanced ecosystems, like Google, use AI agents to automate the fixing of broken builds. Several companies are now competing in this space, aiming to provide the ideal user experience. However, they're primarily hindered by the fact that LLMs still make significant errors and require close human intervention. These limitations are not likely to last indefinitely and might even be short-lived.
The Future Role of Human Engineers in an AI-Dominated Field
In the foreseeable future, advancements in AI will take over routine coding tasks like generating code, managing PRs, and using dependencies. This means human engineers will focus more on tasks like planning, risk checking, designing, and making sure things work well - tasks that senior engineers usually do. The coding humans do will be for special cases that AI can't handle because it doesn't have enough data or the right kind of input.
LLMs, which can behave like a team of junior developers, will generate a lot of code. As AI does more coding tasks, all engineers, including new ones, need to become good at leading and delegating tasks. They need to guide the AI, make sure it's correct, and step in when it doesn't work. These are skills usually associated with senior roles guiding their more junior teammates.
To adapt to these changes, even new graduates need to learn how to lead and delegate tasks. The key to using AI for software development is to give tasks to the AI and only step in when needed. When AI doesn't work, the responsibility changes to giving feedback so the AI can fix the problem itself. Engineers should practice these skills. For example, take a GitHub issue in a public repository and guide an AI to solve the issue. Senior developers need to think about how they can teach junior members these skills quickly.
This doesn't mean that engineers no longer need to learn coding. Coding remains essential, as unique situations often require human intervention, and reviewing others' code necessitates an understanding of code writing. It simply suggests that engineers should start acquiring skills typically learned later in their careers at an earlier stage.
Conclusion
In conclusion, the rise of AI and LLMs is fundamentally changing the landscape of software engineering. The AI's ability to handle routine coding tasks will shift human engineers' focus towards more complex tasks, typically handled by senior engineers. This shift necessitates a change in the skill set of all engineers, requiring them to become proficient at leading and delegating tasks to AI. As we embrace this new era, the ability to adapt, guide AI, and learn from feedback will be vital for the software engineers of the future.