Key Facts
- ✓ The article was published on Substack on January 13, 2026.
- ✓ It was shared on Hacker News, where it received 4 points.
- ✓ The central metaphor contrasts 'digging' a hole with 'building' with Lego bricks.
- ✓ The piece argues against the trend of creating ever-deeper type systems in programming languages.
Quick Summary
The software development community is being urged to shift its focus from theoretical complexity to practical construction. A new perspective is gaining traction, suggesting that the industry's obsession with creating ever-more-complex type systems is a misguided effort. Instead of continuing to 'dig' deeper into type theory, the argument is to start 'building'.
This approach champions the use of simple, composable components—much like Lego bricks—that can be assembled to create powerful and flexible applications. The core idea is that by focusing on modular, interoperable parts, developers can achieve greater productivity and creativity, moving beyond the constraints of overly rigid systems. This marks a significant philosophical shift from abstract theory to hands-on creation.
The 'Digging' Dilemma
The central critique targets the prevailing trend in many programming languages and frameworks: the addition of increasingly sophisticated type features. This relentless refinement is described as an act of 'digging a hole'. Each new feature, designed to solve a specific edge case, adds another layer of complexity to the language's core, making it harder for developers to learn, use, and maintain.
The problem with this approach is that it often yields diminishing returns. The effort is spent on making the type system more powerful in the abstract, rather than making it easier to build concrete things. This creates a steeper learning curve and can lead to tools that are powerful in theory but cumbersome in practice.
- Increased cognitive load for developers
- Steeper learning curves for new languages
- Diminishing returns on complexity
- Focus shifts from problem-solving to tool mastery
"Instead of digging a hole, we should be building with Lego bricks."
— Author, Programming Simplicity Substack
The 'Lego' Philosophy 🧱
In contrast to the digging metaphor, the article proposes a 'Lego brick' philosophy. This model is built on the power of composition. Instead of a single, monolithic system where every part is intricately connected, imagine a world of small, independent, and standardized components. Each 'brick' has a simple, clear purpose and a well-defined interface for connecting to others.
The beauty of this system is its emergent complexity. Simple parts, when combined, can create incredibly sophisticated structures. This approach empowers developers to focus on what they are building, not on the intricate rules of the underlying system. It encourages experimentation, reuse, and rapid prototyping, as developers can snap together existing parts instead of forging new ones from scratch.
Instead of digging a hole, we should be building with Lego bricks.
Community Reaction
The ideas presented have resonated within the programming community, sparking discussion on platforms like Hacker News. The conversation highlights a growing desire for simplicity and pragmatism in an era of ever-expanding toolchains. Developers are increasingly questioning whether the complexity of modern systems is justified by the benefits.
The debate touches on core principles of software engineering: maintainability, readability, and developer velocity. The 'Lego' approach suggests that by reducing the complexity of the foundational tools, the entire development lifecycle becomes more efficient and enjoyable. It's a call to action for toolmakers to prioritize usability and composability over theoretical power.
- Debate on type system complexity
- Focus on developer productivity
- Value of modularity and reuse
- Shift towards pragmatic solutions
A Shift in Focus
Ultimately, this is a call for a fundamental shift in mindset. The goal is to move from a culture of refinement to one of creation. It's not about abandoning type safety or structure, but about finding a balance where these features serve the builder, not the other way around. The focus should be on creating tools that are a joy to use and that get out of the developer's way.
This vision encourages a future where programming is less about mastering arcane language specifications and more about assembling elegant solutions. By embracing simple, powerful, and composable parts, the community can unlock new levels of productivity and build the next generation of software, one brick at a time.
Looking Ahead
The central takeaway is a challenge to the status quo: stop digging. The endless pursuit of deeper, more complex type systems may not be the path to better software. The alternative—building with simple, reusable components—offers a more practical and potentially more powerful paradigm.
The future of programming may look less like a monolithic cathedral and more like a vibrant city built from versatile Lego bricks. This approach promises greater flexibility, faster development, and a more accessible entry for new developers. It's a compelling vision for a more creative and efficient future in software construction.





