The two worlds of programming: why developers who make the same observations about LLMs come to opposite conclusions
(www.baldurbjarnason.com)
from misk@piefed.social to programming@programming.dev on 16 Mar 14:52
https://piefed.social/c/programming/p/1883477/the-two-worlds-of-programming-why-developers-who-make-the-same-observations-about-llms
from misk@piefed.social to programming@programming.dev on 16 Mar 14:52
https://piefed.social/c/programming/p/1883477/the-two-worlds-of-programming-why-developers-who-make-the-same-observations-about-llms
#programming
threaded - newest
Nice title, crap article.
Agreed.
Author drowned out the thesis of the article with an overly long background story that didn’t really drive home the point that well. It felt forced. Felt like a way to say, “I’m a skeptic about these things” while taking up four paragraphs of filler.
The author offered no investigation into different styles of coding that span the gradient of possible options (from agentic coding to handholding the LLM to not using an LLM at all).
I found myself wanting to rewrite the article without the ebook ad and incredibly long anecdote that took up most of the article and barely related to the subject.
Humorously, here is the article rewritten with an LLM. ;)
The Two Worlds of Programming
Programming is often described as a technical discipline, but disagreements about tools, methods, and productivity suggest something deeper: many developers operate in fundamentally different conceptual worlds. The same technology—especially recent AI-assisted coding tools—can appear revolutionary to some and marginal to others. This difference in perception often arises because programmers implicitly work within one of two different models of what programming actually is.
The first world sees programming primarily as the act of producing code. In this view, the essential task of a developer is to translate requirements into working software. Productivity is measured by how efficiently that translation happens. Faster typing, better autocompletion, code generation, and template reuse are all direct improvements to the workflow. Tools that generate code therefore appear extremely powerful. If a system can produce large portions of the code automatically, it seems reasonable to conclude that development itself has become dramatically faster. Within this world, AI code generators look like a natural extension of decades of tooling improvements—from compilers and IDEs to advanced autocomplete.
The second world sees programming as the process of understanding and shaping complex systems. Writing code is part of the work, but it is rarely the dominant difficulty. Much of the effort lies in interpreting ambiguous requirements, designing maintainable architectures, debugging subtle interactions, and reasoning about long-term consequences. In this view, code is simply the visible output of a much larger cognitive process. Generating code more quickly does not necessarily reduce the hardest parts of the job. A system that can write functions or boilerplate may still leave most of the conceptual work unchanged.
These two perspectives produce very different reactions to the same technologies. Developers in the first world often evaluate tools by asking: How much code can this produce? Developers in the second world ask a different question: Does this help me understand and control the system I’m building? Both questions are reasonable, but they lead to different conclusions about usefulness.
The divide also influences how developers think about expertise. In the code-production world, skill is often associated with fluency: the ability to quickly implement features and assemble working solutions. In the system-design world, expertise is more closely tied to judgment—recognizing trade-offs, anticipating failures, and structuring systems so they remain understandable over time. These skills are harder to measure and often less visible in short-term output.
In reality, most programming work involves elements of both worlds. Software cannot exist without code, and producing code efficiently matters. At the same time, successful systems depend heavily on decisions that occur before and after code is written. The tension between these perspectives becomes noticeable whenever a new tool promises to accelerate development. The question is never simply whether the tool works, but which world’s definition of programming it improves.
Understanding the two worlds clarifies why debates in the programming community often feel strangely misaligned. Participants are not merely disagreeing about tools; they are starting from different assumptions about what the work itself consists of. Until those assumptions are made explicit, discussions about productivity, automation, and the future of programming will continue to sound like people talking past one another.
🤣
The emdashes and not x, not y, but z. 🤣🤣🤣🤣🤣
I love emdashes. My heart is crushed now that I cannot use them without everyone assuming I’m a bot haha