In the era of AI, do we still need to learn how to code?

I often see people debating similar questions online: Do we still need to learn coding now that we have powerful coding agents? Should engineering interviews stop testing data structures and algorithms? If everyone can do “vibe coding”, is Computer Science still worth studying?

Before diving into these questions, I want to talk about what I consider the two core abilities of traditional programming:

  1. The Understanding of Programming Language Knowledge: This includes syntax, keywords, built-in functions, and deeper programming language properries (such as memory management, or whether parameters are passed by value or by reference).

  2. The Ability to Translate Abstract Problems into Machine-Executable Processes: I usually refer to this as programming logic. On a small scale, this involves deciding when to use a loop, wehn to use recursion, or choosing the most suitable data structure. On a larger scale, it is about how to efficiently integrate functions and classes, or even the communication architecture between modules.

Ability (1) is language-dependent. Every programming language has its own knowledge system. With strong coding agents nowadays, I do believe the importance of Ability (1) has decreased. AI is like a powerful knowledge base. We no longer need to memorize API details or syntax. As long as we can define specifications in natural language, AI can accurately translate it into correct code.

However, Ability (2) is different. It is independent of any specific programming language and is more like a specific type of abstract logical thinking. I believe this is what truly distinguishes Computer Science students from those in other majors. The human way of thinking differs significantly from how machines execute tasks. Ability (2) serves as a bridge, allowing us to decompose problems from a “machine perspective” to design more efficient systems.

For example, for most people, learning their first programming language is the hardest. Once you have learned one, learning others becomes much easier. Although the syntax and structure differ, the “logic” of programming remains the same. This “programming logic” is Ability (2).

In CS training, data structures and algorithms are undoubtedly important. They teach students how to create more powerful tools from existing foundational components. After mastering basic elements like arrays, loops, and recursion, the focus shifts to how to combine them into efficient structures and how to design better computational processes. Similarly, software engineering is crucial because it teaches students how to design robust system frameworks for easier development and maintenance. In these subjects, what matters isn’t just the knowledge itself (the specific algorithm or design pattern), but the design thinking and problem-solving logic hidden behind these tools. Therefore, testing algorithms in interviews is actually intended to test logical thinking, not just the ability to memorize methods.

We are at a turning point similar to previous generational shifts in programming languages, like moving from Assembly to C, and then to high-level languages like Java or Python. With each iteration, functions that were complex in lower-level languages became basic tools in higher-level ones. Today, AI is defining a sort of “Ultra-High-Level Language” that is closer to human natural language. While this reduces the reliance on traditional syntax knowledge, harnessing this new language still requires a professional’s programming mindset and abstract logic to construct sophisticated modules and structures to solve complex problems.

So, back to the original questions: In the AI era, do we still need to learn to code? Is CS still worth studying? If your goal is to become an expert, my answer is yes. To build useful and efficient systems and applications, the true core is often not the code itself, but the logic and thinking behind it. This logical mindset still requires solid, extensive training to develop. I also believe CS will not become obsolete because of AI. Instead, we will always need new expertise to handle this new “AI programming language”.

Finally, regarding “vibe coding”, I think it’s actually a good thing. Vibe coding lowers the barrier to entry, allowing more people to build their own small tools or apps by interacting with AI, which might spark an interest in programming. However, if your goal is to build software that is professional, high-performance, easy to maintain, secure, and commercially viable, I believe professional expertise remains absolutely essential.