Stima di una funzione di ricerca
Come valutare una funzionalità di ricerca: pertinenza, classificazione, 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 a tempo indeterminato”.
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 deve 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 di solito non è ancora stata presa quando il ticket arriva in fase di perfezionamento.
Ciò che viene detto nella stanza
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: “Come manteniamo sincronizzato l’indice? Tramite trigger? Tramite job? Tramite stream?”
Titolo: “A chi spetta la rilevanza quando qualcuno si lamenta che la risposta giusta si trova alla seconda pagina?”
Domande che vale la pena 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 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 valuti l’entità dello spike e si ricalcoli la stima della realizzazione una volta che la funzionalità avrà un responsabile.
La casella di ricerca rappresenta un giorno. La pertinenza e l’indice sono le caratteristiche: si prega di stimarle.
Si veda la stima di un’integrazione dei pagamenti per lo stesso modello — una superficie pubblica ridotta che nasconde una lunga coda operativa — e gli altri esempi di stime elaborate. Oppure apra una sessione gratuita di planning poker quando la domanda di rilevanza ha un responsabile.