The Evolving Role of Developers in the Age of AI
The promise of technology replacing technical expertise is a recurring theme, but reality often reveals a different outcome: transformation. This pattern is repeating itself with the rise of AI-assisted development. Instead of eliminating the need for developers, AI is highlighting the importance of system architecture and other crucial skills.
The Transformation of Roles, Not Elimination
Technological advancements often lead to the evolution of roles rather than complete elimination.
-
The no-code movement didn't eliminate developers; it created no-code specialists and backend integrators.
-
The cloud didn't eliminate system administrators; it transformed them into DevOps engineers.
-
Now, AI-assisted development promises to write all the code, but it's evolving into a need for engineers who can orchestrate AI systems effectively.
These transformations often come with increased specialization and higher salaries.
The Importance of Architecture Over Simply Writing Code
A fundamental truth about software engineering is being highlighted by AI: the most valuable skill is not writing code, but architecting systems. This involves a broader understanding of how different components interact and contribute to the overall system.
-
Macro Architecture: Encompasses the high-level design, involving choosing services and chaining functionalities together.
-
Micro Architecture: Focuses on writing code that is reusable, maintainable, and has a well-defined API.
AI's approach often favors generating code quickly, which can lead to neglecting the importance of well-architected and maintainable code.
The Looming "Sh*tification" of Code
There's a concern that the ease of generating code with AI might lead to a decline in code quality, resulting in a phenomenon the speaker terms "shitification." This stems from the tendency to prioritize speed over long-term maintainability and architectural soundness.
-
Many web projects are small and short-lived, focusing on immediate functionality rather than long-term vision.
-
AI can be a multiplier for these projects, enabling rapid development but potentially creating a mess of unmaintainable code.
-
This proliferation of low-quality code can lead to frustrating experiences for developers and users alike.
The Three Pillars of a Valuable Developer
The most valuable skill set lies in the middle ground, combining practical coding, theoretical understanding, and effective communication.
-
Practical Skills: Writing clean, maintainable code.
-
Theoretical Knowledge: Understanding system architecture and design principles.
-
Communication Skills: Collaborating with others and conveying technical concepts effectively.
AI is unlikely to replace the ability to communicate and collaborate effectively.
The Recurring Cycle of Replacement Promises
The tech industry has a history of promising technologies that would replace developers, but these promises rarely materialize.
-
No-code/low-code platforms were supposed to let business users build their own applications.
-
The cloud was supposed to eliminate the need for ops teams.
-
AI is now promising to write code for us.
In each case, the technology transformed the role of the developer rather than eliminating it.
Microservices Mania and the Modular Monolith
The speaker criticizes the overzealous adoption of microservices, recounting an anecdote of a team that had more microservices than users. A simpler, more efficient approach can be to start with a modular monolith, a well-structured application that can be broken down into microservices later if needed.
The Importance of Architectural Leadership and Holistic Judgement
Just as an orchestra needs a conductor to create harmony, software projects need strong architectural leadership to ensure cohesion and quality.
-
AI can generate code, but it often lacks a coherent architecture.
-
Senior engineers spend time verifying AI output.
-
Architects need to understand business requirements, resource allocation, and performance characteristics.
AI also lacks the holistic judgement based on experience and intuition, needed to identify design inconsistencies and diagnose performance issues. AI may tell you code compiles, but it can't tell you if the overall architecture "feels right".
Code as a Liability, Not a Strategic Moat
The speaker argues that code should be viewed as a liability rather than a strategic moat. Generating more code faster, even with AI, can increase the overall liability if the code is poorly written, unmaintainable, and difficult to understand. More people producing that liability does not mean a good thing.