If you work in I.T. at all, do yourself a favour and read this blog post:
https://cekrem.github.io/posts/programming-as-theory-building-naur
TL;DR highlights:
Domain Theory Builders
Senior developers don’t just write code—they construct and maintain the theoretical framework that connects business domains to software architecture.
Architectural Theory Guardians
When junior developers or LLMs produce code, senior developers serve as the critical bridge between raw implementation and coherent system design.
Intentional AI Collaborators
Senior developers practice what I call “intentional collaboration” with AI rather than reflexive usage. They understand everything they integrate, challenge AI’s assumptions, and ensure that generated code serves the system’s theoretical coherence rather than undermining it. If they use AI, it’s for the boring parts while preserving the craft elements that require human judgment.
Theory Teachers and Craft Mentors
Perhaps most importantly, senior developers transfer both theory and craft to others. They mentor junior developers not just in syntax or patterns, but in the deeper understanding that transforms scattered code into coherent programs.
Naur’s essay reminds us that programming is fundamentally a human intellectual activity. The real product of programming isn’t the code—it’s the theory, the understanding, the mental model that gives the system coherence. While LLMs can generate syntactically correct code, they cannot participate in theory building. They cannot understand business context, make thoughtful trade-offs, or maintain the conceptual integrity that separates good software from mere working code.