Will ChatGPT eliminate the developer profession?
This is a question I have seen a lot in recent days, and my answer is a resounding NO.
In fact, ChatGPT is an extraordinary tool for developers. In the past few weeks, I have used it to:
- write acceptance criteria,
- generate unit tests,
- avoid reading massive documentation to find a single piece of information,
- fix bugs more quickly,
- find good names for methods, classes, or even applications
However, I have also:
- spent hours fixing the unit tests it gave me, and adding missing ones
- lost hours testing a lot of bad suggestions, only to unblock myself faster by simply checking the doc,
- received proposals for code that were at best absurd... and at worst dangerous,
- tested a lot of dysfunctional code
Yes, there have been a lot of videos saying: "look, I coded a todo site with ChatGPT /// I coded an e-commerce site entirely via ChatGPT!!! OMG"
But there are two big issues with this type of sensationalist videos:
- First, the people manipulating ChatGPT are developers; ordinary users may not be able to understand ChatGPT's suggestions and they will make mistakes they can't explain to ChatGPT.
- Second, most of the things they ask ChatGPT to develop are things we have seen a thousand times before. So yeah, sure, ChatGPT can explain to you how to do it
IMHO, ChatGPT suffers from three major flaws that make me believe it will not eliminate our profession before a very long time.
1) ChatGPT is still a text completer.
Yes, it is a very clever completer that really gives the impression of interacting with a human.
But it remains a text completer, which means that:
- it will sometimes provide false information,
- it will try to give you what it THINKS you want,
- it will take all the information it has and cook up a response, but there is no guarantee that the response will actually work, that it has been tested, or that it is not completely wrong or dangerous.
I am sure we will see posts like "ChatGPT made me delete data from my production database" really soon.
There will always be a need for someone to ask things to ChatGPT and validate what it does.
Moreover, it is not easy, if not impossible, for ChatGPT to create really new things. It can only rely on its acquired knowledge, which makes any original request difficult for it.
Overall, there are many things we do on a daily basis as developers that will be very difficult or impossible for ChatGPT:
- creating new libraries and frameworks,
- improving existing frameworks (performance, features, etc.),
- creating very specific or nonexistent features in the market,
- innovating (via UX, UI, features, etc.),
- and... just fixing bugs.
2) ChatGPT relies on what it parsed
ChatGPT relies on parsing the net for information, so it has also parsed a lot of false information.
- ChatGPT will feed us with a lot of mistakes it read
- ChatGPT will be convinced that the information it gave us are right, even when it's not
- ChatGPT will always think that the code it suggested to us works
- ChatGPT will never test the code it gives us
- ChatGPT will have big difficulties handling complex situations (for ex. server issues related to a recently updated package related to a badly appropriate lib).
Overall, even with years of tuning and practice, I am convinced that ChatGPT will continue to produce many errors. Furthermore, the net parsing that has been done is not up to date, and ChatGPT will not have the freshest information, even with regular updates. ChatGPT may persistently suggest outdated corrections.
There is also the risk of bombing, where people intentionally post false information in large numbers to make Chat GPT believe that a false information is true.
3) ChatGPT can't ask the real questions
The third and major drawback of Chat GPT is the fact that it's not a human. What I mean by this is that it's not AGILE.
For Chat GPT to be able to develop software or applications, it must be capable of understanding the real needs of users.
This means that it must be capable of doing what developers already have a hard time doing every day: understanding what customers really need.
It must be able to engage in a conversation with a user, make them express not what they want, but what they need, and then propose original solutions that will result in a useful, usable, and utilized app.
However, ChatGPT will not understand a poorly expressed need.
- ChatGPT won't be able to differentiate a need from a request.
- ChatGPT won't be able to understand a need that is new on the market.
- ChatGPT won't be able to comprehend a bug as it can't build/deploy/test/reproduce the bug.
- ChatGPT might sometimes give an appropriate fix for a bug, but this fix won't fix the underlying architecture issue.
Even us, as developers, we have a hard time trying to understand what our customers really need, in order to give them the appropriate feature. How can a text completer do this better than us? For now, it can't.
While it will be capable of doing this for small, real simple applications... Debugging any project with more than 10,000 lines of code will be nearly impossible for Chat GPT. It will likely take more time to make it assimilate all the information than it would to debug it manually.
Also, when we fix bugs, we spend hours or days trying to reproduce, understand, and locate the code responsible for the bug. IF we succeed. How many bugs have you fixed by just having guesses and improving the code "just to be sure", making the bug disappear?
ChatGPT won't be able to do that with efficiency before a long, long time.
But yeah, sure, it can replace us for basic needs or very basic apps or websites. But once you've past this basic step, you'll always need the help of a developer.
These three major drawbacks lead me to believe that Chat GPT will not replace the role of a developer for many years. Although I may be wrong, considering that just two years ago, we could not have imagined having such a powerful tool at our disposal.
I am intimately convinced that the role of developers will not disappear soon. In conclusion, I wish you good luck and continue the good development work.