Hallo Habr!
Heute möchten wir darüber sprechen, wie unser Produktteam die Erstellung funktionaler Anforderungen für Entwickler bei der Erstellung neuer Produkte und Funktionen angeht.
In der Entwicklungsphase können viele Überraschungen auftreten, insbesondere wenn die Aufgabe nicht klar beschrieben ist. Verschiedene Teammitglieder können die Entwicklung und Funktionsweise derselben Funktion auf unterschiedliche Weise verstehen. Daher sind Produktmanager dafür verantwortlich, ein Produkt von der Konzeptentwicklung bis zur endgültigen Version zu erstellen. Ein wichtiger Teil dieses Prozesses ist die Vorbereitung funktionaler Anforderungen.

Die Frage der Beschreibung von Aufgaben für Entwickler haben wir bereits im Artikel
Wie Manager lernen, Aufgaben für Entwickler festzulegen , aber darin haben wir mehr über administrative Probleme gesprochen, und heute werden wir mehr über technische Probleme sprechen. Dies ist eine äußerst wichtige Komponente jedes Unternehmens, dessen Verkäufe über das Internet erfolgen. Jedes Unternehmen, das sich aktiv in der Internetumgebung entwickelt, wird tatsächlich zu einem Softwaregeschäft. Trotzdem wachsen die Kompetenzen im Bereich des Anforderungsmanagements tendenziell sehr langsam.
Infolgedessen sehen wir oft das gleiche Bild: Aufgaben aus verschiedenen Abteilungen fallen ständig in die Entwicklungsabteilung, die Anforderungen in diesen Aufgaben werden vage beschrieben, und sobald etwas in die Tat umgesetzt wird, kehrt es sofort zur Überarbeitung zurück (weil der Direktor es nicht vollständig beschrieben hat was ich wollte, und der Entwickler tat, was er für richtig hielt). Das Ergebnis liegt auf der Hand: unvorhersehbare Fristen für Aufgaben, die Monate dauern können, ein demotiviertes Team, Spannungen innerhalb des Teams, unzufriedene Kunden, Rückstand gegenüber Wettbewerbern usw.
Mit diesem Artikel möchten wir ein einfaches Rezept geben, das die Grundlage für die Lösung solcher Probleme bildet. Es kann allen, die Aufgaben stellen, sicher zum Lernen (darüber hinaus zum Handeln) empfohlen werden.
Verschiedene Unternehmen haben unterschiedliche Ansätze, um funktionale Anforderungen zu schreiben, aber bei
Retail Rocket haben wir uns für diese Option entschieden und bereuen es bisher nicht.
Funktionale Anforderungen: Was ist das und warum werden sie benötigt?
Schauen wir uns zunächst die funktionalen Anforderungen an.
Funktionale Anforderungen - Dies ist die Erklärung des Problems an den Entwickler. Alles, was in den Anforderungen nicht angegeben ist, liegt im Ermessen des Entwicklers, was häufig von der Darstellung des Produktmanagers über das erwartete Ergebnis abweicht. Daher sollten die Anforderungen Antworten auf alle möglichen Fragen zur Aufgabe enthalten.
Funktionale Anforderungen bestehen typischerweise aus:
- User Story - zeigt, was Sie vom Entwicklungsteam erwarten
- Anwendungsfälle - Verwendungsszenarien anzeigen
- Wireframes - ein Visualisierungstool für Ihre Idee
Heute konzentrieren wir uns auf User Story und Anwendungsfälle.
User Story
Die User Story beschreibt, was der Benutzer in einer bestimmten Rolle spielt, um das Ergebnis zu erzielen, und was der Entwickler tun muss, um diese Aufgabe zum Leben zu erwecken.
In der Regel wird eine Vorlage verwendet:
Als / ein <Rollenname> möchte ich <Zweck, Aktion>, damit <Erwartetes Ergebnis> <Was der Entwickler tun sollte>Es gibt verschiedene Beispiele für die Anwendung dieser Methodik. So funktioniert es beispielsweise in Trello:

In Retail Rocket erstellen wir User Stories in Google Text & Tabellen mithilfe von Tabellen. Dies hilft, den Kommunikationsprozess zwischen verschiedenen Teams zu vereinfachen, da jeder Kommentare hinterlassen und Feedback geben kann.
So sieht beispielsweise die NPS-Tracking-Aufgabe für einen Online-Shop aus:

