“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.