Nvidia CEO Jensen Huang recently made a stir by declaring that children do not need to learn to code since AI would do it for them.
“Over the last 10-15 years, almost everyone who sits on a stage like this would tell you that it is critical that your children learn computer science and that everyone learns how to program,” he said at the World Government Summit in Dubai earlier this year. “In fact, it is almost exactly the opposite.”
Is he correct?
I am not a talented developer, but owing to a free tool called SWE-agent, I was able to debug and resolve a complex issue involving a misnamed file across many code repositories on the software-hosting site GitHub. I aimed SWE-agent to a GitHub issue and watched it go through the code, figuring out what was incorrect. It accurately identified the underlying cause of the error as a line pointing to the incorrect location for a file, then travelled through the project, found the file, and modified the code to ensure that everything ran properly. It’s the type of problem that an unskilled developer may spend hours attempting to debug.
Many developers are already utilising artificial intelligence to build software more swiftly. GitHub Copilot was the first integrated developer environment to use AI, but many IDEs now automatically finish code portions when a developer begins typing. You may also ask AI questions about code or have it provide ideas for how to enhance what you’re working on.
Since OpenAI’s GPT-3 language model first raised eyebrows with its ability to generate HTML websites from simple written instructions, the AI field has seen a slew of breakthroughs, with systems now capable of writing complete computer programs from natural language descriptions and automated coding assistants boosting programmers’ output. Most surprising are AI coding agents such as Cognition AI’s Devin, which is advertised as an autonomous AI developer, and CodiumAI’s Codiumate, which creates code while also having an “adversarial” component that critiques and improves the created code.
While coding as we know it is being disrupted, the creative, problem-solving aspect of computer programming is likely to remain mostly human for the foreseeable future. Rather than replacing programmers entirely, AI-powered tools complement human talents, allowing them to create more code quickly. Last summer, two Princeton PhD students, John Yang and Carlos Jimenez, started talking about what it would take for AI to become a real-life software developer. This prompted them and colleagues at Princeton to develop SWE-bench, a collection of benchmarks for evaluating AI technologies across a variety of coding jobs. After publishing the benchmark in October, the team created its tool, SWE-agent, to handle these duties.
SWE-agent (“SWE” stands for “software engineering”) is one of several far more capable AI coding programs that go beyond simply creating lines of code to operate as so-called software agents and use the tools required to wrangle, debug, and organise software. Devin’s business became popular in March after releasing a video demo of one such product. According to Ofir Press of the Princeton team, SWE-bench might enable OpenAI to verify the performance and dependability of software agents. Just as GitHub Copilot has shown that big language models can produce code and increase programmer efficiency, tools like SWE-agent may demonstrate that AI agents can perform dependably, beginning with code development and maintenance.
Several firms serve as software testing agents. The top of the SWE-bench leaderboard, which compares the performance of several coding agents across several tasks, is one from Factory AI, a company, followed by AutoCodeRover, an open-source entry from a team at the National University of Singapore. Major players are also jumping in. Amazon Q, a software writing tool, is another top performance on SWE-bench. “Software development is a lot more than just typing,” explains Deepak Singh, vice president of software development at Amazon Web Services. He also mentions that AWS has used the agent to convert whole software stacks from one programming language to another. “It’s like having a really smart engineer sitting next to you, writing and building an application with you,” Singh says.
AI-powered code generation tools, such as GitHub Copilot, CodiumAI Codiumate, and Amazon CodeWhisperer, have already transformed the way developers code. These tools accelerate development while also improving their ability to generate valid, compilable, and executable code. The internet is full of anecdotes about non-coders constructing basic applications using AI-generated code. According to a recent GitHub poll of 500 developers in the United States, 92% are already utilising AI coding tools both at work and on their own time.
Meanwhile, things are moving quickly. Devin, Cognition’s agent, appears to be capable of writing and debugging code on its own based on developer-provided chat commands. Because the product has not yet been made available to the public, evaluating its capabilities will take some time. Google DeepMind has announced AlphaCode 2, a research project based on Google’s Gemini Pro model that it claims beats 85% of rivals in coding competitions.
GROWING PAINS
So, what lies ahead?
For the time being, it appears that programmers will continue to be needed, but the nature of their work, the skills necessary, and the areas they focus on will change. According to a team of experts at the US Department of Energy’s Oak Ridge National Laboratory, AI will likely replace software professionals as early as 2040. “Programming trends suggest that software development will undergo a radical change in the future: the combination of machine learning, artificial intelligence, natural language processing, and code generation technologies will improve in such a way that machines, instead of humans, will write most of their code by 2040,” says the team.
Software engineers are naturally concerned. In fact, over 30% of the 550 software professionals polled by Evans Data Corporation, a California-based market research business specialising in software development, predict that artificial intelligence will replace their development efforts in the near future. AI has had a considerable influence on the software development environment in recent years, resulting in several important developments and improvements. Programmers use AI to produce code, automate tedious and uninteresting activities, find defects more readily, and improve DevOps efficiency.
AUTOMATING TASKS
AI allows developers to automate some sorts of software development jobs, increasing productivity and efficiency. AI-powered tools, for example, may produce code snippets automatically, rewrite code, and help find and solve bugs. This allows you to save time and focus on more sophisticated and important parts of software development.
CODE SYNTHESIS
AI technologies may create code using known patterns and examples. This includes auto-complete suggestions in integrated development environments (IDEs) as well as code snippets created by AI for specific tasks. AI may also optimise code by detecting duplicate or inefficient components and recommending enhancements.
BUG POLICE
Artificial intelligence also had an impact on the testing and quality assurance procedures. AI-powered testing solutions can analyse code, discover possible vulnerabilities, and produce test cases automatically. Machine learning techniques are used to learn from previous test results and forecast which sections of code are more likely to have errors. This allows developers to detect and resolve difficulties early in the development process, resulting in higher-quality software.
EVOLUTION OF PROCESS
AI has helped to shape the evolution of DevOps methodologies and continuous integration/continuous delivery (CI/CD) pipelines. AI approaches may analyse code modifications, test results, and production data to offer information about performance, quality, and possible concerns. This helps to expedite the software development lifecycle, improve deployment procedures, and raise overall software quality.
NEW USE CASES
NLP, an area of artificial intelligence, has made considerable advances in understanding and processing human language. NLP technologies have affected software development by enabling chatbots, virtual assistants, and voice-activated interfaces. These apps let users connect with software systems in natural language, improving user experiences and creating new opportunities for software development.
CRITICAL SKILLS FOR SOFTWARE DEVELOPERS IN THE AGE OF AI
AI is going to transform what it means to be a coder. It will not remove programmers, but it will force them to learn new skills and work in novel ways. In the era of AI, developers may improve their abilities to remain relevant and capitalise on the opportunities given by AI. Here are some important AI-related abilities for developers.
MACHINE LEARNING (ML) AND DATA SCIENCE
Understanding the fundamentals and techniques of machine learning is critical. Developers should learn about various machine learning techniques, data pretreatment, feature engineering, model assessment, and deployment. Furthermore, learning about data science, such as data visualisation, exploratory data analysis, and statistical analysis, will help you build a good basis for working with AI.
DEEP LEARNING AND NEURAL NETWORKS
Deep learning revolutionised AI and is now widely employed in a variety of applications. Developers should become acquainted with neural networks, namely convolutional neural networks (CNNs) for image processing and recurrent neural networks (RNNs) for sequence data. Learning frameworks such as TensorFlow and PyTorch can be useful for developing and training deep learning models.
NATURAL LANGUAGE PROCESSING (NLP)
NLP focuses on comprehending and processing human language. Developers can study methods including text preparation, sentiment analysis, named entity identification, and language creation. Knowledge of libraries such as NLTK, spaCy, and transformers can help with NLP jobs.
TECHNICAL DEBT MANAGEMENT
Developers must understand how to deal with various sorts of rising technical debt. Managing technical debt is critical to ensure that the product may grow and adapt without requiring extensive rework. Software engineers must weigh the immediate benefits of speedy patches against the long-term consequences for productivity.
Although code generation models may eventually replace low-skilled coders, experts will likely become even more vital, offering architectural vision and guidance. Meanwhile, as AI raises the bar, achieving that level of skill may take more time. Furthermore, as AI grows more powerful and autonomous, there is a safety reason why we want people who can code. “If you aren’t the one piloting the vehicle, the AI is learning, and you are just sitting in the passenger’s seat,” Harvard University professor Jal Mehta recently stated. Garry Kasparov, the chess champion and author of Deep Thinking: Where Machine Intelligence Ends and Human Creativity Begins, writes, “If the machine is programming itself, who knows what it might do.”