Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Finding lost features - How NOT to build mazes ...

Finding lost features - How NOT to build mazes and complexity

On Conferences, we learn about DDD, Hexagonal Architecture or CQRS. Naturally, when we come back to work, we want to use these methodologies and practices which often results in just having “DTO”, “Repository”, “ValueObject” or even “CQRS” directories in our code… This is a very technical separation of namespaces and code in general, which doesn’t help in finding what exactly is implemented in our system. In my presentation, I will show how I deal with separating features and how we, as an Engineering Team, can implement clearly business requirements in systems that are not handling Facbook-scale traffic.

Konrad Alfaro

May 27, 2023
Tweet

More Decks by Konrad Alfaro

Other Decks in Programming

Transcript

  1. Finding Lost Features Konrad Alfaro @ How NOT to build

    mazes and complexity Entity Controller Service CQRS
  2. Who am I? 🤔 Backend Engineer with 8+ years of

    experience 🤓 Solutions Architect & Consultant @ 8lines.team 👔 Software Agencies, Product companies, Enterprises 🔨 Built 2 Startups (and failed) 😰 8lines.team
  3. 8lines.team • Given the system is a CRM system with

    Documents and Clients module • Given the resources in the CRM system are mostly CRUDs • Given the system is going to be used very infrequently by limited amount of users
  4. 8lines.team ✅ We comply with the Framework ✅ We follow

    standardised rules ✅ We (should) deliver fast ✅ It is good enough
  5. 8lines.team ⚠ We hide business logic behind Framework concepts and

    rules ⚠ We couple our business logic strictly with 
 the Framework
  6. 8lines.team ⚠ We introduce a lot of (most likely) unnecessary

    complexity - it is just a CRUD! ⚠ We like to implement new patterns just after one conference talk 😉
  7. 8lines.team • Given the system is a CRM system with

    Documents and Clients module • Given the resources in the CRM system are mostly CRUDs • Given the system is going to be used very infrequently by limited amount of users
  8. 8lines.team • Given the system is a CRM system with

    Documents and Clients module • Given the resources in the CRM system are mostly CRUDs • Given the system is going to be used very infrequently by limited amount of users
  9. 8lines.team ⚠ This is not a Domain-Driven approach ⚠ It

    is not suitable for large and complex systems
  10. 8lines.team ✅ We introduce separation of business concerns ✅ We

    don’t required everyone to be a DDD expert ✅ We deliver fast features using suitable concepts
  11. 8lines.team • Given the system is a CRM system with

    Documents and Clients module • Given the resources in the CRM system are mostly CRUDs • Given the system is going to be used very infrequently by limited amount of users
  12. 8lines.team • Given the system is a CRM system with

    Documents and Clients module • Given the resources in the CRM system are mostly CRUDs • Given the system is going to be used very infrequently by limited amount of users
  13. 8lines.team ✅ Framework is not your friend ✅ Don’t be

    immature and hype-driven ✅ Build solutions, not personal playgrounds ✅ Make your systems readable for you