惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
GbyAI
GbyAI
博客园 - 叶小钗
B
Blog
Stack Overflow Blog
Stack Overflow Blog
The Register - Security
The Register - Security
W
WeLiveSecurity
S
Secure Thoughts
S
Security @ Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Webroot Blog
Webroot Blog
爱范儿
爱范儿
SecWiki News
SecWiki News
N
News and Events Feed by Topic
Y
Y Combinator Blog
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
云风的 BLOG
云风的 BLOG
博客园 - 聂微东
V
V2EX
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
U
Unit 42
F
Full Disclosure
PCI Perspectives
PCI Perspectives
Security Archives - TechRepublic
Security Archives - TechRepublic
N
News | PayPal Newsroom
The Last Watchdog
The Last Watchdog
Cloudbric
Cloudbric
O
OpenAI News
S
Security Affairs
D
Docker
博客园 - Franky
Application and Cybersecurity Blog
Application and Cybersecurity Blog
The GitHub Blog
The GitHub Blog
博客园 - 三生石上(FineUI控件)
P
Proofpoint News Feed
Recent Commits to openclaw:main
Recent Commits to openclaw:main
aimingoo的专栏
aimingoo的专栏
Hugging Face - Blog
Hugging Face - Blog
TaoSecurity Blog
TaoSecurity Blog
F
Fortinet All Blogs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Google DeepMind News
Google DeepMind News
L
LINUX DO - 最新话题
MyScale Blog
MyScale Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 司徒正美
N
News and Events Feed by Topic

Irving Wladawsky-Berger

Proprietary vs Open AI Models: Experiment → Learn → Specialize → Scale AI Moves Toward Organizational Deployment Why AI Hasn’t Replaced Software Engineering? — and Probably Won’t Some Personal Reflections on a Long Career The 2026 State of Tech Talent The State of AI in Higher Education: Widespread Use, Unclear Rules AI Interpretability: Understanding How AI’s Black-Box Brain Works The Evolution of Digital Market in the Age of AI Agents The Future We Should Want from the AI Revolution Forecasting the Economic Impact of AI The Democratization of (Artificial) Intelligence The 2026 AI Index Report Managing AI as Both Tool and Teammate How Is AI Shaping the Future of Work? What Causes AI Brain Fry? Know Your Agent (KYA): Governing AI in the Enterprise The Economic Value of Open Source Software Contributions There Is Time to Adapt AI If We Use the Time Wisely Large Company CEOs Are Leading AI Adoption The Economic Impact of Transformative AI The Economic Impact of the Emerging Age of AI Remote-First Organizations: Practices that Drive Talent, Trust, and Performance AI Foundation Models and Traditional Supercomputing
Why AI Can’t Replace Software Engineering
irvingwb · 2026-06-24 · via Irving Wladawsky-Berger

AI’s potential threat to programming has been widely debated over the past few years, as evidenced by the growing number of provocative headlines. For example, “The End of Programming” argued that “the end of classical computer science is coming, and most of us are dinosaurs waiting for the meteor to hit.” Other articles have predicted that “ChatGPT Will Replace Programmers Within 10 Years,” while NVIDIA CEO Jensen Huang has suggested that coding may no longer be a viable long-term career because of increasingly capable AI systems.

In addition, several widely discussed studies have identified programming as one of the occupations most exposed to AI and have documented declining employment among younger workers in software-related jobs. Unsurprisingly, parents of computer science students increasingly worry about their children’s career prospects.

But these concerns raise a more fundamental question: What exactly is being threatened? Is AI making software engineering obsolete, or is it primarily changing the nature of programming?

“Social media provide a steady diet of dire warnings that artificial intelligence (AI) will make software engineering (SE) irrelevant or obsolete,” wrote Carnegie Mellon computer scientists Mary Shaw and Eunsuk Kang in their 2024 article “Chill, Y’all: AI Will Not Devour SE.” “To the contrary, the engineering discipline of software is rich and robust; it encompasses the full scope of software design, development, deployment, and practical use; and it has regularly assimilated radical new offerings from AI.”

I have long known professor Shaw since we both served in the President’s Information Technology Advisory Committee (PITAC) in the late 1990s. She’s been writing about software as an engineering discipline, going back to her 1990 article on “Prospects for an Engineering Disciplines of Software.” Over the years, I have closely followed her continuing research on the topic.

