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.” (more…)