Dank einer solchen Visualisierung der Interaktion geht die Aufgabe des Benutzers reibungslos und logisch in die Aufgabe für Entwickler über. Dann sind die Anwendungsfälle an der Reihe.
Anwendungsfälle
Anwendungsfälle beschreiben das Benutzerverhalten Schritt für Schritt bei der Interaktion mit einem entwickelten Produkt.
Die Aufgabe des Benutzers besteht darin, was der Benutzer tut, um kurzfristige Ziele zu erreichen.
Wenn der Benutzer das Problem auf der entwickelten Seite auf verschiedene Weise löst, sollte für jede Lösung ein eigener Anwendungsfall geschrieben werden. Wenn sich der Zugriff auf die betroffene Funktionalität beispielsweise auf mehreren Seiten befindet, müssen Sie für jede Art und Weise, wie der Benutzer zur Funktion wechselt, einen separaten Anwendungsfall schreiben.
Schauen wir uns ein Beispiel unserer kürzlich veröffentlichten Funktion an - eine
Galerie mit Bildern und Schriftarten für Massenmailings.
Ziel des Benutzers ist es, Bilder auf unserer Plattform zu speichern und daraus E-Mail-Kampagnen zu erstellen.
Benutzeraufgaben:
- Bilder hochladen
- Betten Sie Bilder in eine Briefvorlage ein
- Bilder löschen
Für jede Aufgabe müssen Sie Ihren eigenen Anwendungsfall schreiben - eine Beschreibung der Interaktion des Benutzers mit der Benutzeroberfläche.
Beispiele für Anwendungsfälle:Bild hochladen:
- E-Mail-Vermarkter meldet sich bei Ihrem persönlichen Einzelhandels-Raketenkonto an
- E-Mail-Vermarkter öffnet Galeriebereich
- Der E-Mail-Vermarkter lädt Bilder per Drag & Drop oder durch Klicken auf die Schaltfläche „Dateien auswählen“ hoch
- Bilder werden hochgeladen
- Der Benutzer sieht eine Benachrichtigung über den erfolgreichen Upload von Bildern
Bilder löschen:
- Der Benutzer klickt auf das Bild
- Bild fällt auf
- Die Auswahl kann durch Klicken auf den Bereich außerhalb des ausgewählten Bildes entfernt werden.
- Der Benutzer klickt auf das Drei-Punkte-Symbol
- Ein Kontextmenü wird angezeigt.
- Der Benutzer wählt darin den Link "Datei löschen". Wenn mehrere Bilder ausgewählt wurden, werden alle gelöscht.
- Bild wird gelöscht
Alle Verwendungsszenarien werden auf die gleiche Weise dargestellt, wodurch die Entwicklung ein klares Verständnis dafür erhält, wie die Benutzerinteraktion mit dem Produkt oder den Funktionen aussieht und was hierfür zu tun ist.
Warum funktionale Anforderungen so wichtig sind
Mit diesem Format funktionaler Anforderungen geben Sie dem Entwicklungsteam klare Anweisungen. Darüber hinaus können Sie zeigen, wie die Benutzeroberfläche auf der Clientseite aussieht und wie sie ihre Aufgaben löst. Dieser Ansatz hilft, Ihre Idee zu präsentieren und Missverständnisse im Team zu vermeiden.
In der Regel wirft die Formulierung des Problems für Entwickler viele Fragen auf, deren Antworten von der Komplexität und dem Zeitpunkt der Implementierung abhängen. Um die Details zu klären, müssen sie Zeit für die Kommunikation aufwenden, anstatt direkt zu arbeiten - coole Funktionen zu erstellen und das Produkt zu verbessern. Und selbst im Kommunikationsprozess werden nicht immer alle Feinheiten geklärt, wenn der Task Director nur die auftretenden Fragen beantwortet, der Benutzer aber nicht selbst den Weg geht.
Nehmen Sie unser Galeriebeispiel. Wenn der Produktmanager nur die Aufgabe hätte, eine Galerie zu erstellen, müssten Entwickler in einem Punkt zum Löschen von Dateien Folgendes klarstellen:
- Muss ich die Datei überhaupt löschen?
- Handelt es sich um eine manuelle Löschung oder werden die ältesten Dateien automatisch gelöscht, wenn neue heruntergeladen werden, wenn das Speicherlimit überschritten wird?
- ist das Entfernen aus der Liste der Dateien oder müssen Sie die Datei öffnen
- Wird die Datei dauerhaft gelöscht oder gibt es einen Warenkorb für Dateien, in denen sie einige Zeit gespeichert sind? Wenn Sie einen Warenkorb benötigen, wie viele Dateien werden darin gespeichert?
- Sollte eine Batchdatei gelöscht werden oder kann nur eine gelöscht werden?
- Die Datei wird mit einem separaten Symbol (wie sieht dieses Symbol aus?) oder über einen Menüpunkt (wie heißt sie? Wo befindet sie sich in der Aktionsliste?) gelöscht.
- usw.
Und schließlich ist dies nur einer der Punkte der Aufgabe und so viele Fragen. Und um herauszufinden, erfordert jeder Zeit und Mühe auf beiden Seiten.
Funktionale Anforderungen helfen dem Produktmanager, alle Szenarien der Benutzerinteraktion über Schnittstellen innerhalb der Aufgabe zu durchdenken und klar zu formulieren.
Je genauer die Aufgabe gestellt wird und je mehr Details die Entwickler vor Arbeitsbeginn haben, desto effizienter ist die Arbeit. Für lange und manchmal bedeutungslose Kommunikation wird keine Zeit verschwendet. In diesem Fall profitieren alle Beteiligten: Die Entwickler erhalten ein klares Verständnis dafür, was und wie zu tun ist, und der Aufgabenanbieter erledigt die Arbeit genau in der Form, in der er sie sich vorgestellt hat.
Und wie gehen Sie mit der Formulierung von Aufgaben für Entwickler um?
Produktdirektor Gulfiya Kurmangaleeva