Tools like CodeGen, OpenAI Codex, Copilot, ChatGPT, or Devin – to name just a few – are already established in software development. Tech companies introduce them as AI Software Engineers or Pair Programmers, offering an exceptional range of features. They write unit tests, complete performance optimizations, and develop prototypes based on UI mockups and human sketches. They use the latest frameworks and tools, write code in various programming languages, develop entire apps, test and debug those, or do code completion during programming.
Users interact with these AI tools with natural language. The option to develop software through natural language instructions, and images is both unique and revolutionary. But what lies behind these “thinking” AI software developers? Can creativity and intentionality be programmed? Will language models soon be the better programmers?
What AI-Based Code Generators Can and Cannot Do
Natural language processing and AI-based image generation have significantly advanced. Using AI-based translation programs, chatbots, and text and image generators has become almost standard. NLP applications have achieved impressive results in recent years.
Programming languages can be easily classified according to patterns and examples due to their simplicity and limited nature, making them well-learnable for AI algorithms. Today, humans can hardly distinguish the code of a junior developer from that of an AI.
AI can represent extensive knowledge about programming constructs, APIs, algorithms, etc. Experts are discussing whether AI can incorporate practical, perhaps even domain-specific know-how. Domain knowledge based on a human-defined domain model is essential for solving programmatic problems in a specific area. To solve a particular issue autonomously, AI must be proficient in the corresponding domain and transfer this knowledge into the programming code. Thus, AI needs intentionality and intelligence to be able to match flexibly code fragments with real-world problems.
However, generative AI tools cannot solve problems programmatically on their own. They are a well-thought-out product of human intelligence, providing various code solutions for specific programming problems, such as the code for an HTTP call in a particular programming dialect. These AI tools bundle search results similarly to search engines, allowing different solution proposals by changing the natural language query. Therefore, we should remember that AI tools are products of human intelligence, creativity, and collaboration. Their development depends on many parameters. Thus, the tools can be buggy, incomplete, erroneous, and security-critical.
Why Do We Need AI-Based Code Generators?
Did developers use code generators before? Yes, they did!
Traditional code generators require structured models as input, defined in an abstract language. With this, it generates deterministic code to be integrated into implementations. The advantage of these models is that a contract can be defined, and the usage for code generation on different systems. If code needs to be modified, developers adjust the model. AI-based code generators, on the other hand, bring a paradigm shift. They are controlled by natural language instructions, eliminating the need to learn a modelling language. This interchangeable modelling layer between software developers and the system is completely missing. Instead, generative AI offers entirely new possibilities, such as the quick and easy creation of prototypes.
The Dark Sides of AI-Based Code Generators
One disadvantage of AI-generated code is the lack of transparency regarding the underlying data. How can software developers ensure the correctness of the generated code if they have no information about the quantity and quality of the training data? Are certain technologies or algorithms possibly underrepresented in the training dataset?
Due to such uncontrollable parameters, the experience of software developers plays an important role when using code generators. Without this experience, it is hard to judge what interactions a solution might have or whether to trust the code.
Learning and Experience Are Key
In the age of digitization, technical solutions and programming code have long been searchable and transferable into one’s codebase. But the way of programming changes if AI-based coding tools automatically generate new applications and permanently optimize the existing code. Will creative work still be done by developers? Or will their future tasks mainly focus on specification, modelling, and maintenance? What role will characteristics such as professional experience, creativity, memory, teamwork, and craftsmanship play in programming? The subjective nature of programming and the creative processes of programmers may change with AI tools. However, the internet and the supportive nature of such tools do not make learning programming obsolete.
Interested in more details about using AI agents for software development or other applications of AI? Stay tuned (e.g. via the DevHub RSS feed) for more and don’t hesitate to contact us with feedback and questions.