Generative AI is now being seen as a potential threat to software engineers, along with other professions like copy editors and translators. However, history has shown that new technologies often promise to replace engineers but end up making them even more indispensable. To understand why concerns about the end of programming are exaggerated, we need to examine the evolution of coding and computing.
In the early days of computing, software was not considered a significant aspect compared to hardware and systems architecture. For example, computer scientist John Backus compared calling coders "programmers" or "engineers" to relabeling janitors as "custodians." This viewpoint undermined the importance of coding and often disregarded the work done by early programmers, many of whom were women.
Though undervalued, programmers played a crucial role by handling routine tasks like programming, debugging, and testing, which allowed others to focus on higher-level intellectual pursuits. Despite their indispensability, software engineers faced challenges fitting into company hierarchies. They were often self-taught and worked on programs they had designed themselves, making it difficult to integrate them into existing departments.
To address these complexities, various features and methodologies were developed in software development. FORTRAN aimed to enable scientists and non-programmers to write programs without relying on dedicated programmers. COBOL introduced an English syntax that simplified programming to the extent that managers could bypass programmers altogether. Waterfall-based development standardized and streamlined the process, making it more routine. Similarly, object-oriented programming aimed to make software engineering accessible to all computer users.
Overall, while there are ongoing discussions about the potential impact of generative AI on software engineers, it is important to recognize that historically, attempts to replace programmers have fallen short. Rather than eliminating the need for human software developers, advancements in technology have made their expertise and problem-solving skills even more crucial in the rapidly evolving field of coding and computing.
Throughout history, programmers have often been concerned about the potential disruption caused by new technologies such as compilers. However, these fears have proven to be unfounded. Languages like FORTRAN and COBOL, which were expected to replace programmers, instead created new complexities in computing that increased the demand for coding expertise. Similarly, methodologies like Waterfall introduced bureaucratic processes that hindered feature development.
In 1968, a NATO conference declared a "crisis" in software engineering due to a shortage of skilled professionals and projects experiencing delays. Taking this history into account claims that ChatGPT or similar language models will completely replace software engineers seem misplaced. Abruptly replacing engineers with AI could result in disaster and would likely lead to their rehiring. Instead, more reasonable suggestions propose that large language models (LLMs) can assist with mundane tasks in engineering, such as providing autocomplete suggestions or data sorting methods when prompted accurately.
As an engineer I can envision using an LLM as a problem-solving tool, allowing me to generate potential solutions for a given prompt. However, LLMs lack an understanding of feature requirements and codebase interconnections, making discussions with other engineers indispensable. While LLMs could enhance productivity expectations in the tech labor market, history has shown that attempting to reduce or streamline the role of developers only adds complexity and underscores the necessity of their expertise.
ChatGPT, similar to how compilers eliminated the drudgery of working in binary, has the potential to eliminate the mundane aspects of coding. This would enable developers to focus more on designing and building the architecture of their creations. However, the introduction of complexity in computing hasn't brought us any closer to eliminating the need for software engineers, as observed by computer scientist Edsger Dijkstra. Despite endeavors to make programming simpler, the field has become increasingly intricate.
If LLMs fulfill the promises of their creators, they may accelerate these trends further. Yet, it is crucial to recognize that the complete elimination of software engineers is unlikely, and their role will continue to be essential in navigating the complexities of coding and delivering high-quality software solutions.