AI Still Unable to Replace Human Programming Work

2023-09-25

Supporters of artificial intelligence (AI) argue that tools like Copilot, Code Whisperer, Codesense, and similar tools that help with code completion, debugging, testing, tuning, and reviewing will alleviate the burden on developers. However, Doomers have a completely crazy vision of AI replacing human programmers and changing the current state of software development.

Matt Welsh, former Harvard professor and current founder of fixie.ai, announced earlier this year that AI is the end of programming, a claim that most of his peers are skeptical about.

Brian Hayes, senior writer at American Scientist, wrote, "I think we are still far from this goal, and we may not be moving in the right direction."

While the potential of AI is undeniable, in-depth research into its current capabilities suggests that AI is unlikely to completely or even partially take over programming. It is well known that developers who integrate AI into their workflow are more likely to thrive and be favored in this field.

AI makes programming easier

AI excels at generating boilerplate code and essentially repetitive code, such as iterating through project lists or serializing/deserializing JSON data. Developers have been using Copilot and DeepCode to do the work they used to do on StackOverflow - copying and pasting code. AI is good at copy-pasting because it has been trained on a large amount of data from the internet, effectively "memorizing" many code patterns.

AI-powered programmer platforms help them write code documentation and add comments. It can analyze the code and generate documentation for each method, along with example code on how to use it. Similar to documentation, AI can assist in writing test cases for the code. If the code testing requires generating test data, AI can infer the format of the data and generate the corresponding data.

This feature is particularly useful when working with unfamiliar code libraries, as AI's ability to help interpret code line by line is remarkable. AI models excel at understanding data. If you provide a dataset, AI can analyze its structure and understand the types represented by the column names.

Developers can ask AI various questions about the data and request different analyses. AI can even generate code for you to run and visualize the data. If you provide AI with a database schema, it can help you generate SQL queries for various tasks, such as data analysis or report generation.

Various studies evaluating the code generation capabilities of LLM highlight the need for human intervention and understanding during the programming process. While AI-generated solutions hold promise, they often require manual fine-tuning.

AI empowers developer economy

The capabilities of AI undoubtedly instill fear. However, Thomas Dohmke, CEO of GitHub, recently stated, "The demand for software developers will continue to exceed supply." Even though Emad Mostaque suggests that developer jobs will disappear in five years.

AI models work by processing tasks, such as rewriting a piece of code and producing new code as output. In this process, three components are involved: natural language instructions, accompanying code to be rewritten, and the model's output. These three elements form the context window of the model, allowing a limited number of tokens (a token is equivalent to a word, but sometimes a word may generate multiple tokens). This means that these models can handle a limited amount of information.

Undoubtedly, AI has the ability to handle some low-level tasks, and over time, it will continue to improve. However, real-world software engineering is much more complex than these tasks. Engineers face various challenges every day.

For this reason, they need to know what the company and stakeholders need, collaborate with others to understand business requirements, and design scalable solutions that consider maintainability and scalability, which AI cannot do.

Programmers are not always doing things that have already been done; they often need to innovate and come up with new solutions to unseen problems, which requires experience and a deep understanding of data structures and algorithms, as well as the ability to infer this knowledge to solve unseen problems.

The current situation suggests that AI is a collaborative way that can serve as a powerful tool to enhance the capabilities of human programmers, rather than completely replacing them.

RECENT AI NEWS

RECENT AI TOOLS