After being sent a stupid article written by a tech-illiterate churnalist about how some washed up businessman with no computer experience claims “AI is going to take away the jobs of software engineers” for the nth time, I am writing this blog post which you can send to anyone peddling this theory.
This is why AI will not take away the jobs of programmers and software engineers.
- Evolving Nature of Programming: The field of programming is constantly evolving, with new technologies and frameworks emerging regularly. While AI can assist in automating certain repetitive tasks, it is not yet capable of completely replacing the creative and problem-solving abilities of human programmers. Software engineering involves much more than just writing code. It requires understanding complex requirements, designing robust systems, debugging and troubleshooting, optimizing performance, and collaborating with other team members. These aspects involve critical thinking, domain knowledge, and creativity, which are not easily replaceable by AI.
- Specificity and Complexity of Instructions: AI language models require specific and detailed prompts to generate code. These prompts need to be carefully constructed, and any ambiguity or lack of clarity can lead to inaccurate or undesired results. Writing precise and comprehensive prompts that cover all possible scenarios can be a challenging task in itself. Therefore, the role of a software engineer may shift towards effectively communicating with AI systems, understanding their limitations, and providing the necessary guidance to achieve the desired outcomes.
- Abstraction and Tooling: Programming languages and frameworks, such as Python, provide abstractions that simplify complex tasks and make development more efficient. Similarly, AI language models can be seen as another layer of abstraction that helps automate certain aspects of coding. However, these abstractions and tooling do not eliminate the need for skilled professionals who understand the underlying principles and can handle more complex scenarios. Software engineers continue to be essential for building and maintaining the foundational frameworks, libraries, and infrastructure that AI relies on.
- Collaboration and Human Factors: Software development is often a collaborative process that involves teamwork, communication, and understanding the needs of stakeholders. While AI can assist in generating code, it cannot replace the human element of software engineering, such as gathering requirements, eliciting feedback, and making decisions based on domain expertise. Software engineers bring their experience, creativity, and problem-solving abilities to the table, ensuring that the resulting software meets the desired functionality, quality, and user experience.
Twenty years ago, when Python was released, there were concerns among some that the ease of coding with Python would lead to a decline in job opportunities for programmers. However, this prediction did not come to fruition, and the same reasoning applies to the current concerns about AI replacing software engineers. The parallels can be drawn between Python and AI in terms of their ability to process code in a more human-readable format.
Python, as a programming language, enables developers to write code in a more intuitive and expressive manner, using constructs that resemble natural language. It abstracts away some of the complexities of lower-level languages like C, allowing programmers to focus more on problem-solving rather than intricate syntax or memory management. Similarly, AI language models like ChatGPT aim to understand and generate human-like text, making it easier for users to communicate their intentions.
However, Python and AI are not interchangeable or mutually exclusive. While Python and other high-level languages provide abstractions, they still require the expertise and creativity of programmers to design and build complex software systems. Python serves as a tool that facilitates the translation of human-readable code into machine-executable instructions, ultimately converting it into lower-level languages like C, bytecode, and assembly code.
This cycle of abstractions and translations has been witnessed in the evolution of programming languages throughout history: Python abstracted C, C abstracted Assembly, Assembly abstracted machine code. Each layer of abstraction brings advantages in terms of productivity, expressiveness, and readability, but it does not eliminate the need for skilled software engineers. The role of software engineers extends beyond merely translating code; it involves problem analysis, system design, algorithm implementation, debugging, and optimization.
Similarly, AI, including AI language models, has its own role in assisting software engineers. It can automate certain repetitive tasks, provide suggestions, and offer solutions to specific programming challenges. However, it cannot replicate the human capacity for critical thinking, creativity, and the ability to understand complex requirements or collaborate effectively with stakeholders.
[This article was partly written by ChatGPT, I gave it the basic points and told it to ‘expand it’.]