“Software engineering (SE) is a rich, robust discipline that covers software systems from idea through their lifetime,” Shaw and Kang explained in their article. SE is “the branch of computer science that creates practical, cost-effective solutions to computing and information processing problems, by applying the best-systematized knowledge available, developing software systems in the service of mankind.” It “encompasses the full scope of software systems from concept to retirement — a full spectrum of issues from understanding what problem the software should solve through overall design, tradeoff resolution, performance, reliability, sustainability, usability, fitness for purpose, programming of components, composition of components, validation, adherence to policy and standards, and evolution.”

Their observation highlights an important distinction that is often overlooked. Software engineering is not synonymous with programming. Programming is an important activity within software engineering, but software engineering encompasses a much broader set of responsibilities, including requirements analysis, architecture, design, trade-off evaluation, testing, reliability, maintainability, security, deployment, governance, and evolution over the lifetime of a system.

To this day, software engineering remains poorly understood outside the profession. The term is often used interchangeably with programming or software development, even though its scope is much broader. This misunderstanding has become increasingly important as AI systems become more capable of generating code while remaining far less capable of understanding the broader context in which software systems are designed, deployed, and maintained.

Software engineering is fundamentally concerned with designing and managing complex systems throughout their entire lifecycle. Programming is one component of that process, but it is only one component. This distinction becomes even more important in the age of generative AI.

Earlier this year, professor Shaw along with her CMU colleagues Michael Hilton and George Fairbanks  published “AI Tools Make Design Skills More Important than Ever” in the March-April  2026 issue of IEEE Software.

Their article argued that the responsibilities of software developers are increasingly shifting from writing code toward specifying, evaluating, integrating, and governing software systems. AI tools may generate code, but humans must still determine what should be built, whether the generated code is correct, whether it satisfies the underlying requirements, and whether it fits within the larger architecture of the system.

“In other words, the responsibilities of software developers are rapidly becoming more about designing and less about programming. Reading, understanding, evaluating, and repairing someone else’s code is now more important than writing code from scratch. Judging whether you requested the right thing looms larger when the code is not written by you. Attempting to develop complex software without these skills can put a programmer in the position of the Sorcerer’s Apprentice – able to invoke the technology but lacking the skills to control it.”

This is where software engineering and programming begin to diverge most clearly.

To better understand why, Shaw recommended that I read another recent IEEE Software article, “An Abstraction Is Worth a Thousand Vibes,” by software engineering researcher Marcus Borg. Borg offers a particularly useful explanation of why abstraction remains one of the most important intellectual tools in software engineering and why AI does not eliminate the need for it.

His argument is especially relevant given the growing popularity of vibe coding. AI-assisted development tools have made it easier than ever for individuals to rapidly prototype applications, explore ideas, and generate working code. Borg himself is quite supportive of vibe coding as a good prototyping tool for quick-and-dirty experimentation and innovation.

However, building production-quality software systems is fundamentally different from rapidly created prototypes.

Complex software systems, explains Borg, can’t be created by jumping directly from requirements to source code. They are built through multiple layers of abstraction that progressively transform ideas into working systems:

  • Requirements are refined into architectures.
  • Architectures are decomposed into components.
  • Components are implemented in code.
  • Code is validated through testing.

Each layer provides critical feedback and helps engineers manage complexity. AI can accelerate parts of this journey, but it does not eliminate it.

As Borg notes, decades of software engineering experience have taught us that abstractions are essential for understanding, designing, and maintaining complex systems. They compress information, expose relationships, and provide the context needed to reason about large software systems. Skipping these abstractions is not a shortcut; it is often a recipe for failure.

“AI should not skip abstractions,” he writes. “Instead, our existing tooling should expose these structures so that AI-powered solutions can consume and modify them. To do that properly, our AI tools need access to the same information human engineers rely on — more context to understand the bigger picture.”

That statement points to what may become the next stage in the evolution of AI-assisted software development. Rather than replacing software engineering, AI systems will increasingly need to incorporate the abstractions, architectures, requirements models, design artifacts, and engineering knowledge that human software engineers have developed over decades.

The ability to create meaningful abstractions that capture the complexity of large production systems remains fundamentally human. Software engineering is ultimately about managing complexity, balancing competing requirements, making design trade-offs, and guiding systems through their entire lifecycle.

AI may dramatically change how code is written. But code has never been the whole story.

As programming becomes increasingly automated, software engineering — the discipline of understanding problems, designing solutions, and managing complexity through abstraction — is likely to become even more important. The future of software development may involve less programming, but it will almost certainly require more software engineering.