The Unseen Cost of Abstraction
Casey Muratori, known for his direct approach to software development realities, delivered a stark message at BSC 2026: the pervasive bloat and complexity plaguing modern software isn't an inherent byproduct of progress, but a direct consequence of developers' own choices regarding abstraction. He contends that the industry has collectively embraced layers of indirection that, while seemingly offering productivity gains, ultimately obscure fundamental problems and make systems brittle, slow, and difficult to reason about.
Muratori’s central thesis is that the “root of the root of all evil” in software development lies not in specific bad practices or technologies, but in the pervasive, often unexamined, reliance on abstraction. He draws a clear line from high-level languages and frameworks down to the underlying hardware, arguing that each successive layer of abstraction, when not wielded with extreme care and understanding, creates new opportunities for errors, performance degradation, and a loss of control.
Think of it like building a house. You could use pre-fabricated walls and modular plumbing systems. This gets the house up faster, and you don't need to be a master carpenter or plumber. But if one of those pre-fab walls is slightly misaligned, or the modular plumbing has a hidden leak, fixing it becomes a nightmare. You have to dismantle large sections, understand how the factory-made components fit together, and hope you can reassemble it correctly. If you had built the house brick by brick, with each brick and pipe laid by hand, you'd understand every single joint and connection. Fixing a small issue would be straightforward, even if it took longer initially.
Muratori argues that much of modern software development resembles the pre-fabricated house approach, sacrificing deep understanding and control for perceived speed. This leads to a situation where developers are increasingly disconnected from the actual execution of their code, leading to a cascade of negative effects.

The Illusion of Productivity
The allure of abstraction is powerful. Frameworks promise to handle boilerplate, libraries offer ready-made solutions, and high-level languages abstract away memory management and CPU cycles. These tools are often presented as essential for modern development, enabling teams to build complex applications rapidly. However, Muratori challenges this narrative. He posits that while abstractions can indeed accelerate initial development, they simultaneously erect barriers to understanding and debugging. When a performance bottleneck emerges, or a subtle bug surfaces, developers often find themselves fighting against the very abstractions they embraced.
The consequence is a software ecosystem characterized by immense complexity, where simple tasks require navigating intricate dependency chains and opaque internal workings. Muratori highlights that the time saved by using high-level abstractions is often recouped, and then some, in the time spent debugging, optimizing, and simply understanding the system's behavior. This is particularly true for performance-critical applications, where the overhead introduced by multiple layers of indirection can be devastating.
He points to the proliferation of JavaScript frameworks, each promising a better way to build the web, as a prime example. While individual frameworks might offer elegant solutions to specific problems, their sheer number and the constant churn create a landscape where developers are perpetually learning new systems, often without a deep understanding of the underlying principles they are meant to augment. This creates a shallow pool of knowledge and a dependency on the framework maintainers to solve problems that, in a more direct system, might be solvable by the application developer.
Reclaiming Control: The Path Forward
Muratori’s call to action is not a Luddite rejection of all abstraction. Instead, it is a plea for a more conscious and deliberate application of these tools. He advocates for developers to actively seek to understand the layers beneath their chosen abstractions. This means understanding how memory is managed, how the CPU executes instructions, and how the operating system schedules processes. Without this foundational knowledge, developers are effectively flying blind.
The alternative he presents is a return to practices that prioritize clarity, simplicity, and direct control. This doesn't necessarily mean a wholesale abandonment of modern languages or tools, but rather a critical evaluation of their necessity and a willingness to dive deeper when required. For Muratori, this involves a commitment to writing code that is not only functional but also transparent in its operation. It means being prepared to step outside of the comfortable abstractions and engage with the lower-level mechanics when performance, stability, or maintainability demands it.
The surprising detail here is not that abstraction can cause problems, but the sheer depth to which Muratori believes it has permeated and corrupted the fundamental goals of software engineering. He suggests that the industry has become so enamored with abstracting away complexity that it has forgotten how to manage it effectively when it inevitably re-emerges.
What nobody has addressed yet is what happens to the vast ecosystem of tools and educational resources built around these complex abstractions. If developers start moving towards lower-level control, what becomes of the multi-billion dollar industry of frameworks, meta-frameworks, and related developer tooling? Does this signal a potential market shift, or a more niche return to manual control?
Ultimately, Muratori’s message is a challenge to the current generation of software developers. It’s a call to question the status quo, to value deep understanding over superficial productivity, and to recognize that the true root of software problems often lies not in the code itself, but in the layers of indirection we choose to build around it. He urges developers to become masters of their tools, not just users, and to understand the full stack from silicon to screen.
