What do Copilots mean for the future of development – and developers?
No doubt, AI is changing things, for better or for worse.
Have you heard about Copilots?
They are AI-powered tools in development environments that automate tasks, generate code, and offer suggestions based on natural language inputs, often utilizing Large Language Models (LLMs) for context understanding.
We queried Emanuel Lacic, Principal Engineer at Infobip, about this developer’s wingman. He will also address this topic at this year’s Shift Miami conference. Keep reading; we have a surprise at the end.
The many ways copilots aid in coding
According to Emanuel, Copilots can significantly boost developer productivity and efficiency. “They can automate repetitive tasks, suggest good coding practices to apply to an existing block of code or reduce the time spent on debugging,” he says.
Lacic also believes that the focus of Copilots that are specialized for coding tasks will go towards the direction of improving context-aware code suggestions (e.g., consider recent changes in code that may signal what the final solution should look like).
Additionally, real-time error detection stands out as a crucial feature that numerous development environments prioritize, given its significant impact on enhancing productivity.
Copilots, adds Emanuel, also can contribute to the automation of repetitive tasks – and that can affect developers’ roles and responsibilities.
Refactoring existing code within a project, writing boilerplate code as well as the accompanying documentation are daily tasks of every developer. These definitely fall into the category of repetitive tasks that can be automated (at least partially) with Copilots.
With that, developers are able to focus more on complex problem-solving and strategic tasks. But this can also potentially mean that the role of software developer will requires a much deeper understanding of the automatically generated code blocks with respect to their integration to the underlying system architecture.
We also asked Emanuel can copilots assist developers in identifying and addressing common coding errors or pitfalls more effectively, and he gave us example of Github’s Copilot.
“The underlying model is trained on a vast amount of lines of code from publicly available sources, including code in public repositories on GitHub. With such knowledge at its disposal, the underlying LLM can have the ability to identify patterns that may lead to errors or inefficiencies and suggest corrections or better alternatives. This not only helps to catch errors in an early phase of development, but can also aid in educating the developer about best practices and potential pitfalls,” he says.
Developers’ roles might not be the same
Shortly, Copilots will become an integral component of many development tools and environments.
According to Emanuel, they could be particularly impactful in areas requiring substantial boilerplate code, such as mobile app development, or in implementing complex algorithms for which you would have previously needed to invest a lot of time in understanding the theoretical background of an algorithm before being able to implement and test it out.
And can copilots lead to the emergence of new development practices or methodologies?
Yes, the integration of AI-based Copilots might lead to development methodologies that are more interactive and human-centered. The main factor here is the real-time feedback of the Copilot during the development process. This could for example lead to promoting a more agile practice, where a code-based Copilot is acting as an on-the-fly reviewer for code quality assurance.
However, incorporating features like Copilots can present a challenge in maintaining compatibility across various coding environments.
Emanuel also believes that over time, ensuring the relevance and accuracy of suggestions as project contexts change can be challenging. Additionally, user acceptance and trust pose challenges, as developers may become skeptical of automated suggestions with evolving technologies.
In addition, there is a possibility that developers will change.
There is a possibility that their roles will partially shift towards more design and review-focused tasks. However, companies should consider the impact on their development processes and the overall team structures concerning the necessary skills a developer needs to already have acquired to work effectively alongside a code-based Copilot.
Traditional programming skills will stay relevant, but developing new competencies may be necessary to collaborate effectively with Copilots. This could involve understanding natural language processing and its limitations in communicating intentions effectively.
The biggest Copilot concerns? Transparency and skills
Addressing concerns about transparency and accountability in Copilot, Emanuel says that it does not only depend on the respective developer but also the organizational structure of the company.
“There will be a need to establish clear guidelines and policies regarding the use of copilot-generated code, including attribution, licensing, and ownership. It may become important to maintain a clear understanding of which parts of the codebase are generated by copilots and which are created by human developers”, he thinks.
While the benefits of Copilots are significant, potential overreliance raises concerns about developers’ critical thinking and problem-solving skills.
Overall I feel that the benefits far outweigh the possible concerns regarding impacting a developer’s skills.
Yes, when routine tasks are automated and a developer is frequently provided with pre-formed solutions, there is a risk of becoming sloppy when needing to independently analyze a complex problem.
He adds that there is also an ongoing discussion of how much will such a functionality impact newer developers who still need to bridge the skill gap between them and more senior colleagues. “It will possibly become crucial to balance the use of a Copilot with opportunities of ongoing education in fundamental software engineering principles.”
Looking ahead, Copilots are poised for evolution beyond code-centric applications. In the coming years, advanced Copilot-like functionalities will integrate into various software solutions targeting diverse user groups beyond developers.
“For example, in Copilots that focus on creative writing, I expect to see improvements in the process of brainstorming ideas with human writers in a collaborative manner. We will probably also see more Copilots that focus on aiding decision-making in domains like business, policy, and complex design tasks. Each of these application domains will bring their specific requirements and problems which the Copilot will need to resolve based on the provided natural language input,” Emanuel concludes.