Building software in C#: part 2 - code architecture

TL;DR AI
2 min readKey summary
The article argues against one-size-fits-all C# architecture patterns and says design should fit the team, domain, and organizational context.
It proposes a simple function-based architecture: a flat domain of single-responsibility functions, including read functions, instead of heavy abstractions.
Higher-order functions are allowed only in strict layers that call lower-level functions and never peer functions, keeping dependencies one-way.
The approach is presented as a pragmatic alternative to patterns like CQRS, DDD, mediator, saga, and service locator for long-term maintainability.

