Table of contents [ hidden ]
- OpenAI’s algorithms have opened the door to code generation AI, but what impact will they have on software developers?
- The complexity of being a programmer
- In summary
OpenAI’s algorithms have opened the door to code generation AI, but what impact will they have on software developers?
GitHub recently announced a new code generation AI called Copilot . Unfortunately, the way Microsoft-owned GitHub uses machine learning to collect and use the data that powers its software is questionable . So anyone using this AI could be sued .
But GitHub isn’t the only company developing code generation software. For example, startups such as Enzyme and Debuild are developing solutions that allow you to simply describe what you want to build and generate code. Neither startup’s products have been released to the public yet, but the demos released so far look promising.
“ There is no doubt that many companies will announce code generation technology in the next few years. ”
Behind the explosion of code generation software in recent years is OpenAI , an organization best known for its impressive advances in natural language processing (NLP ). The organization provides the algorithms underlying the software to the three companies mentioned above.
Last summer, I published a book about artificial intelligence (AI) implemented in the real world . Among them, I briefly introduced that machine learning software that can write code autonomously has begun to appear in various forms.
However, I was surprised that a tech giant like GitHub was able to bring its solution to market so quickly. Other major companies must be preparing to release their own code generation AI products, observing and learning from Copilot’s successes and shortcomings.
There is no doubt that many companies will announce code generation technology in the next few years.
The code-writing AIs we’ve seen so far are clearly not perfect, but keep in mind that these tools are brand new and are improving at a dizzying pace. Imagine how powerful these tools will be in 5, 20, 50 years.
It’s no wonder you see young developers worrying that their work might be automated. Should programmers fear losing their jobs? Is it a waste of time for students to get software development degrees?
To dispel such anxieties, I can say the following.
“Programmers won’t be replaced anytime soon.”
Currently, there is a Waitlist page for companies that want to use the OpenAI Codex API . Companies wishing to use the API will fill in the required fields and undergo an OpenAI review. In addition, the following demo video of the same AI has been released on YouTube.
The complexity of being a programmer
First, let’s be clear: none of the three aforementioned companies sell products that replace humans.
GitHub explicitly describes its product Copilot as ” AI pair programmers ,” and Debuild CEO Sharif Shameem has said he disagrees with the idea that machines will replace programmers . ※Translation note 3).
Rather, the code generation AI will act as a developer’s assistant.
When it comes to software developers, some people underestimate the complexity. Writing code is only part of a programmer’s job.
“Programmers will not be replaced anytime soon”
Developers have a wide variety of tasks. Besides writing code, developers have to perform other major tasks such as:
These are just a few of the tasks assigned to developers. Other tasks include creating documentation, reviewing code, and updating tickets.
For example, let’s say that an AI is discovered that can write code like humans. Now, for the software developer’s job to be automated, machine learning algorithms need to be able to do everything but code. The possibility of AI replacing such jobs will be discussed below.
On September 7, 2020, Business Insider published an article interviewing Debuild, a startup developing source generation AI, and its CEO Sharif Shameem . According to the article, GPT-3 is used for Debuild’s source generation AI, and the CEO actually tweeted a demo video that generated Google’s search top page and its source code (see tweet below) ).
Concerns have been raised that the above source generation AI may completely replace programmers. In response to these concerns, the CEO said, ” Instead, we need more human developers to develop AI apps . ”
Understanding business requirements
The complexity of this task cannot be overemphasized. Understanding end-user needs and translating them into technical requirements, user interfaces, and ultimately code is one of the most difficult steps in software development.
Product owners, project managers, designers, developers, and users all have different visions of the systems they want.
Each has a clear understanding of what the needs are, how much the budget allows, and how the process can be improved.
As a software developer, I have worked in various teams to build solutions for large Swedish companies and generally conclude that the biggest challenge in software development is communication.
We’ve seen systems that are technical masterpieces built to specifications but fail to solve the real needs of the end user.
“Product Owners, Project Managers, Designers, Developers, and Users have different visions of the system they want.”
Communicating with humans in a common business language is very difficult, much less with algorithms.
That said, any proper software development team should allow developers and product owners to communicate with each other.
When a product owner proposes a feature, an experienced developer might respond, ” You can do that, but why not do this instead ?”
One of the most difficult parts of building a product is understanding business requirements and translating them into technical specifications and even code.
This process takes place through multiple stakeholders. It might sound simple to just tell a machine learning algorithm what to do. In practice, it’s hard enough to get the humans (who tell the machine learning algorithms) to understand what to do.
Connecting large tech stacks
Onboarding a new software developer to a complex project can take months. The complexity of large software projects is unimaginable.
For example, an online bookstore might be connected to a content management system (of a CMS like WordPress) that allows administrators to add new content.
Additionally, it may be integrated with an ERP (enterprise resource planning system) that stores all orders and products .
A website might be built using React as the front-end programming language, with dependencies on various libraries, and using C# as the back-end language.
Developing an algorithm that understands such a convoluted solution is difficult to say the least.
For example, let’s say a product owner wants to add a new order flow to their e-commerce that allows customers to print and publish their books.
What is the algorithm for that? Even if the aforementioned problem of understanding business requirements is solved, we now need algorithms that understand the entire technology stack.
You also have to add new sections to your CMS, send new variables to your ERP, understand what code to write in React and what code to generate in C#.
Also, another company may have its own system for printing self-published books and need to integrate that system into its current solution, adding another layer of complexity.
Some software projects are difficult for humans to comprehend, and that difficulty may not be easy for algorithms.
Debugging incorrect code
Developers spend a lot of time debugging. I certainly have days where I spent more time debugging code than writing new code, and I can assure you that in the future I will have to debug AI-generated code.
Let’s go back to the online bookstore example from earlier. Let’s say user data is synchronized between the CMS and ERP system every 10 minutes.
All of a sudden this recurring job stopped working and the devs are calling saying “An error has occurred”. The error message is something generic like “An unexpected error has occurred.”
“Building algorithms that understand intricate solutions is difficult, to say the least.”
How do I get an algorithm to debug this issue. Where does that algorithm start? I wonder if the problem is related to the CMS which has regular data transfer set up.
Or is it related to changes that happened in the ERP system? Or are users dealing with corrupted data that has not been handled properly?
Algorithms (to identify errors) must be very general.
Debugging large applications is incredibly complex. And having algorithms write code, or having humans debug AI-generated code, will make debugging sessions even longer.
Updating a software library to the latest version is more complicated than anyone who is not a developer can imagine.
When you update your smartphone, just press a button and your smartphone will update. In the case of smartphones, it is very trivial.
In software development, updates can be more complicated depending on the tech stack.
Let’s go back to the online bookstore analogy. Suppose a new version of your CMS comes out that provides useful new features or important security patches.
have to update it. Of course, as soon as you update, you’ll find that many of the backend features are deprecated, so you’ll need to update them as well. The setup for sending order confirmation emails using the CMS also has to be rebuilt from scratch.
Software dependencies are a nuisance. Library A, version 2.0.3, depends on Library B, version 4 or higher, which may not yet support the latest version of Library B.
Software updates that add new features or fix security flaws may seem trivial, but they can be quite complex. Algorithms (such as substituting developers) must understand how updating one library affects other libraries.
Communication with Stakeholders
I’ve already partially explained this point, but I want to spare a few more words because it’s so important. Communication is both complex and essential.
As a developer, I had to communicate with different stakeholders using different vocabularies and techniques. I used complex technical terms when talking to other developers on the team, but needed to explain features in a non-technical and concrete way to the Product Owner.
And when dealing with customers, I have tried to be both confident and humble, spending more time listening than talking. You need to listen and understand your customers’ concerns.
“Communicating with humans in a common business language is very difficult, much more difficult with algorithms.”
I needed to communicate progress regularly. If I had a problem, I had to share it.
When I was asked for an estimate of how long it would take to build a feature, I had to give that estimate.
Algorithms (that replace programmers) need to be able to perform all of these communications.
For machine learning algorithms to replace programmers, they must be able to:
A software developer’s job is more than just writing code. It’s complicated. Requires diverse skill sets.
But it’s entirely possible that one day we’ll have an AI that can do the jobs I mentioned above just like humans do. In fact, I’ve written before about what will happen the day all jobs are actually automated .
But keep in mind that by the time we have AI that can do the above, almost every other job will have been automated as well.
Software development will be one of the last jobs to be automated.
That said, as more AI software writes code, it will continue to be used to enhance developers rather than replace them.
Machine learning algorithms are good at creating small independent functions. If developers want a function to retrieve tweets from Twitter, they will be able to ask the algorithm to create that separate function.
For developers, code generation AI is expected to serve as a great alternative to browsing StackOverflow, but it may also offer great suggestions for writing better code. To be honest, I’m really looking forward to seeing code generation AI in action.
For those who are not developers, the code generation AI may build a simple website autonomously, but since it is already possible to generate a website with services such as WordPress, Jimdo, Squarespace, etc. I don’t think it will change the nature of typical websites.
However, these tools may be built into the system itself, allowing some customization.
In any case, the conclusion is that programmers probably don’t need to worry about being replaced anytime soon.
In September 2020, the author of this article, Jacob Bergdahl, posted an article on Medium entitled ” When All Jobs Are Automated .” This article looks at how the world would change if AI automated every job.
He believes that even if artificial general intelligence isn’t invented, ” weak AI ” that solves discrete tasks will sooner or later automate all jobs .
If all jobs were automated by AI, it would be much cheaper to complete the tasks than if they were done by humans, thus increasing the profit margins of any job . The social system that will emerge after these changes in the labor market can be both utopian and dystopian.
A utopian social system is proposed by Erik Brynjolfsson, an MIT graduate and Stanford University Senior Fellow. He says AI will dramatically improve the profitability of all labor, resulting in big profits for companies. Governments would then be able to impose large corporate taxes on corporations, greatly benefiting national coffers.
This national treasury will be given as a basic income to people who no longer need to work. With a basic income, citizens will dedicate their lives to creative activities instead of working . This situation could be described as a return to a society in which the citizens of ancient Athens, freed from labor by forced labor, immersed themselves in theater and philosophical debates.
This society will be named ” Digital Athens “, and the residents of Digital Athens will be educated not to work, but to create.
MIT professor Max Tegmark discusses the dystopian social system in his book LIFE 3.0: What it means to be human in the age of artificial intelligence .
If AI improves the profitability of all labor, the wealthy who monopolize capital and AI will gain enormous wealth, while they will regard workers as unnecessary . As a result, instead of returning their wealth to society as a basic income through tax payments, the wealthy plot to eliminate the working class .
Akatsuki, who carried out this plan, has the potential to solve climate change and population problems at once, realizing a utopia only for the wealthy. However, this utopia can be said to be a dystopia born from an excessively disparate society .
Bergdahl does not discuss the probability of realization of these two social regimes. But he believes that the AI automation of all jobs, a prerequisite for both scenarios, will almost certainly happen, even if the timing is unpredictable.
If you read this article, you may also enjoy my non-technical books on real-world artificial intelligence below.