
Many friends have told me they feel anxious. Seeing that everyone is now competing in the AI space, they wonder: is it still meaningful to learn traditional software development methods? What should new students focus on?
Of course, I definitely recommend learning AI! Everyone knows that the next decade will be an era of AI-driven development. It’s similar to the year 2000, when everyone knew the future belonged to object-oriented programming. Sticking to procedural techniques back then wouldn’t have had much future potential.
I’ve also started my own AI enlightenment journey, desperately catching up on the basics. I feel like I’m being left behind by the times. After a week of intensive study, I realized I’m still a beginner, with only a tiny fraction of understanding regarding large-scale models. New AI software engineering and the classic software engineering I’ve mastered are practically from two different worlds.
When thinking about new AI software engineering, who still insists on writing code manually? The most popular development language of 2023 was English. I simply state my requirements in natural language, AI generates the code, and I just make minor tweaks and integrate it. It runs much better than code written by humans. This will undoubtedly disrupt many traditional software engineering approaches.

Many things will naturally be replaced quickly. For example: JetBrains’ ReSharper code analyzer. It used to be a miracle tool—you gave it C# code, and it would scan for practices that didn’t align with best practices and suggest corrections.
The people at JetBrains are probably the most anxious about this: ChatGPT can almost completely replace ReSharper. You can just paste your C# code into it, ask how to optimize it, or ask where it doesn’t follow best practices, and it will fix it perfectly. It can even help you refactor code and fix bugs. I feel ReSharper might be on its way out. I haven’t used it in a long time. With the development experience of Copilot + ChatGPT + VS2022, ReSharper is basically unnecessary. Unless… JetBrains has a wake-up call and starts using AI to rebuild their entire product suite.
This is the new paradigm of software engineering: an AI-driven approach to code analysis. It delivers a dimensional strike against traditional methods based on regular expressions, keyword analysis, and code scanning. Resharper represents the best practices distilled by a team of experts over more than a decade of research. In contrast, AI-based tools can understand virtually any new programming language, mimic its syntax, generate insights that align with those of human experts, and even fix bugs. Their autonomy is so strong that they no longer require humans to predefine rules; they inherently know what constitutes good code and what constitutes bad code.
The Meaning of Learning??

So... is there still a need to learn programming?
My answer is: The significance of traditional software engineering has become less prominent, but it will absolutely not disappear.
Drawing an analogy to 20 years ago, when Object-Oriented Programming (OOP) suddenly became widespread, we gained user-friendly languages like Java and C#. However, traditional programming languages did not vanish. In universities, learning C and Assembly remains critically important. Traditional procedural programming is still a mandatory course.
Today, students in university classes learning OOP often think: "What's the use of learning this? AI writes code faster and better."
Of course, AI does write code much faster than humans, but learning manual coding is absolutely meaningful.
Analogous to my experience learning Assembly in university, I also used to wonder: "What's the use of learning Assembly? Isn't it enough to learn a few high-level languages? Nobody uses Assembly to write code anymore, right?" However, precisely because I learned Assembly, I developed a deeper understanding of data segments, code segments, the heap, the stack, Master Boot Record, virtual machines, operating systems, and more. This has become an indispensable cornerstone of my knowledge base.
In 20 years, students may question: "What is the use of learning traditional OOP? It seems almost useless." However, it will become the cornerstone of the software engineering knowledge base of that time. Perhaps in 2040, no one will use C# or JavaScript for development, and everyone will use English to instruct AI for development. But if you understand traditional formal languages and are proficient in C# and JavaScript, your understanding will undoubtedly be more profound than others'.
What Should New Computer Science Students Learn?
What we need to do now is similar to adapting to object-oriented programming twenty years ago. We must adapt to the new paradigm of AI-assisted software engineering.
Twenty years ago, C++ and Java gradually matured, and we all knew that the future of software engineering would be object-oriented. A large number of classic books emerged, such as Agile Software Development and Clean Code. If you had started learning object-oriented programming in the year 2000, you would have been highly sought after.
It is now 2023. Everyone knows that the future of software engineering will definitely be AI-oriented, and a large number of AI-assisted development products have emerged. Therefore, starting to learn AI today will definitely be highly valuable in the future.
So, is it useful to learn old traditional technologies? Of course!
Here is the logic: Learning object-oriented programming does not mean you can skip learning assembly language or C. By the same logic, learning AI-oriented programming does not mean you can skip learning C++.
Are the future requirements for engineers higher or lower?

I can answer with certainty: it has become higher.
An excellent software engineer must not only be able to master procedural code, but also understand classes and objects, frontend-backend separation, APIs, dependencies, and packages. Furthermore, they must understand AI to thoroughly investigate complex systems from their root. This has definitely raised the bar. In the future, everyone's productivity will certainly increase, and work efficiency will also inevitably improve. High-end positions will emerge, demanding extremely high standards of human capability. These roles require decades of accumulated engineering knowledge and involve highly specialized and advanced research, necessitating a comprehensive understanding of hardware, circuits, operating systems, procedural programming, classes, dependency injection, components, packages, APIs, and AI.
Conversely, in the future, there will also be countless low-level programmers who do not understand classes, APIs, functions, variables, or objects. They will only use the simplest language to chat with AI and then naively check the AI's output. When it comes to issues involving the fundamental nature of problems, they will be unable to investigate or resolve them. These low-level positions have little requirement for human skill; one can be qualified after just two weeks of training, developing the least valuable things. What is the difference between these people and those who graduate from today's training courses and start writing object-oriented code without having learned assembly language, or future individuals who command AI to write code without understanding object-oriented programming? They are destined to be at the bottom of society.
How Should We Prioritize Learning Focus?
It’s just that the focus shouldn’t be placed on traditional software engineering, much like how my learning focus isn’t on assembly. However, this absolutely does not mean not learning them at all. Rather, while demanding a higher level of understanding of the broader macro-level knowledge, the emphasis should be placed on AI research directions.
For example, allocate 70% of your effort to AI-related fields, 20% to traditional software engineering (object-oriented programming, MVVM, dependency injection, data structures, algorithms, front-end/back-end separation, component-based development, dependency management, package management, operating systems, virtualization, cloud computing, distributed systems, databases, etc.), and 10% to legacy technologies (C, assembly, computer organization principles, digital circuits).
已经从没有resharper不会写代码转到没有chatgpt不会写代码了..
真实。。。。。
😢
我认为 Hyrum’s Law 将一直适用:https://www.zhihu.com/question/264426279/answer/1840524133
大意是指,如果一个接口存在足够多的用户,不论你在接口层面做出何种“契约”,整个系统每一个可观测行为都可能会被某个用户所依赖。举一简单的例子:C 语言中的二维数组,按行遍历和按列遍历性能是存在区别的。这显然不是“二维数组”这一抽象所应该做出的契约。因此在需要追求性能的情境下就可能要依赖这一可观测行为,尽可能避免按列遍历。而作为程序员要理解这一现象,就需要打破很多层抽象,去了解 CPU Cache 以及计算机存储结构的相关底层知识。换句话说,随着业务的复杂化和多样化,作为程序员总会在一个特殊的情境下依赖一些底层抽象契约之外的行为,而在这种情况下掌握计算机底层知识就显得非常重要了。某种意义上计算机中的许多顶层抽象是“不完全成功”的,虽然它确实能够降低编程的门槛,但事实上作为专业程序员所需要掌握的底层知识并没有因此减少多少。
作者:知乎用户 链接:https://www.zhihu.com/question/264426279/answer/1840524133 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。