Summary of Key Points
This article outlines the core trends in software development over the past thirty years: The focus of programmers has shifted progressively from performing low-level, mechanical tasks to making high-level judgments and decisions. Initially, programmers had to work directly with the machine’s underlying mechanisms (memorizing syntax, adjusting compilers), then they used Integrated Development Environments (IDEs) to reduce repetitive work, and later, they relied on frameworks to quickly build systems. Today, with the advent of AI, programmers only need to describe the requirements, and the AI generates the code for them. In this process, the value of a programmer no longer lies in their ability to write code, but in their understanding of what to write, their ability to assess the reliability of the code, and their ability to identify the root causes of issues when they arise. The revolution in tools has redefined the core competencies of programmers.
Three Critical Steps in the Evolution of Programmers’ Abilities
Programmers’ work is akin to climbing a staircase, with each advancement in tools enabling them to move up a level:
- First step: From Turbo C to IDEs: In the early days, writing code was like doing calculations with an abacus; a single character error would cause the compiler to crash, and programmers had to memorize details such as variable definitions and pointer usage. IDEs (like Eclipse) act like intelligent calculators, providing autocompletion and error checking, but the programmer still decides what the code is supposed to do.
- Second step: From low-level interfaces to frameworks: Previously, programmers had to write their own database connections and handle requests. Now, with frameworks like Spring, they can build business systems as long as they understand the rules. The industry’s requirements for a “qualified programmer” have shifted from knowing the low-level details to being able to use these frameworks effectively; low-level skills have become part of historical experience.
- Third step: From writing code to describing intentions: With AI, programmers no longer need to write the code themselves. They simply need to specify their requirements (for example, “create a script for batch data export”), and the AI will generate the code. Programmers have shifted from writing the code to directing the process, leaving the actual implementation to the machines.
The Biggest Myth of the AI Era: Generating Code Does Not Equal Knowing How to Build Software
Many people think that since AI can write code, anyone can become a programmer. However, good software is more than just being able to run. For instance, if AI is used to create a payment system, it may produce code with correct syntax, but it may not understand business logic such as how to handle refunds in case of payment failures or how to lock an account after three incorrect password attempts. It also does not understand low-level issues like when to disconnect from the database or how to control access rights. These aspects of the system, such as boundary conditions, exception handling, and security rules, are beyond AI’s understanding. Experienced engineers have a “map of how systems can fail” in their minds and can immediately spot potential issues in the code generated by AI.
The Core Competencies of Programmers in the Future: Three Abilities That Cannot Be Outsourced to Machines
Tools can handle the “how” of tasks, but the “whether to do something and whether it is done correctly” always depends on humans:
1. Clearly describing intentions: AI may not perform a task perfectly if the instructions are not clear. For example, asking AI to create a login page may not result in a satisfactory outcome, but providing specific requirements (such as supporting login with phone numbers and verification codes, and locking an account after three incorrect password attempts) will lead to a better result. The ability to articulate requirements, constraints, and acceptance criteria is a scarce skill in the AI era.
2. Evaluating the reliability of results: Code generated by AI may run, but it may not be reliable (for example, it may perform poorly or be insecure). Programmers must take ultimate responsibility for ensuring that the code meets production standards (such as handling 100,000 users simultaneously).
3. Troubleshooting at the low level: When a system crashes, AI may not be able to identify the cause, but engineers with a deep understanding of the underlying mechanisms can determine, for example, whether the database connection pool is full—even if they no longer need to write the JDBC code themselves.
The Essence of the Tool Revolution: It’s Not About Replacing Humans, but About Changing Roles
This is a pattern seen in many industries:
- In the industrial era, craftsmen did not disappear, but factories transformed their role from making the entire product to focusing on key processes.
- In the office era, typists did not disappear, but Excel changed their role from simply typing to analyzing data.
The same is true in the software industry: The ability to write code is still necessary, but it is no longer the core competency. The focus has shifted to judgment and decision-making. With each advancement in tools, the role of humans becomes more specialized (judgment and responsibility) and less replaceable by machines.
In conclusion, AI has not eliminated programmers; instead, it has forced them to evolve from code workers to system decision-makers. True value lies in areas where machines cannot yet perform effectively.