Got the time
“Check if overdue invoices are paid.” Seems simple enough. But when are invoices due? Are they all due on the same day?
“Apply discounts to customers whose balance is more than $500.” Well, that sounds simple too. But are customers’ balances and discounts stable? Or do they change over time?
When designing a system from “requirements”, it’s not always easy to spot the impact of the passage of time. It’s too easy to fall into the trap of solving a business problem with a technical solution. We end up using batch jobs to try to catch up, resulting in a plate of spaghetti.
In this talk, we’ll analyze what appears to be a straightforward billing system that needs to deal with invoices and discounts. How hard can it be? We’ll then add a few more use-cases that make it more complicated and see how that can negatively impact the overall design.
Finally, we’ll focus our attention on the impact of time on the design, and see how it sheds light on the correct approach to designing features.
(All we want, two, three, go! Time, got the time tick tick tickin’ in my head!)
Recording: https://youtu.be/dXzruf1nYmw
Got the time (Italiano)
“Controllare se le fatture scadute sono saldate.” sembra abbastanza semplice. Ma quando scadono le fatture? Scadono tutte lo stesso giorno?
“Appllicare uno sconto a tutti i clienti il cui totale acquisti sia superiore a 500$.” Anche questo sembra semplice. Ma gli sconti e il totale ordini sono stabili nel tempo o variano?
Quando progettiamo un sistema partendo dai requisiti, non è sempre facile accorgersi dell’impatto che ha lo scorrere del tempo. È molto facile cadere nella trappola di risolvere il requisito di business usando una soluzione tecnica. Alla fine fineremmo per implementare un batch job, e tutto andrebbe a carte quarantotto.
Durante questa presentazione, analizzeremo quello che sembra essere un semplice sistema di fatturazione e di gestione della scontistica. Quanto può essere complesso? Anilizzando in dettaglio ci renderemo conto che le cose non sono sempre così semplici come sembra.
Inine sposteremo la nostra attenzione sull’impatto che ha lo scorrere del tempo, e scopriremo come questo ci aiuterà a scegliere l’approccio corretto.
(All we want, two, three, go! Time, got the time tick tick tickin’ in my head!)