The video critiques the “Screaming Architecture” concept in .NET as an oversimplified and impractical approach that relies too heavily on folder structures to convey intent, which leads to tangled dependencies and poor modularity in backend projects. Instead, the presenter advocates for using separate assemblies and namespaces to isolate shared components, promoting better code reuse, maintainability, and adherence to solid architectural principles like Domain-Driven Design.
The video criticizes the concept of “Screaming Architecture” in .NET, a trendy idea popularized by Uncle Bob (Robert Martin) and widely discussed on LinkedIn. The presenter finds the notion, especially as presented through infographics and “broetry,” to be confusing and unhelpful. The core idea behind screaming architecture is that the structure of your code should clearly communicate its intent, much like architectural blueprints should scream what kind of building they represent. However, the presenter argues that this analogy is outdated and overly simplistic, especially for modern software development.
The presenter challenges the analogy by pointing out that unlike buildings, where materials and design are decided upfront, software architecture is more complex and cannot be fully understood just by looking at folder structures or namespaces. He emphasizes that running the application itself is the best way to understand what it does, rather than relying on internal code organization. While he agrees with some principles from Uncle Bob, such as keeping business objects free of dependencies on frameworks or databases, he criticizes the practical implementation of screaming architecture in .NET backend projects.
A major technical issue highlighted is the tendency to organize code by feature folders within a single assembly and namespace, which leads to tangled dependencies and a “big ball of mud.” For example, placing controllers, models, DTOs, and database code all in one folder or namespace makes it impossible to reuse or share parts of the codebase across different applications or platforms without dragging unnecessary dependencies along. This approach hinders modularity, reusability, and maintainability, especially in statically typed backend environments like .NET.
The presenter advocates for a better approach using separate assemblies and namespaces to isolate shared components such as POCOs (Plain Old CLR Objects) and contracts. By placing these shared elements in a dedicated “Shared” project, developers can reuse code across different applications (e.g., mobile, desktop, CLI) without bringing in unwanted dependencies. This separation also protects intellectual property by allowing distribution of contracts without exposing business logic. The presenter stresses that this method leads to more valuable, flexible, and maintainable software.
In conclusion, the video dismisses screaming architecture as merely a folder layout trend that is unsuitable for backend development. The presenter urges the community to move beyond superficial architectural slogans and focus on creating clean, reusable, and technically sound software. He encourages developers to embrace proven principles like Domain-Driven Design and modularization through assemblies rather than relying on flashy but impractical ideas. The rant ends with a call to stop the hype around screaming architecture and focus on building real, maintainable software solutions.