So kam es, dass ich in letzter Zeit viel mit den Produktanforderungen des „internen Kunden“ gearbeitet habe, einschließlich Kollegen aus verschiedenen Abteilungen und technischen Teams (innerhalb des Unternehmens). Und ständig kommen Leute zu mir, damit unser Team bestimmte Funktionen implementiert, etwas wiederholt, hinzufügt, entfernt.
In diesem Artikel möchte ich erklären, wie Sie mit all dem ankommenden Chaos umgehen können.
Der Artikel basiert auf der Arbeitspraxis und soll nicht das gesamte Thema Projektmanagement, Anforderungen, Teams, die Qualität der nachfolgenden Implementierung von Anforderungen durch Entwickler, das Thema der Analyse von Implementierungsergebnissen usw. abdecken.
Aber es deckt nur einen kleinen engen Teil zwischen „Wunschliste“ und „Implementierung“ ab, bei dem es genau um die Anforderungen selbst geht: Willkürliche Wunschliste / Anforderungen / Wünsche / Probleme usw. fliegen in uns hinein, und wir arbeiten mit ihnen und am Ende bekommen wir was geeignet für die Entwicklung.Das eigentliche Problem herausfinden
Wenn jemand ein Problem, eine Nachfrage, eine Idee für eine neue Funktion usw. hat. dann bringt es uns nicht immer dieses fertige, für die umsetzung geeignete. In der Regel ist dieser oder eine Art „Kosmos“ etwas sehr Großes, Knockout, Unrealistisches, das alles komplett wiederholen muss, um ein kleines Problem zu lösen, dessen Relevanz unbekannt ist. Oder nur eine "rohe", unverständliche, unspezifische Anforderung.
Beispielsweise schlägt eine Person vor, eine neue Funktion hinzuzufügen. Und machen Sie es auf diese Weise und bieten Sie eine Art technische Implementierung. In diesem Fall wissen Sie nicht, was angeordnet ist und wie dies implementiert werden kann. Offensichtlich kann man solche Anforderungen nicht einfach nehmen und umsetzen. Wenn sie dies getan hätten, wäre die Welt vor langer Zeit in Chaos und Dunkelheit der Unterwelt gestürzt.
Um das Chaos und die Dunkelheit der Unterwelt ein wenig voranzutreiben, müssen wir verstehen, was hinter diesen Ideen und Vorschlägen steckt. Welches Problem wollte die Person, die zu Ihnen kam, wirklich lösen, welches Problem sollte geschlossen werden?
Dies ist alles andere als immer klar und offensichtlich. Oft muss man durchkommen und oft die gleichen Fragen stellen. Oder andere Fragen. Bis schließlich klar wird, was im Wesentlichen falsch ist, im Wesentlichen des Problems, und wie es im Verständnis einer Person „so“ geben sollte. Und dieses Verständnis unterscheidet sich in der Regel stark von der ursprünglichen Aussage über die Aufgabe / das Problem. Aber ohne es zu erhalten, ist es unmöglich, mit den nächsten Schritten fortzufahren und das Bedürfnis zu befriedigen.
Zu verstehen, was eine Person
wirklich braucht, ist eine ganze Kunst, der ganze Gleichnisse gewidmet sind (zum Beispiel „Vladimir Tarasov - Näher an ein Reh heran“), Bücher (zum Beispiel „Rob Fitzpatrick - Frag deine Mutter“) und praktische Intensitäten (zum Beispiel zur kundenspezifischen Entwicklung).
Altes Fahrrad über den Käufer der Bohrmaschine
Ein Mann kommt in den Laden und kauft dort eine Bohrmaschine. Tatsächlich braucht er keinen Bohrer, sondern ein Loch in der Wand, das er bohren möchte. Deshalb kauft er einen Bohrer.
Das ist aber noch nicht alles. Ein Loch allein wird nicht benötigt. Sie wird benötigt, um ein großes schönes Bild in einen schweren Rahmen zu hängen. Und dieser Held möchte ein Bild aufhängen, um seiner Schwiegermutter zu gefallen, die ihn lange gebeten hatte, ein Bild aufzuhängen, aber er tat dies immer noch nicht.
Es scheint uns, dass wir bereits ein grundlegendes Problem gefunden haben. Aber nein.
Tatsächlich wird es an einem Tag ein Fußballspiel geben, das unser Held wirklich sehen möchte. Und damit die Schwiegermutter keinen Grund hatte, ihn zu stören, ließ er sich das Recht ein, Fußball zu schauen - er tat, was er schon lange gefragt hatte - er hängte ein Bild auf.
Das heißt, er kaufte eine Übung und wollte unbedingt ruhig Fußball schauen.
Hierbei ist zu beachten, dass die Situation
normal ist, wenn jemand seltsame, unverständliche, schief formulierte oder aus Ihrer Sicht falsche Anforderungen hat. Für Menschen im Allgemeinen ist es natürlich, dass sie etwas wollen, aber sie können nicht immer genau und richtig artikulieren, was sie wollen. Menschen sind in der Regel einfach so - das ist natürlich. Das heißt, es geht nicht darum, dass sich jemand irrt, sondern darum, wie Sie mit einer solchen Situation umgehen können.
In diesem Moment unterscheidet sich die Arbeit mit einem internen Kunden nicht wesentlich von der Arbeit mit einem externen Kunden.
Anforderungen für bereits vorhandene Funktionen
Das Spionagefahrrad.
Irgendwie haben sie einen Spion in eine Stadt geschickt, um herauszufinden, wo sich die Patronenfabrik befindet. Sie gaben Informationen, um zu helfen, dass es in der Stadt eine Kirche gibt. Wenn Sie geradeaus und links die Straße entlang gehen, wird es irgendwo in dieser Richtung eine Fabrik geben.
Hier kommt ein Spion in die Stadt. Er trifft die Großmutter und fragt:
- Sag mir, wie komme ich zur Kirche?
- Aber sehen Sie die Patronenfabrik? Von ihm gehen Sie geradeaus und dann nach rechts. Es wird eine Kirche geben.
Der einfachste Fall, wenn sich herausstellt, was eine Person will, haben wir bereits. Vielleicht nicht ganz in der Form, die eine Person erwartet, angenommen und sich vorgestellt hat. Es ist nur so, dass entweder die Person nicht weiß, dass es ist, oder nicht weiß, wie es zu verwenden ist, oder dass sie falsche Informationen darüber hat, wie es funktioniert. Oder Sie müssen nur etwas konfigurieren / aktivieren, um das zu erhalten, was Sie benötigen.
Wenn alles so einfach ist, müssen Sie der Person nur noch Anweisungen geben, wie sie mit den vorhandenen Möglichkeiten das gewünschte Ergebnis erzielen kann.
Fertig.
Doppelte Anforderungen
Es kommt oft vor, dass die Anforderungen ähnlich sind, sie unterscheiden sich nur in den Nuancen der (potenziellen) Einstellung oder in etwa der gleichen Sache, aber in leicht unterschiedlichen Worten. Solche Anforderungen können kombiniert werden, um zu verstehen, wie viel und an welchen Orten Flexibilität benötigt wird (oder in Zukunft benötigt wird) und wo sie nicht benötigt wird. Was sind die Hauptmerkmale? Einmal ein System oder eine Funktionalität zu erstellen, die alle diese Anforderungen gleichzeitig erfüllt. Möglicherweise mit unterschiedlichen Einstellungen oder Variationen, aber es ist nicht erforderlich, dass jeder das gleiche mehrmals separat ausführt.
Ein Beispiel:
Vertreter mehrerer verschiedener Abteilungen kommen zu Ihnen (normalerweise unabhängig voneinander und zu unterschiedlichen Zeiten) und sagen, dass einer Berichte an E-Mails an Kunden aus der Liste senden muss, der andere - Benachrichtigungen an einen bestimmten Adresskreis, die einige technische Systeme nicht haben Arbeit. Der dritte kommt und möchte, entsprechend den Ergebnissen dieser und jener Verarbeitung von Kundendaten, einen Brief mit den Verarbeitungsergebnissen an den Kunden gesendet werden.
Es ist hier offensichtlich, dass in allen Fällen ein System zum Senden von Briefen erforderlich ist und die Aufgaben zum Senden von verschiedenen Orten unter verschiedenen Umständen kommen.
Dementsprechend entsteht ein gewisses einheitliches System zum Versenden von Briefen. In welchen Aufgaben können verschiedene Systeme kommen. Und wenn alle oben genannten Ereignisse (mit denen diejenigen, die uns Briefe schicken möchten) innerhalb desselben Systems stattfanden, dann noch besser: Dies bedeutet, dass das System noch einheitlicher und einfacher gestaltet werden kann.
Wenn wir auf diese Weise nicht mit eingehenden Anforderungen arbeiten und diese sofort in Rohform entwickelt werden, werden wir nach einiger Zeit feststellen, dass unser System mit mehreren verschiedenen Absendern von Briefen, von denen jeder nach seiner eigenen Logik arbeitet, eine eigene spezielle Implementierung hat. Einstellungen, Funktionen. Und um ein kleines Stück Logik in allen drei zu ändern oder eine Funktion von einer anderen zu einem dieser Absender hinzuzufügen, müssen Sie entweder den Code kopieren und einfügen oder einen ziemlich großen Teil neu schreiben und nach Implementierung und Betrieb umgestalten. Obwohl man im Prinzip im Voraus verstehen könnte, dass alles so sein wird.
Widersprüchliche Anforderungen
Es kommt vor, dass sich zwei oder mehr Anforderungen widersprechen. Manchmal "vollständig", was in keiner Weise kombiniert werden kann. Manchmal können jedoch „verschiedene Modi“ ins Auge gefasst werden, in denen jeweils eine Anforderung erfüllt ist, während die andere nicht verfügbar ist. Oder eines der Probleme auf andere Weise lösen - dann verschwindet der Widerspruch.
Um zu einer Lösung zu gelangen, müssen Sie die Kette „Warum / Warum“ abwickeln. Für jede der Anforderungen (wie im ersten Teil des Artikels beschrieben). Das heißt, wir müssen so tief wie möglich verstehen, woraus genau solche Anforderungen entstanden sind und dass Menschen, die mit diesen Anforderungen kamen, „wirklich“ wollen.
Dann haben wir die Möglichkeit, entweder andere Lösungen für diese „echten Probleme“ zu finden oder zu verstehen, wie diese widersprüchlichen Anforderungen kombiniert werden können.
Zum Beispiel, wenn eine Anforderung tatsächlich nur unter bestimmten engen Bedingungen und eine andere unter anderen bestimmten engen Bedingungen benötigt wird. Dann stellt sich heraus, dass sie sich nicht schneiden. Oder die Aufgabe, für die eine solche Anforderung erfunden wurde, kann auf ganz andere Weise gelöst werden, vielleicht sogar einfacher und effektiver. Und dann verschwindet eine der Anforderungen (oder wird zu einer völlig anderen - was nichts mit der zweiten zu tun hat), und die zweite bleibt bestehen. Und es gibt keinen Widerspruch.
Oder verstehen Sie: Diese Anforderungen können in keiner Weise kombiniert werden, und Sie müssen eine auswählen. Glücklicherweise ist dies jedoch immer noch recht selten.
All dies ist möglich, da fast jede Aufgabe auf verschiedene Arten gelöst werden kann. Und wenn wir von einer bestimmten anfänglichen, groben, vielleicht halbtechnischen Formulierung immer höher steigen, um zu verstehen, was die Aufgabe im Prinzip ist, dann gibt es immer mehr Lösungsoptionen. Einschließlich nichttechnischer Lösungen (Einstellungsebene, Prozess, Organisation usw.). Und je größer die Auswahl an Optionen ist, desto einfacher ist es, zwei Optionen zur Lösung von zwei Problemen auszuwählen, die sich nicht gegenseitig stören, und wenn möglich sogar zu helfen.
Kesselanforderungen
Die Idee ist, dass anfangs alle unterschiedlichen Anforderungen aus allen Quellen zu einem einzigen Haufen, zu einem einzigen Kessel verschmelzen sollten. Dann können Sie sie zerlegen, auf die oben genannten Optionen analysieren - "Wiederholen" oder "Widersprüchlich", um bereits vorbereitete: nicht wiederholte und konsistente Anforderungen zu geben, die in der richtigen Reihenfolge "getroffen und ausgeführt" werden können.
Das heißt, die Idee ist, das ganze Bild zu betrachten. Ändern Sie für alles, was jetzt ist und was sie hinzufügen möchten. Und auf der Grundlage dieses ganzen Bildes ist bereits entschieden: Was, wie und wann.
In diesem Zusammenhang sind alle eingehenden Anforderungen Rohstoffe, um sich auf Entwicklungsaufgaben am Ausgang vorzubereiten. Darüber hinaus stimmen die Aufgaben am Ausgang nicht immer eins zu eins mit einem eingehenden Bedarf überein. Eine Aufgabe kann mehrere Anforderungen gleichzeitig erfüllen oder eine ganze Klasse von Anforderungen schließen. Oder sei einfach Teil einer großen Geschichte.
Zusammenfassung
Auf diese Weise wird das eingehende Chaos zu einem schönen, nützlichen und für Entwickler verständlichen Satz von Aufgaben und Funktionen Ihres Systems, der Ihren Kollegen gefällt.