„Eine Suchleiste hinzufügen“ bedeutet in der Praxis: „Eine Suchmaschine auswählen, ein Relevanzmodell erstellen und den Index für immer besitzen.“

Die Suche umfasst zwei Aspekte, die in dem Ticket mit keinem Wort erwähnt werden. Der erste betrifft die Relevanz: Was macht ein Ergebnis besser als ein anderes, und wer entscheidet darüber? Der zweite ist operativer Natur: Wo befindet sich der Index, wie wird er mit der „Quelle der Wahrheit“ synchronisiert, und was geschieht, wenn er in Verzug gerät? „Suche hinzufügen“ impliziert ein Steuerelement in der Benutzeroberfläche. Die eigentliche Arbeit besteht in der Rangfolge und dem Index.

Ein Team, das bereits Suchfunktionen implementiert hat, weiß, dass die Antwort selten zweimal dieselbe ist. Die Volltextsuche von Postgres ist in Ordnung, solange niemand eine Toleranz gegenüber Tippfehlern wünscht. Elasticsearch ist schnell, solange Sie dafür nicht am Wochenende bezahlen müssen. Algolia ist einfach, bis man ein benutzerdefiniertes Ranking benötigt. Die Schätzung hängt davon ab, welchen Kompromiss das Team eingeht, und diese Entscheidung ist in der Regel noch nicht gefallen, wenn das Ticket in die Verfeinerungsphase gelangt.

Was in dem Raum gesagt wird

Backend: „Postgres kann dies mit tsvector…“

PM: „Sollten Tippfehler weiterhin übereinstimmen? Und Pluralformen?“

Frontend: „Verwenden wir die Autovervollständigung oder erst das Absenden und dann die Anzeige der Ergebnisse?“

SRE: „Wie sorgen wir dafür, dass der Index synchron bleibt? Mithilfe von Triggern? Über einen Job? Über einen Stream?“

Leitartikel: „Wem gebührt die Relevanz, wenn sich jemand darüber beschwert, dass die richtige Antwort auf Seite zwei steht?“

Fragen, die man sich vor der Stimmabgabe stellen sollte

  • Um welchen Korpus handelt es sich: Wie viele Dokumente umfasst er, und wie oft ändern sich diese?
  • Postgres FTS, ein dedizierter Suchdienst oder ein gehosteter Dienst (Algolia, Typesense)?
  • Toleranz gegenüber Rechtschreibfehlern, Stemming, Synonyme, Pluralformen: Was fällt in den Anwendungsbereich?
  • Facettierung und Filter oder lediglich eine einzige Rangliste?
  • Wie wird die Synchronisation des Indexes gewährleistet, und wie hoch ist das Veralterungsbudget?
  • Wer verfügt langfristig über Relevanz, und wie wird diese angepasst?

Sollte die Wahl der Infrastruktur noch offen sein, handelt es sich bei dieser Entscheidung um einen Spike, nicht um eine Story. Legen Sie den Umfang des Spikes fest und nehmen Sie eine neue Schätzung für die Entwicklung vor, sobald für die Relevanz ein Verantwortlicher feststeht.

Das Suchfeld entspricht einem Tag. Relevanz und Index sind die Merkmale; schätzen Sie diese daher ein.

Siehe Schätzung einer Zahlungsintegration für dasselbe Muster – eine kleine öffentliche Oberfläche, hinter der sich ein umfangreicher operativer Aufwand verbirgt – sowie die weiteren Beispiele für durchgeführte Schätzungen. Oder starten Sie eine kostenlose Planning-Poker-Sitzung, sobald die Frage zur Relevanz einem Verantwortlichen zugeordnet ist.