Claims that AI will drastically reduce the number of software engineers are exaggerated and often made by those distant from real production environments
AI code generation is typically limited by pre-existing architectures and the constraints of large codebases
Much of the generated code offers little innovation because most major decisions about code and infrastructure are already made
AI generates code in the same programming languages as humans, but that code still needs to be maintained and run in complex, error-prone production environments
Production systems have emergent behaviors and require engineers to diagnose and fix unexpected issues
History shows technology adoption (e.g., DevOps, cloud) shifts roles but rarely eliminates them; instead, it raises the level of abstraction
Code is merely an artifact of software engineering, similar to how blueprints are not the job of an architect
Writing less code is often better, as each additional line increases maintenance burden and potential for trade-offs
Major architectural choices (e.g., monolith vs. microservices) involve decisions that AI (LLMs) cannot handle, as they only generate patterns and text, not unique, context-specific solutions
Unlike previous innovations, professional engineers are slow to adopt AI code tools, possibly due to doubts about AI's current capabilities
Recent improvements in AI coding quality (such as the introduction of agents) have accelerated tool evolution
For effective AI co-coding, organizations should document standards, use reproducible environments, maintain easy testing, define clear module boundaries, and create concrete, well-scoped tasks
Practical Practices for Integrating AI into Engineering 10:44
Treat AI like any team member: provide clear instructions and tools, avoid vague tasks, and set clear standards and guidelines
Recognize that perfect code is not usually generated in the first attempt, whether by human or AI; iteration and testing are essential