How do developers and AI get along in the Copilot era?
PUBLISHED
2024-01-25
The use of AI in software development is undergoing a dramatic evolution, led by GitHub Copilot, from a single programming aid to all aspects of the development process. The authors of this article analyze the evolution of AI-assisted development tools and suggest that it is increasingly irrelevant to debate whether AI will replace the work of human developers, and that what is critical is how all developers can coexist with intelligent assistants and dramatically improve their efficiency.
Are you using Copilot today?
Copilot is not limited to GitHub Copilot, the AI development assistant that developers are familiar with, but refers to all generative AI apps based on big model technology, such as ChatGPT (conversation), Jasper (assisted writing), Midjourney (image generation), etc. No matter what you do, there are probably places where you can use Copilot.
No matter what your job description is, the odds are that there are places where Copilot can be used. Then, try to use Copilot in those places.
The ChatGPT release at the end of 2022 will be amazing and make waves. But before that, many developers had already used a big model-enabled assisted coding tool as early as 2021: GitHub Copilot, a GitHub product based on the OpenAI Codex big model, which was built under the auspices of Microsoft, and which shocked both academia and industry as soon as it was launched.
Automatic code generation has been used as the holy grail in software engineering research and is also the scenario in which software developers are worried that AI will most likely replace them, and bosses believe that AI should be the most important to reduce costs and increase efficiency (the authenticity of which will not be discussed for the time being). For many years, software analysis techniques and heuristic rule-based algorithms have been unable to achieve the desired results, and have been hesitant in specific scenarios or theoretical research but difficult to put into practice. However, after GPT-3 and Codex started the era of big models for code generation, AI-assisted development suddenly broke through and rapidly became popular, which is very similar to the development process of the natural language field.
At the start of 2024, Big Model-based AI is still evolving rapidly, and while it’s still a long way from realizing the vision of General Artificial Intelligence (AGI), it’s evolving and accelerating several orders of magnitude faster than humans. After the uncertainty of 2023, when we became accustomed to big models, we can now look at this technology more rationally and holistically. As software developers, it’s necessary to rethink how developers and AI will get along for the foreseeable future.
But let’s start with what Copilot means.
Who and what Copilot is: from GitHub Copilot to Microsoft Copilot
The original Copilot was exclusively for developers, specifically GitHub Copilot, which provided AI-assisted programming, but after more than two years of development, the Copilot brand has long since expanded beyond AI-assisted R&D, and GitHub Copilot has long since moved beyond the basic functionality of intelligent code generation. in September 2023, Microsoft announced that a newly upgraded Copilot would be integrated directly into Windows. In September 2023, Microsoft announced that the newly upgraded Copilot would be integrated directly into Windows 11, all Microsoft Office 365 products, and Edge; at the Ignite conference in November 2023, Microsoft announced that Bing Chat and its premium version, Bing Chat for Enterprise, had been renamed Copilot; and Copilot was also included in a series of enterprise subscription programs for Microsoft cloud services. Copilot is also a key selling point and value-added service in several Microsoft Cloud Services enterprise subscription programs. Microsoft is unifying the AI services it offers in its products as Microsoft Copilot, which it hopes will become the user’s daily AI companion throughout the user’s workflow.
The productization of big model technology is the main tone of 2023, and Microsoft’s series of productization trends show that it has gradually developed a clearer positioning for current AI applications in business: let AI serve as a co-pilot, assisting human beings in various scenarios to complete the work that human beings need to complete themselves. Specifically, in the daily work of developers, more and more people are beginning to accept, adapt to, and get used to the assistance and prompts of AI when writing code, just like the auxiliary functions of IDEs.In 2023, JetBrains announced the launch of the AI Assistant, which marked the beginning of the AI-assisted development built into IDEs.The provision of assistance in the development stage by AI is beginning to settle down as AI assistance in the development phase is starting to sink in as a basic service, and in the future may become a must-have feature that developers rely on as heavily as modern IDEs.
AI-assisted coding is one of the earliest applications of big models, and also one of the most practical and commercially valuable scenarios. While ChatGPT-like chat applications are still mainly free of charge, GitHub Copilot launched paid subscription programs and enterprise-level services early and has now formed a large number of stable paid user groups and a mature and self-sufficient business model. AI-assisted development products, represented by Github Copilot, will explode in the second half of 2023 (thanks in large part to the outstanding performance of the open-source model LLaMa). So what is the current state and development of the field?
GitHub Copilot Product Development: Leaders Innovate, Followers Catch Up
First, let’s look at a year of milestone updates from the industry leader, GitHub Copilot:
In March 2023, Copilot was upgraded to Copilot X, with access to GPT-4 and a host of new features:
GitHub Copilot Chat, enabling conversations with AI to finish coding;
Copilot for Pull Requests, where the AI assists developers in describing changes;
Copilot for Docs, for intelligent authoring and Q&A of service documentation;
Copilot for CLI, using AI to assist with command line usage;
Copilot Voice, where programs are written by speaking.
In May 2023, GitHub launched Copilot Labs as an upgraded companion extension, offering early experiments and upcoming new features such as code interpretation, inter-language translation, code brushes, test case generation, and more. The most powerful of these is Code Brushes, which not only comes pre-built with readability enhancements, type inference, bug fixes, and supplemental documentation and annotations but also supports customizing prompts and saving them as tools, which is equivalent to empowering developers with the ability to extend Copilot again as well as personalized customizability.
In November 2023, GitHub released Copilot Workspace, which is more closely linked to the group collaboration features of the GitHub website, and is designed to help developers accomplish more complex tasks, such as generating code perceptually across file contexts, Q&A based on entire repositories, and generating multiple code changes for issues. From now on, Copilot’s stage is not limited to the IDE on your PC, nor the individual developer’s separate workspace.
Looking at projects outside of Copilot, I would categorize them into the following three groups:
Commercial Competitors: Copilot competitors launched by large companies or startups include Amazon’s CodeWhisperer, Sourcegraph’s Cody, Anysphere’s Cursor, Google’s Codey, JetBrains’ AI Assistant, etc. In China, there are Huawei’s CodeArts, there are Huawei’s CodeArts, CodeGeeX, Baidu’s Comate, KDDI’s iFlyCode, and so on.
Open Source Pingtai: Open source projects that realize Copilot-like functions, such as auto-dev, Devpilot, FauxPilot, etc. Generally focus on realizing the engineering part, and the core part. Generally focusing on the realization of the engineering part, the core part of the required AI capabilities relies on the access of large model APIs, such as OpenAI API, Azure API, autonomous deployment model API, etc.
Frontier Exploration: Explore AI autonomous and independent agent projects, such as MetaGPT, GPT Pilot, DevOpsGPT, ChatDev, etc. The basic idea is to simulate human software development. The basic idea is to simulate the organizational structure and development mode of a human software development team, give AI different roles and skills, and let it communicate and collaborate autonomously to complete end-to-end project-level development or the realization of complex tasks.
In comparison, it is easy to see that GitHub Copilot has long since moved beyond being an assisted coding tool that provides suggestions for code completion, but most of the competitors or alternatives are still aiming at the basic function of AI-assisted coding. On the one hand, it is because this function is the most important part that most users or customers think AI should and can maximize efficiency, and on the other hand, it is because the followers can hardly be said to be at the same level as Copilot in this basic function.
Since there is no difference in effectiveness but only a gap, it is necessary to differentiate in other ways, as commercial companies provide uniqueness by linking to their other knowledge bases or services, while startups and open-source projects focus on controllability and freedom.
However, Copilot, as an industry leader, has already positioned itself beyond the single point of efficiency in the development stage, and started to lay out a wider range of scenarios: on the one hand, it has launched the interpretation, translation, and Q&A functions around the code, and on the other hand, it has begun to develop the capabilities beyond the code, and has extended from the development stage to the two ends of the software development process. In terms of pattern and hierarchy, Copilot, as the industry leader, still maintains a distant lead.
Agent, unlike its competitors or the ping-pong approach, is a bit more radical and bold, exploring the possibilities of AI in software development from the perspective of intelligence beyond the scope and boundaries defined by Copilot.AI Agent tries to build an end-to-end software developer that can deliver software that meets the requirements given the requirements, which relies on the strong assumption that the AI used to implement Agent has at least one outstanding AI that is capable of developing the code. This relies on the strong assumption that the AI used to implement the Agent has at least the cognitive, thinking, following, reflecting, and collaborating capabilities of a good software developer, which is already a requirement for a strong general-purpose AI.
Current state-of-the-art AIs have not yet met such high requirements, which means that the use of AI Agents for software development is currently and will be in the exploratory stage for a long time to come. Although Copilot is also developing in the direction of an intelligent body, from the initial programming assistant to a more and more comprehensive “tool”, it does not strive for autonomy or even intentionally restrains it, and still positions the AI as a developer’s assistant rather than a self-initiated intelligent body, which is the biggest difference from most of the current Agent projects. This is the biggest difference with most of the current Agent projects.
From the current development situation, we can summarize three consensuss on the future direction of AI-assisted development practitioners:
From the bottom-layer localized code implementation to focusing on the upper-layer architecture and planning;
From single-point efficiency gains in the coding phase to full-process gains in development;
From completing deterministic tasks to working creatively and autonomously.
So, with this consensus, let’s go back to our original question: how will developers and AI get along in the future?
How developers and AI get along: AI for developer not AI as developer
Predicting the future is hard, so we need to include some limitations and premises: AI here refers specifically to current AI implemented based on techniques related to big models, and is analyzed based on an extension of currently known research and engineering practices.
Predictions are more difficult to make accurately, so we might as well use the probabilistic thinking of AI and big models to directly enumerate the possible patterns:
Pilot-Copilot: The initial setup of the Copilot, where a human breaks down as well as performs tasks, in which the AI acts as a deputy to assist the human in faster tasks, and is unable to complete the work independently of the human.
Master-Worker: Human beings set high-level tasks and then hand them over to the AI to complete the specific realization, the AI can automatically complete the lower level of decomposition and iterative cycle, and human beings need to assume the responsibility of controlling the input and output.
Peer-Peer: Theto AI is given the same status as humans, divides the work equally, and develops in parallel. The AI is responsible for exploring the realization scheme, while humans are responsible for architectural design, division of labor, integration, etc., to realize the complementary advantages.
Apprentice-Mentor: Human ability and growth begin to lag behind AI, people seek architecture and realization suggestions from AI, make up for their knowledge blind spots by asking for advice and learning, and grow their shortcomings through hands-on work and practice.
Agent-Boss: human beings have been completely disconnected from AI, unable to understand AI’s way of thinking and realization of details, human beings only need to tell AI what they can do, AI is responsible for the decomposition of the problem and task allocation, human beings as one of the many tools called by AI.
In the first three modes, the human developer is still the dominant and responsible body of software development, while in the latter two modes, humans gradually lose their position and AI becomes the dominant player at the realization level. These models are not recursive and therefore do not conflict; like parallel universes, all of these possible futures will occur, and may even coexist in one world at the same time, depending on the specificity of the scenario, the prevalence of the problem, the complexity of the task, and how it is used by the individual, among many other factors.
So, is there a commonality between all possible models? Yes, what remains constant is that the problem definers and requirements formulators have always been human beings, and the end-users are still human beings, as long as the motivation for software development is still to satisfy human needs. After the two years from 2021 to 2023, most developers from the beginning of the apprehension to later dispel the charm, and gradually understand the current AI technology in the actual work of the capabilities and limitations, and began to think about how to better use this tool to better complete their work – that’s right, the correct attitude is to treat AI as a tool, regardless of its capabilities, to look at it as a tool. The right attitude is to look at AI as a tool, and no matter how powerful it is, it’s still our existing tools (Google Search, Stack Overflow, IDEs, even programming languages and design patterns) that are being replaced.
With this in mind, it’s increasingly pointless to debate whether AI will replace the work of human developers; the more practical question is how developers can get along with AI to increase their value. There may not be a definitive answer to this question, but we can derive a simple principle from the above analysis: AI for developers rather than AI as developers, as long as the value of human developers can be better utilized, then it is the right way to get along.