Chat GPT and the programming profession
Recently, there has been a revolution in the IT industry. OpenAI, a company specializing in technologies based on artificial intelligence, released Chat-GTP 3.5, followed by the next, refined 4.0. version. Technology, which until recently was the domain of engineers and IT specialists and relatively rarely used by less technical people, quickly spread around the world and it is considered a revolution in computerization, often compared to the very creation of the Internet. People who had not been interested in AI technologies before, can check the potential of AI firsthand.
What exactly is Chat-GPT? It is a chatbot with which we can talk and is based on models of natural language processing (NLP - Neuro-Linguistic Programming). This is not the first chatbot of this type, and the NLP model itself has been around for a very long time (its roots date back to the 1970s). Thus, it is not a revolution of technology itself, because it has been with us for years, nevertheless, it is a revolution of new possibilities and changes in the awareness of people who are not tech-focused.
Chat-GPT, apart from a simple conversation with a bot, can be used as a universal API, which, based on appropriate prompts, can generate data of interest to us. This is where the revolution begins, because so far, all chatbots have not gone beyond the scope of typical conversations. This time, the chatbot is so versatile that it can analyze a lot of unrelated data and, based on this, return very accurate answers or ready-made results that we would like to receive. For the first time, a chatbot is so versatile that it goes beyond the scope of ordinary conversation and can do more complex work (requiring more abstraction). For the first time, it was said out loud that AI could write the source code of the application itself and in the future replace programmers whose work is considered to be a highly skilled and abstract thinking. Do programmers really have something to fear? We'll take a closer look at this.
What is programming?
Programming is the creation of instructions (using source code) that control the operation of a computer (processing calculations in the processor, storing data, processing data, controlling computer components). In the past (1950s), programming was done in an assembler language - a language that is the lowest layer of contact between the source code and the processor. It was the first ‘human’ language that could control a computing unit. Programming in it was extremely difficult, and the entry threshold was very high. It is interesting to know that people use an assembler language to program nowadays, but this applies to narrow specializations and a small number of specialists. The programming language has evolved, and over time, higher level (procedural) languages appeared: Fortran, COBOL, then even higher, like Pascal, C language, gradually moving to object-oriented languages like C++, C#, PHP, Java, and then frameworks like Spring (Java), Symfony (PHP). In the meantime, many libraries were created that reduced complex operations and many difficult lines of code to single classes and functions that could be reused at any time and place during the development of the source code. The last stage of this evolution that we know and is taking place today, is the creation of low-code/no-code tools, which have further reduced the writing of complex instructions to generators and systems where the code can be simply ‘clicked’ to be used. In general, each subsequent level of language evolution increased its level of abstraction and made the creation of source code much faster and easier. The threshold for entering the profession of a programmer became lower and lower (it was much easier to learn to program), and software development became more and more efficient (programming was much faster).
Programming and Chat-GPT
Here we come to the climax. Chat GPT, and actually the programming tools that will be created utilizing Chat GTP (and there will be a lot of them in the near future), is the next stage in the evolution of programming. Programming will become significantly easier and faster than ever before. You will not need to have specialist knowledge to write simple programs or the foundations of complex systems. The role of the programmer will be thoroughly transformed, because, in addition to applying the current levels of abstraction that were described earlier (e.g. using libraries and low-code), it will also be necessary to support ourselves with AI tools that will generate most of the code for us. If we don't use them, we won't work efficiently and we'll start to fall behind other programmers who will use these technologies in their daily work. The situation can be compared to a programmer who writes a complex system and does not use ready-made libraries (e.g. for image processing), but instead rewrites them in his own way - if a library could be used here, the situation is unacceptable. He loses very quickly in the pre-runs during the execution of the task, because the length of his working time is unacceptable from a business point of view. A software company simply couldn't compete with other companies with such programmers on board. So today, no one can imagine programming without the support of frameworks, libraries and the latest technologies. The IT industry is developing very dynamically and this is the natural order of things in this industry - you have to constantly adapt to new trends and technologies.
A new challenge for developers is the extensive use of AI in their daily work. And here we are talking not only about Chat-GPT, but also about all other tools, such as Copilot, Kite or CodeWhisperer directly built into the IDE - if you haven't heard about these tools yet and you are a programmer - be sure to get interested in them. Many other professions and industries have started to use AI in their daily work, the programmer should not be an exception here, and even be a pioneer in its wide use.
And what exactly can Chat-GPT help with? Below is a list of the possibilities of using the chat (and other AI tools) by the programmer:
- basic code generation (simple scripts, algorithms)
- modification of the code (adding appropriate changes to the code, refactoring)
- help in generating code in a language we don't know very well
- code debugging
- creating tests
- data generation
- data processing, data manipulation, data conversion
- generating HTML (and other) views
- creating integration with external services
- anticipation of what we want to write
- writing SQL queries
- creating functions based on prompts
- creating regex
- translation of data in the code into other languages
Looking at the examples above, we can definitely say that we are currently at a breakthrough moment - at the junction of the transition from programming, where you actually have to write the source code yourself, and the moment when the code will be generated mostly by itself, based on the given instructions, and programmers will only control the course of the generation process. It should also be borne in mind that, in fact, it is only a very poor and fledgling technology and its potential will continue to grow over the coming months/years, and the development opportunities here are really huge.
Principles of using AI in programming
- Consider whether a given task/project element can be made utilizing AI
- Support your work with AI wherever possible and where it makes sense (quality and time)
- Don't force yourself to use AI - the time advantage may be negative
- Treat chat-GPT as a universal data converter/generator or API that will return ‘everything’
- You will find simple functions and algorithms faster by writing a prompt than by searching on the Internet. In addition, you can immediately order the refinement of the received code
- Naucz się sztuki poprawnego zadawania promptów (źle napisane prompty nie dadzą Ci oczekiwanego wyniku od strony AI)
- Treat Chat-GPT as someone you code with. But never fully trust what it returns
- Chat-GPT can be treated as a kind of teacher who will guide you step by step through writing in a language / technology that you do not know well
- Use AI not only as an aid in writing source code, but also in programming-related work
- Please note that the data on which Chat-GPT was trained is from September 2021 so it will not return current data for newer libraries
When using the possibilities of Chat-GPT and other AI tools, where the processing of entrusted data is required, the issue of their security must be taken into account. So far, it is not really formally regulated whether and where the data entered into Chat-GPT is stored and how it is processed. It is not without reason that many institutions, corporations and even countries (the last example of Italy) block Chat-GPT due to the risk of mindless transfer of data that should not be made available outside the area of operation of a given entity (e.g. due to sensitive data). Therefore, when using Chat-GPT and other tools based on it, you should first check whether the data you provide can be made available to an external company. If not, AI support should be abandoned in this case or the data should be anonymized accordingly so that it does not contain sensitive information and only then should it be used.
What is the future of the programmer?
Despite the great possibilities of Chat-GPT, it is obvious that programmers are still needed. Chat-GPT is just an advanced library/API which, of course, generates the source code for us, but at the same time still needs someone who provides instructions and guides it through the entire process of creating this code - it can be a bit likened to the so-called pair programming, during which programmers check each other and write code together. Chat-GPT is a virtual programmer who, in cooperation with a human programmer, creates code very effectively and faster (it can be compared to having a third hand). The threshold for entering the profession of a programmer is lower once again, and programming becomes more understandable for people who previously found it difficult.
The other side of the coin of reducing the entry threshold into the programming profession is the fact that becoming a specialist (senior) in programming becomes much more difficult. It is already very difficult for juniors to enter the labor market, and it will be even harder. Chat-GPT can do junior jobs and is faster, cheaper and more accurate. It requires no learning, just checking - and juniors require both. People who want to enter the IT market will have a raised bar, and the development from the novice to the specialist level will be much more difficult.
Already today, no developer should deny the role of AI in replacing most of their creative work in the future - it is already happening. The key issue is how long it will take and to what extent the programmer will be able to utilize AI in his/her daily work. At the moment, every programmer should treat AI as an additional potential and leverage that accelerates their work and which, over time, will become stronger and stronger, and the role of the programmer will evolve towards code management rather than code writing.
People who deny the importance of AI and claim that it is not really something groundbreaking in the work of a programmer, should consider for a moment how much their work has been changed by the IDE, with advanced code hints (autocomplete), new languages and technologies, or even Stack Overflow site, which is a treasure trove of knowledge in solving problems. Can you imagine your current job without these opportunities? AI is another of this type of overlays / boosters, which in a few years will be something necessary to program more efficiently.
Programmer in X years:
- Most of the code is generic, automatically generated from prompts provided by the programmer
- Knowledge will be necessary to explain to AI what we want to achieve and the code will mostly create itself based on guidelines
- It will seem very easy to enter the industry (programming will become very easy), but it will be very difficult to become a senior and IT expert
- Experts will merge the entire project on the basis of modules created by AI and manually add the most difficult parts of the system
- The role of the programmer will be more supervisory than creative (apart from very complex aspects of the system)
To sum up, as a programmer, don't be afraid of AI - treat it as your personal programming assistant. The development of technology is inevitable and it depends on you how much you will be able to control it and use its potential to improve your work. It is better to start today, when its advancement is just in its infancy, than to miss the moment and find it difficult to adapt to new software development standards in a few years.
A few words about the AI itself
Finally, a few words about the AI itself. As it was mentioned at the beginning of this article, AI has been with us for decades - the very idea of artificial intelligence was created in the 70s of the last century. As soon as the first programs appeared, there was a temptation to make them intelligent. So it is not a new concept - the approach and ideas have been known to specialists for a long time, and what distinguishes today's AI from that of a dozen years ago are more refined heuristic algorithms and greater computing power that accompanies model generation - so far, the lack of adequate computing power has made the development of AI relatively slow. It is worth keeping this in mind when reading various flashy articles about how revolutionary Chat-GPT technology is.
Companies have been creating their AI models for many years and using them in their products or in optimizing internal processes. IT giants, such as Google or Facebook, have been relying on AI for most of their services for a very long time. It can even be assumed that engineers from the above-mentioned companies have been utilizing AI in their daily work for a long time, because the models that these companies have, are at a much higher level and tailored strictly to their business model, thanks to which they are much more accurate than what is offered by Chat-GPT. It's not like Chat-GPT is turning the world upside down at the moment - only a person who is new to AI can say that. People familiar with this technology do not see any serious revolution. At most they see simplification and the creation of a new standard, where one tool becomes common and more universal than anything related to AI so far.
If Chat-GPT really was such a revolution, the Google search engine should have serious problems today, and programmers should lose their jobs en masse. Not to mention the multitude of other professions and services where AI would massively replace people. This has not happened, but at the same time it is possible that it will gradually happen - with the further development of AI itself. Chat-GPT will of course optimize and support many industries and companies, but it will be the next stage in the evolution of software development, which we have already experienced many times.
After each such stage, the world had to adapt. And just like today, every serious business cannot do without a website and presence in social media, so now it must also strongly consider using the power of AI inside its processes and systems, so as not to stand out from the competition, which will start adapting it ahead of them. Therefore, let's approach it with the attitude of using new opportunities, because in fact a new, huge space opens up for us, which needs to be filled with AI tools. And while software development in a short time can be more efficient, the profession of a programmer and software companies will do very well, provided that the potential of AI is used in everyday work, as well as in implementing it in the systems of their clients.