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

Effortless Software Development

Anna Filina
September 28, 2023

Effortless Software Development

Software development can be an eternal struggle, or it can be code that pretty much writes itself. In this talk, we’ll look at how simple acceptance tests and a few diagrams help us dive right into the code, which we in turn outline using DDD, This allows us to have a clean and testable design without worrying about implementation details. Code can be then implemented without developers worrying about stepping on each others’ toes, while still be confident that everything will work once put together. Discover how my team can build features faster than the client can sign them off.

Anna Filina

September 28, 2023

More Decks by Anna Filina

Other Decks in Programming


  1. Waiting for user tests Merge conflicts Adding missing requirements Waiting

    on someone else Someone you never heard of disagrees with requirements Redesign Writing code Figuring out requirements 50-page document Approving the document 20 levels of inheritance 800-line methods 6 levels of nested IFs What does array2 contain? How to unit-test it? Is this null right now?
  2. Anna Filina ‣ Coding since 1997. ‣ PHP, Java, C#,

    etc. ‣ Legacy archaeology. ‣ Test automation. ‣ Talks and workshops. ‣ YouTube videos. ‣ Filina Consulting.
  3. Recommendation ‣ Get a product owner. ‣ With direct &

    quick access. ‣ Should not have other roles in the org. ‣ Should not delegate questions. ‣ Communicate requirements using acceptance tests.
  4. I select a membership option I submit valid credit card

    details I should see a payment receipt Requirements Use cases (scenarios)
  5. API UI User Select membership Order Create order {product_code} Payment

    screen Enter payment details Receipt {confirmation_num} Finalize order {card} Receipt
  6. API UI User Select membership Order Create order {product_code} Payment

    screen Enter payment details Receipt {confirmation_num} Finalize order {card} Receipt
  7. Team Programming ‣ Handler: 13 lines. ‣ Interfaces: 8 lines.

    ‣ DTOs: 46 lines. ‣ Total: 67 ‣ Shared vision.
  8. Split the Work ‣ Test handler. ‣ Implement interfaces +

    tests. ‣ Implement validation of DTOs + tests. ‣ Implement steps of acceptance tests.
  9. Lessons Learned ‣ Code is living documentation. ‣ Don't try

    to figure everything out upfront (unknowns). ‣ Mistakes are normal (fail fast). ‣ Work together more often.
  10. Further Topics ‣ Domain-driven design. ‣ Test-driven development. ‣ Acceptance

    tests. ‣ SOLID principles. ‣ Clean code. ‣ Extreme programming. ‣ Agile principles (not “agile” framework).