What is the first thing you do when you start a new project? We usually design the database and map it to our codebase, the so called CRUD approach, but is this always the best solution? Although CRUD is a fast way of developing simple systems, the codebase can quickly become a nightmare to maintain when applied to complex domains. We'll explore better alternatives to deal with complexity like DDD and CQRS, focusing on the distinction between the operations the user wants to do (commands) the data they're interested in (queries) and the rules and constraints of the domain.