Stima di una funzione di ricerca
Come valutare una funzionalità di ricerca: pertinenza, ordinamento, faceting e chi è il responsabile dell’indice. Le domande che trasformano la semplice richiesta di “aggiungere una barra di ricerca” in una vera e propria valutazione.
“Aggiungere una barra di ricerca” si traduce in realtà in “scegliere un motore di ricerca, creare un modello di pertinenza e detenere l’indice per sempre”.
La ricerca presenta due aspetti che il ticket non menziona mai. Il primo riguarda la pertinenza: cosa rende un risultato migliore di un altro, e chi lo decide? Il secondo è di natura operativa: dove risiede l’indice, come si mantiene sincronizzato con la fonte di riferimento e cosa accade quando rimane indietro? L’espressione «aggiungere la ricerca» implica un controllo dell’interfaccia utente. Il lavoro consiste nel ranking e nell’indice.
Un team che ha già implementato funzionalità di ricerca sa bene che la risposta raramente è la stessa due volte. La ricerca full-text di Postgres va bene finché non si richiede la tolleranza agli errori di digitazione. Elasticsearch è veloce finché non si è costretti a pagare per il suo utilizzo nei fine settimana. Algolia è semplice finché non si ha bisogno di un sistema di classificazione personalizzato. La stima dipende dal compromesso che il team decide di accettare, e tale decisione solitamente non è ancora stata presa quando il ticket arriva in fase di perfezionamento.
Ciò che viene detto nella sala
Backend: “Postgres è in grado di farlo con
tsvector.”PM: “Gli errori di battitura dovrebbero comunque corrispondere? E i plurali?”
Frontend: “Utilizzeremo il completamento automatico o semplicemente il metodo ‘invia e poi visualizza i risultati’?”
SRE: “In che modo manteniamo l’indice sincronizzato? Tramite trigger? Tramite job? Tramite stream?”
Introduzione: “A chi spetta la responsabilità della pertinenza quando qualcuno si lamenta che la risposta giusta si trova a pagina due?”
Domande da porsi prima di votare
- Di quale corpus si tratta: quanti documenti comprende e con quale frequenza vengono aggiornati?
- Postgres FTS, un servizio di ricerca dedicato o un servizio in hosting (Algolia, Typesense)?
- Tolleranza agli errori di battitura, stemming, sinonimi, plurali: quali sono inclusi nell’ambito di applicazione?
- Filtro per criteri e filtri, oppure semplicemente un unico elenco ordinato?
- In che modo l’indice rimane sincronizzato e qual è il limite di obsolescenza?
- Chi detiene la rilevanza nel lungo periodo e in che modo la ottimizza?
Se la scelta dell’infrastruttura è ancora aperta, tale decisione costituisce uno spike, non una story. Si definisca l’entità dello spike e si rivaluti la realizzazione una volta che la rilevanza avrà un responsabile.
La casella di ricerca rappresenta un giorno. La pertinenza e l’indice costituiscono la caratteristica, pertanto si prega di stimarli.
Si veda la stima di un’integrazione di pagamento per una struttura analoga, ovvero una superficie pubblica di dimensioni ridotte che nasconde una lunga coda operativa, nonché gli altri esempi di stime elaborate. Oppure apra una sessione gratuita di Planning Poker quando la domanda di rilevanza ha un responsabile.