Effortless
Software
Development
NERDEARLA 2023 | BUENOS AIRES
@[email protected]
Slide 2
Slide 2 text
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?
Slide 3
Slide 3 text
Anna Filina
‣ Coding since 1997.
‣ PHP, Java, C#, etc.
‣ Legacy archaeology.
‣ Test automation.
‣ Talks and workshops.
‣ YouTube videos.
‣ Filina Consulting.
Slide 4
Slide 4 text
1/3
Better
Specifications
Slide 5
Slide 5 text
Getting an answer
Dev
Requirements User testing
50-page
document
Slide 6
Slide 6 text
Question 2
Missing use cases / redesign More testing
er
User testing
Slide 7
Slide 7 text
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.
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
Requirements
Collection of use cases to implement.
Slide 11
Slide 11 text
I select a
membership option
I submit valid credit
card details
I should see a
payment receipt
Requirements
Use cases
(scenarios)
Slide 12
Slide 12 text
Scenario
Dev
Requirements User testing
Use cases
(scenarios)
Slide 13
Slide 13 text
2/3
Iterative Design
Slide 14
Slide 14 text
Design Dev
Approval
Mistake in
design
Slide 15
Slide 15 text
The map is not the territory.
— Alfred Korzybski
Slide 16
Slide 16 text
Recommendation
‣ Sequence or activity diagram.
‣ Minimal code to validate design.
Slide 17
Slide 17 text
API
UI
User
Select membership
Order
Create order {product_code}
Payment screen
Enter payment details
Receipt {confirmation_num}
Finalize order {card}
Receipt
Slide 18
Slide 18 text
3/3
More Cooks
in the Kitchen
Slide 19
Slide 19 text
Recommendation
‣ Team programming: validate the design + shared vision.
‣ Split the work: implementation + tests.
Slide 20
Slide 20 text
API
UI
User
Select membership
Order
Create order {product_code}
Payment screen
Enter payment details
Receipt {confirmation_num}
Finalize order {card}
Receipt
Split the Work
‣ Test handler.
‣ Implement interfaces + tests.
‣ Implement validation of DTOs + tests.
‣ Implement steps of acceptance tests.
Slide 29
Slide 29 text
No content
Slide 30
Slide 30 text
Acceptance Tests
‣ Both for backend and frontend.
‣ Just for the backend.
Slide 31
Slide 31 text
HTTP request 1
HTTP request 2
Assertion
Slide 32
Slide 32 text
Mission
Accomplished
Slide 33
Slide 33 text
Lessons Learned
‣ Code is living documentation.
‣ Don't try to figure everything out upfront (unknowns).
‣ Mistakes are normal (fail fast).
‣ Work together more often.