When OpenAI released GPT-3, a natural language artificial intelligence, people found that it could do much more than just create stories, answer questions and give advice. When presented with programming problems, the AI could debug code, understand code and write usable solutions.
The AI was never programmed to do that — fundamentally, natural language AIs like GPT-3 are only trained to complete the next word in a sentence.
Immediately, the software engineering world used natural language AI’s new capabilities. Existing programs that helped software developers write code — Integrated Development Environments (IDEs) — started integrating AI-powered suggestions into their software, allowing them to write code by accepting suggestions with a single key press. Using these features, developers could code and debug significantly faster.
Luckily, despite the increase in efficiency, studies have found that AI hasn’t eliminated jobs or opportunities for software engineers. Unfortunately, AI-assisted development does have other drawbacks that have to be addressed.
In June 2022, GitHub Copilot, a GPT-3 powered tool by GitHub that could automatically autocomplete and debug code, quickly grew prominent. Developers were writing code faster, building products quicker and enjoying their time programming more.
According to a GitHub blog post reporting on a study by GitHub and Accenture, over 50,000 organizations had adopted GitHub Copilot. In those organizations, developers wrote code 55% faster and increased the rate of completed pull requests — ready-to-use features or bug fixes — by 15%.
The positive effects also extended beyond work performance. “90% of developers expressed feeling more fulfilled with their jobs when utilizing GitHub Copilot, and a staggering 95% of developers reported enjoying coding more when leveraging GitHub Copilot’s capabilities,” said GitHub.
But, whenever technology increases efficiency, fears of jobs being lost or automated often appear.
“Fears [about taking over jobs] existed when the steam engine was created, when the integrated circuit was created and when the PC was created,” said Aram Ansell, a computer science teacher at Ida B. Wells-Barnett High School. Ansell has been in the computer science field for over 24 years and has taught computer science at IBW since 2022. In his classroom, he encourages the use of AI-assisted programming tools, like GitHub Copilot.
“There’s been massive technological disruption, and all those inventions have had jobs go away. Each one of those things led to displacement of workers in the workforce,” he said. “But it also created many more jobs as well.”
According to a study by Matthew Baird et. al, “While low-skill service jobs have grown due to the types of skills and tasks involved, the overall effect of technological change has been an increased demand for skilled labor.”
The potential impacts that AI could have on the general job market are infinite, but many positive outcomes result from implementing AI in software engineering, especially in productivity. It allocates menial tasks to AI, allowing humans to focus on higher-level tasks.
“The idea of implementing AI in coding is fascinating, as AI can help experienced coders code faster, it can also assist you with errors. Advanced debugging tools powered by AI can quickly identify and rectify errors, making the development cycle faster and more efficient. These efficiencies allow programmers to become more like strategists, guiding AI tools to achieve optimal results and having more time for problem-solving,” said James Gappy, a professor at the University of California San Diego.
With AI code assistants being implemented in the computer science class here at IBW, Ansell said, “AI lowered the barrier to entry and [a student] was able to have success with writing code,” which gives more opportunities to kids who have never coded before but want to learn. AI can give people the ability to code effectively and allow them to learn through the process. Most of the time when an error occurs, AI will explain what you did wrong and how to fix it, giving programmers a deeper understanding of their work.
Despite all its benefits, there have been drawbacks to AI-assisted programming. Declining code quality, licensing concerns, and security issues have posed problems ever since AI tools have been introduced.
AI assistant tools generate more code mistakes that need to be removed or fixed, increasing the risk of bugs slipping through the cracks and reaching production. According to GitClear, a software engineer management platform, code churn — a metric measuring the number of lines of code written only to be deleted or changed afterward — “…is projected to double in 2024 compared to its 2021, pre-AI baseline.”
AI tools also affect code maintainability. They focus on creating suggestions that are more likely to be accepted, rather than easier to implement. Due to this, they often repeat or rewrite code, instead of referencing code that already exists. It’s more beneficial to reference code because if its functionality needs to be updated, it only needs to happen in one place.
Unlike simple mistakes, this maintainability issue has longer-term consequences. GitClear said, “There is perhaps no greater scourge to long-term code maintainability than copy/pasted code…[and it] often persists long past its expiration date. [T]he willpower cost of understanding code well enough to delete it is hard to overstate.”
AI programming assistants also cause copyright and licensing concerns. This is because to improve these assistants, they need to be trained using training data — very large amounts of real code. Most AI assistants choose to create this training data from popular code sharing websites, like GitHub or Replit, because they contain the necessary amount of code.
However, this can cause problems when those websites contain code that is not in the public domain. If the website data contains pieces of copyrighted code, but is mistakenly marked as being fully in the public domain, it is still included in the training data, violating copyright law. Because of the amount of code needed, it’s typically too expensive or even completely impossible to screen and check every piece of data for copyright.
This inability to check training data also creates a security problem — leaked passwords. Often, code will need to automatically log into an account to access the data it needs. For example, a budgeting app might need to access bank information to gather income and expenses. When amateur software developers first begin developing products, they might use their own passwords for testing their code, and forget to remove them before publishing their code to code sharing websites. Because of the massive amount of code used in the training data, these cases aren’t uncommon. This can lead to scenarios where AI assistants suggest real passwords found in the training data, letting others log into accounts they don’t own.
Natural language AI in software development has had many positive effects, but also negative impacts on the industry. Because of the ever-changing nature of AI development, the future impacts of AI will be unpredictable. For current engineers and industry leaders, that means that going forward, adaptability and problem-solving will be more important than ever.