In this podcast episode, we'll explore an interesting viewpoint from Nvidia's CEO, Jensen Huang: the career of programmers might be undergoing an unexpected shift.
Let's start with Huang's own words. At the World Government Summit in Dubai, he mentioned that the existence of programming as a profession might be decreasing. He pointed out that for the new generation, programming might not be a sustainable career choice anymore. The challenge is to develop computing technologies that do not require programming, where programming languages will be closer to human natural language.
Huang said that in the future, people won't need to use traditional programming languages like C++, Python, or Java to write programs. Instead, they could communicate with machines directly using natural languages like English, which would be a significant milestone in AI development. He suggested that those interested in programming might want to consider moving to other fields. While programming won't disappear entirely, its scale will significantly reduce, leaving only a few to continue working in this area.
A few days later, at an event at Stanford University, Huang further noted that AI technology is narrowing the tech gap. Currently, there are about 10 million programmers worldwide, standing out because of their programming skills. However, this also means the other 8 billion people are at a technical disadvantage. With the development of AI-generated content (AIGC) technology, programming will become more widespread, empowering a broader audience and possibly devaluing programming skills.
Similarly, Emad Mostaque, CEO of Stability AI, and others have made similar predictions, believing that programmers as a professional group might completely disappear in the next 3 to 5 years or undergo significant changes within the next decade.
So, can AI really replace programmers? As an experienced programmer, I have my own views on this.
First, we need to understand the origins of programming languages. The earliest programming language was actually imagined by a woman. Her designed language was closer to pseudocode, not directly executable programming language.
Through this discussion, we will delve into the potential impact of AI on the programming profession and what it means.
In the trajectory of technological advancement, computer programming evolved from simple to complex forms. Initially, program input depended on punch cards or paper tapes, an early form of programming. It then evolved to text-based coding, allowing compilation into executable code. Early on, programming languages did not require compilation and directly used assembly language, a coding form closer to machine language. Over time, programming languages introduced richer semantics and required a compilation process to convert high-level code into binary code that machines could execute directly. This development journey showcases the evolution of the programming profession.
However, there's a fundamental difference between programming languages and our everyday natural language, as emphasized by my college computer software course instructor: computer languages are unambiguous. This means that in programming languages, the meaning of expressions is clear and precise, without any ambiguity. In contrast, natural languages are full of ambiguities, where the same sentence can have multiple interpretations based on context, tone, and intonation. This difference is a basic principle in computer language design, ensuring the precise execution of instructions.
From the perspective of programming and AI, the current trend is that humans no longer need to directly write programs. Instead, AI models are completing programming tasks, directly providing results. This shift seems to signal a future without the need for traditional programming skills.
For example, if I plan to travel to Sweden, traditionally, I would need to find information and plan the trip myself, including accommodation, dining, and activities. Now, AI can take over this entire process. I just tell it my plans, and AI can automatically search for information, recommend the best options, and arrange the entire trip.
Conversely, if I run a bed and breakfast in Sweden, I need to attract tourists to maintain my business. In this scenario, AI's capabilities can also come into play, helping me promote my B&B, attract potential customers, and optimize my business operations in an intelligent way. These examples show how AI can replace traditional manual tasks in different scenarios.
When dealing with programming tasks, the traditional method often involves writing detailed descriptions, locations, and services provided, taking photos, and then manually entering this data into various service platforms, like Booking.com, by calling their APIs. This process is both time-consuming and complex.
However, with the development of AI technology, all this is changing. Now, if I run a B&B, I just need to tell AI all the relevant information. AI can then automatically generate the needed code and execute tasks, including check-ins, announcing discounts and offers, and updating the booking status of rooms. All this can be done automatically, without the need for manual programming.
Considering the two scenarios of planning a trip to Sweden and running a B&B to attract tourists, AI can provide effective solutions in both cases, eliminating the need for traditional programming. The current AI technology is sufficient for these tasks, and its capabilities will only grow stronger in the future.
For platforms like Booking.com, while they currently still rely on programmers to develop and maintain their systems, the development of AI is also changing this scene. AI can automatically collect information, organize reviews, rate, and recommend to users. Although AI is currently semi-automated, requiring manual adjustments and adaptations to ensure the code runs correctly, it is expected that in the next five to ten years, large AI models will be able to fully take over these tasks.
This means that in the future, intermediaries like travel agencies, ticketing, and booking platforms may gradually disappear, as AI technology will be able to completely replace their functions. Analyzing these changes, we can foresee that with the continuous progress of AI technology and its application expansion, programming as a necessary skill may no longer be essential in the next five years, and the entire industry will face significant changes.
What problem does programming language solve? This is a question worth pondering. What is the fundamental purpose of programming languages?
Firstly, one of the basic functions of programming languages is to help programmers express logic. However, it's important to recognize that in the entire software development process, the role of programming languages is actually relatively small.
Programming languages also take on the task of addressing engineering problems. When developing a complex, large-scale system, all aspects of engineering management must be considered, and programming languages need to be adaptable to these needs.
Another key function is code reuse. In the development of complex systems, it's impossible to start coding from scratch every time. The codebase accumulated over history can be reused, which not only improves efficiency but also promotes specialization. Developers writing lower-level code don't need to worry about higher-level logic, and those focused on higher-level logic don't need to be concerned with lower-level details. Modern programming languages mostly provide strong support to facilitate code reuse.
Another role of programming languages is to facilitate collaboration. The development of large systems is often not a one-person job. Programming languages, by defining clear specifications and standards, enable team members to collaborate efficiently.
How does AI play a role in this? One of the main advantages of AI is its ability to encapsulate lower-level details, allowing developers not to worry about them. For example, in the scenario of planning a trip, AI can handle tasks like finding hotels, booking transportation, and meals. Users only need to present high-level demands to AI—such as specific itineraries for a trip to Sweden, people to meet, and dining choices—and AI can handle the rest of the details. This method simplifies or directly skips problems that would have been addressed through programming languages, as the pre-set AI systems are mature enough to be directly used for implementing users' business needs.
Although AI can replace programming languages for some tasks, it cannot fully replace human developers' work in engineering management, code reuse, code quality assessment, and team collaboration. AI indeed can provide help in these areas, but at least currently, it cannot completely solve all problems.
What would the process of AI replacing traditional programming look like? A notable feature is AI's tolerance for spelling and grammatical errors, which is highly convenient for us. Traditional programming requires a compilation process, where the primary task is syntax checking, and errors like spelling mistakes or grammatical errors can cause compilation failure. Moreover, the compilation process cannot recognize logical errors, only relying on manual debugging.
In contrast, AI's tolerance for errors in input is significantly higher. Even if there are spelling mistakes or disordered syntax in the input, AI can still understand the intent and provide a reasonable response. This tolerance allows AI to be more flexible in understanding and executing tasks, not requiring every detail to be exactly correct as in traditional programming.
AI can not only understand the ambiguities of human language but also automatically correct these errors in the answers it provides, which is incomparable to traditional programming. With AI, we can skip the complex process of requirements analysis, architecture design, coding, testing, deployment, and error correction, and directly describe our needs to AI, which can clearly know how to implement them.
The traditional software development process includes requirements analysis, architecture design, coding, testing, deployment, error collection, and iterative updates. This process requires close cooperation among team members and often involves analysts to bridge the gap between programmers and ordinary users, as both parties often struggle to understand each other's technical language.
However, the emergence of AI changes all this. It can understand human language and, in some cases, may even surpass specialized analysts in understanding requirements. AI has learned a vast amount of engineering methods and can work automatically in a way similar to expert systems, such as conducting requirements analysis, evaluating different business processes, and selecting the best solution.
This capability means that AI's role in the software development process is undergoing a fundamental change, gradually replacing some aspects of traditional programming and pushing software development towards a more efficient, more automated future.
In exploring the key areas where AI cannot fully replace programming work at the current stage, we first have to recognize AI's limitations in dealing with entirely new fields. When humans face unknown fields, they typically design and implement experiments, collect and analyze results, then iterate and improve based on these findings. Although AI can provide assistance in this process, making it independently undertake the entire process from start to finish, especially in applying new fields, is currently not feasible.
Secondly, AI struggles with extremely complex engineering problems and projects that require close collaboration. For concepts difficult to clearly describe in language, AI might not fully understand or handle them. For example, the traditional requirements analysis process involves a lot of documentation, interviews, and detail confirmation to ensure the system design meets all expected needs. Although now there are AI models and chatbots capable of exploring requirements through conversation, comprehensively understanding complex requirements and converting them into precise system designs remains a challenge.
Moreover, after completing the requirements analysis, a critical step is determining version planning, deciding which features will be implemented and which will be postponed or abandoned. This step also presents a challenge for AI. Similarly, code optimization, refactoring, quality assessment, and other subsequent tasks are beyond the current capabilities of AI.
Even though there are large models designed specifically for programming, like Nvidia's StarCoder, these tools still struggle to independently handle complex engineering problems.
In terms of precise control over outcomes, AI's applicability is limited. Whether generating text, images, or videos, users find it extremely difficult to describe specific details they want to adjust and have AI accurately understand and implement them. In these cases, AI's solutions often lack sufficient controllability, leading to unsatisfactory user experiences.
Therefore, the key in pursuing AI-generated results is to achieve a balance—ensuring enough "controllability" while utilizing the convenience and efficiency provided by AI.
When we want AI to execute our commands precisely, the challenge arises. Current AI systems still fall short in meeting such "at your command" needs. Although AI can generate engaging content, such as visually appealing images, this is often because users do not have rigid expectations for the specific details of the output or they are open-minded about the results. However, if users have concrete and detailed expectations for the images or other outputs they want to generate, making AI produce results exactly according to these expectations becomes more difficult.
This issue is particularly prominent in the field of programming. If you have a very specific requirement, such as turning on a green light when a red button is pressed, simply describing this need to AI does not guarantee it will generate code that fully meets the expectations. Like in traditional factory operations that required experienced craftsmen, some tasks need the professional skills and judgment of programmers to solve.
Although AI has made some progress in locating errors and troubleshooting in complex systems, there is still a long way to go. For example, Baidu's Comate AI programming tool can analyze and process code by establishing a local database for the project, but for deep error troubleshooting in complex systems, AI cannot yet operate entirely independently and still requires human programmers' intervention.
This indicates that while AI has shown amazing capabilities in many areas, especially in handling standardized tasks and generating creative content, it currently cannot fully replace human professional skills in complex tasks that require precise detail control. The development of AI in the future may change this situation, but at least at the current stage, direct human participation remains indispensable.
What changes will occur in the role of programmers in the future?
Let's reflect on the fact that, over time, certain occupations have completely disappeared from our lives. For some younger people, they might not have even heard of these occupations.
Take telephone operators, for example. This position was once an indispensable part of the communication industry, responsible for manually connecting telephone lines on a switchboard to complete calls. As technology advanced and automated programmed control switches replaced manual operation, this profession gradually vanished.
Similarly, elevator operators were common in the past. They were responsible for operating elevators and ensuring passengers safely reached their desired floors. Now, with the prevalence of automated elevators, this profession has also become increasingly rare.
Another example is the photo developing technician, a crucial profession before digital photography became mainstream. They were responsible for chemically developing film photographs to reveal images. With the advancement of digital technology, this profession has also gradually disappeared, as people increasingly prefer to use digital cameras and smartphone photography.
Telegraph operators, too, are a profession that disappeared with the advancement of communication technology. They were responsible for receiving, sending, and translating telegram messages. Today, with the widespread use of text messaging, instant messaging applications, and emails, this traditional form of communication has become history.
These examples show that as technology evolves, some professions naturally phase out, while new job opportunities emerge. For programmers, the future work environment might undergo fundamental changes due to the development of AI and machine learning. Programmers might no longer need to engage in traditional coding work but shift towards more focus on designing, supervising AI algorithms, solving complex problems, and innovating. In this process, some specialized programming positions might disappear, but new opportunities demanding higher-level skills and innovation capabilities will also emerge.
Will there come a day when programmers' work completely vanishes, just like certain professions have become a part of history?
My view is that it's unlikely. Although the future development of technology will make programming skills more common, it does not mean the demand for programmers will completely disappear. Instead, their roles and ways of working might change. To better illustrate this point, we can draw parallels with the evolution of the driver profession.
In the past, becoming a driver was seen as a profession, whether it was for private driving, driving buses, taxis, or trucks. However, as driving skills became more common, driving was no longer exclusive to professional drivers. According to Nvidia CEO Jensen Huang, in the future, everyone might have the ability to program, changing the definition of programming as a professional career. Imagine anyone could simply command a computer, like planning a trip to Sweden, and the computer would automatically complete all arrangements.
Even so, drivers didn't disappear because everyone learned to drive. Professional drivers still exist because they rely on driving to make a living, providing specialized services. Similarly, in the future, although more people will be able to perform programming tasks, professional programmers will still be in demand for their expertise.
Currently, professional drivers work in a wide range of areas, including taxi drivers, bus drivers, commercial and transportation vehicle drivers, and operators of specialized vehicles like mining vehicles. Although the development of autonomous driving technology might reduce the number of professional drivers in the future, their role will not disappear entirely.
This analogy shows that, although technological advancements may change the nature of programmers' work and even reduce demand in some areas, the role of professional programmers will still be retained. They will continue to work at the forefront of technological development, handling more complex tasks and challenges, just as professional drivers continue to provide their specialized services in certain areas.
Within the category of professional drivers, there is a special group—professional racing drivers. Their lives and work revolve around racing, experiencing the joy that speed and passion bring. Although limited in number, their existence proves that even in a generalized skill area, there is still room for specialization and high skill.
Similarly, some people treat driving as a recreational activity, not just for daily commuting or business operations, but for the enjoyment of self-driving tours, off-road adventures, etc. These enthusiasts prefer driving manual gasoline or diesel vehicles, seeking a purer driving experience. Therefore, even if autonomous driving technology becomes widespread in the future, these driving enthusiasts will still choose to drive themselves.
From this perspective, although future technological advancements may change the number of professional drivers and their roles, the driving profession will not disappear completely. The situation is similar for programmers. As artificial intelligence and programming skills become more widespread, everyone might be able to program to some extent in the future, but this does not mean the disappearance of professional programmers.
Especially in the field of artificial intelligence, the demand for specialized skills and in-depth knowledge will continue to grow. Programmers who want to remain competitive in this field need to understand the basic principles and applications of AI and how to develop and maintain AI systems. Even programmers who do not specialize in AI principles need to know how to effectively use these technologies.
Therefore, like professional drivers, programming as a profession will not disappear. Instead, as technology advances and application areas expand, the future demand for programmers will become more segmented and specialized, especially in the development and maintenance of AI-related fields. To adapt to these changes, programmers need to continuously learn and adapt to new technologies, especially artificial intelligence, to maintain their competitiveness and relevance in the future workplace.
In the next decade, as artificial intelligence technology advances and its applications become more widespread, there will still be a demand for programmers specialized in developing and maintaining AI systems, but the number of programmers needed may decrease. By then, we might not need millions of programmers to maintain these systems; a few million professionals might be enough. However, this does not mean that the role of programmers will disappear completely.
A key difference from the driving profession is that programmers need to not only "drive" (i.e., write and run programs) but also "repair" (i.e., maintain and debug). Even if autonomous driving technology may replace many traditional driving jobs in the future, the demand for car mechanics will not decrease.
The same applies to programmers. With technological development, programmers will continue to bear the dual responsibilities of "repairing" (debugging and optimizing existing programs) and "designing new models" (developing new software and systems). Their work is not limited to maintaining existing systems but also includes innovating and developing new technologies to meet future needs.
Especially in the field of artificial intelligence, mastering AI technology will become an important advantage for programmers. In the future, programmers who are not familiar with AI may find themselves at a disadvantage in the job market, both in terms of salary and employment opportunities. Therefore, as the industry's demand for AI skills increases, learning and mastering these skills will be key for programmers to stay competitive.
In summary, although the role of programmers may change in the future, their core value and responsibilities—not just coding, but also maintenance, debugging, and innovation—will continue to be in demand, especially in fields related to AI. As technology evolves, these capabilities will become even more valuable, ensuring the ongoing importance of the programming profession.
Follow me on:
Comments