The Post-AI Developer
With the rise of AI Tools and their prevalence in software development, a question keeps coming up again and again, "Will AI replace developers?"
I believe there is no short answer for this, it will definitely change the way we work on the short-run but on the long-run, no one can tell for sure.
History has shown us time and time again, that when a new disruptive technology is invented (cars replacing horses), whole businesses and jobs could potentially disappear (stagecoach drivers, blacksmiths, stable hands, etc..), but ultimately new ones are created instead (gas stations, car factories, mechanics, etc.).
§
In his paper No Silver Bullet - Essence and Accidents of Software Engineering (published in 1986!), Fred Brooks argues that there is no single breakthrough technology or practice that will by itself bring an order-of-magnitude improvement in productivity, reliability, or simplicity to the software development process:
He distinguishes between two types of complexity in software development:
- Essential Complexity: This is the inherent complexity of the problem being solved. It is tied to the nature of the software itself and cannot be eliminated. For example, a complex business logic or a sophisticated algorithm.
- Accidental Complexity: This is the complexity that arises from the way we build software. It is not inherent to the problem, but is introduced by the tools, languages, and processes we use. For example, using a certain database, programming language, or framework.
Brooks argues that while we can work to reduce accidental complexity through better tools and practices, essential complexity will always remain. Therefore, no single technology or practice can eliminate the inherent challenges of software development.
"I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the 2 representation. We still make syntax errors, to be sure; but they are fuzz compared to the conceptual errors in most systems. If this is true, building software will always be hard. There is. inherently no silver bullet." -Fred Brooks
§
As AI tools become more advanced, they may be able to handle more of the routine and repetitive tasks involved in software development (accidental complexity). However, they cannot eliminate essential complexity, which is tied to the nature of the problems we are trying to solve with software, that are in their nature (novel) problems, which the AI has not seen before, and therefore cannot solve without human input.
What is most likely to happen, is that developers will be pushed more towards the (product) side of the value spectrum, focusing more on understanding user needs, defining product requirements, and acting as a bridge between technical and non-technical stakeholders, future developers will need to have better command of language, to communicate effectively with both humans and machines (e.g. prompt engineering), they need to be able to describe technical architectures and technical aspects in a concise and succinct manner.
This is a strange new hybrid between literary skills and technical skills. These skills are currently not taught in most computer science programs, but are becoming increasingly important in the age of AI.