Anforderungen erfüllen

In diesem Artikel geht es um die Vereinfachung von Arbeit, Lösungen und Prozessen. Dies ist eins meiner Kern-Themen.
Wie man aufhört, sich auf virtuelle und unrealistische Anforderungen zu fokussieren. Stattdessen werden die realen Kunden-Bedürfnisse, Wünsche und Anforderungen ins Zentrum gestellt.
Ich werde ein Beispiel aus der Software-Entwicklung als Erklärungs-Hilfe wählen. Aber ich verspreche, dass das Thema in jedem Geschäft dasselbe ist.

Virtuelle Anforderungen

Folgende Situation treffe ich immer und immer wieder an:

Ein Software-Entwickler wird ineffizient und schafft es nicht, eine Funktion in der geschätzten Zeit zu implementieren. Aus einer Diskussion, wo das Problem liegt, geht Folgendes hervor:
Das Verhalten einer Applikation ist undefiniert, wenn am letzten Sonntag eine Sonnenfinsternis war und der Benutzer heute auf dem linken Zeh Rüben sähen will.

Der Entwickler zerbricht sich den Kopf über das beste Verhalten dieser „Anforderung“.
Das Problem ist hier nicht die Situation, sondern der Entwickler.

Diese „Anforderung“ ist virtuell und vom Entwickler erfunden. Höchst unwahrscheinlich, dass dieser Fall jemals eintritt. Falls doch, ist die Chance gross, dass der Fall keine Spezial-Behandlung benötigt.

Man stelle sich ein Suchfeld vor. Der Entwickler denkt sich nun, wenn der Benutzer „Mutter“ eingibt, könnte er einerseits das Familienmitglied oder andererseits eine Schraubenmutter meinen.

Ehrlich gesagt ist mir seine Mutter egal. Es ist nur relevant, was er in das Suchfeld eingibt. Möglicherweise werden Schwangerschaft und Metall-Teile gemischt im Suchresultat angezeigt. Dann muss der Benutzer seine Kriterien verfeinern.

Das Beispiel mag vielleicht dumm klingen. Ich gebe zu, dass ich genau dieses Beispiel so noch nicht angetroffen habe. Aber man würde staunen, wenn ich die noch viel dümmeren Fälle erwähnen würde, die ich bereits angetroffen habe.

Anforderungen zu Boden bringen

Wie wird man dieses Denken los? Dieses Verhalten passiert auch mir, wenn ich den Prozess des Kunden nicht zu 100% verstehe. Wann immer ich nur eine einzige Sekunde über ein spezifisches Verhalten nachdenke, stelle ich mir folgende zwei Fragen:

  1. Ist es eine Anforderung / ein Bedürfnis?
  2. Macht es Sinn?

Wenn eine der Fragen mit Nein beantwortet wird, sollte man es nicht umsetzen! Falls es keine Ja/Nein, sondern eine Wie Frage ist, sollte man die einfachste Möglichkeit finden. Mit einfach ist diejenige Lösung gemeint, die am wenigsten Aufwand generiert.

Ich möchte die zwei Fragen noch etwas genauer erläutern:

Mit Anforderung / Bedürfnis meine ich, in irgendeinem Anforderungs-Dokument spezifiziert. Oder, wenn der Kunde es in einer Diskussion zu Beginn des Auftrages erwähnt hat.

Nun könnte man sich fragen, wie man wissen soll, ob der Kunde etwas zum Verkäufer oder Requirements-Engineer gesagt hat. Wenn man es nicht weiss, ist es nicht gewünscht! Das gilt, bis es jemand berichtigen kann.

Erinnern Sie sich ans Zwiebel-Prinzip. Man sollte alles so einfach wie möglich zu lösen versuchen. Es ist besser die Feedback-Frequenz mit dem Kunden zu steigern. So wird man schnell benachrichtigt, wenn der Kunde das Linke-Zeh-Säh-Verhalten vermisst.

Anforderungen verkauft

Was ich mit Macht es Sinn meine, ist nicht, was in einem nicht nachvollziehbaren Entwickler-Verstand Sinn macht (sorry ;-) ). Ich meine, ob es für den Kunden Sinn macht. Wird er diese Situation jemals antreffen? Falls ja, ist das öfter der Fall? Oder ist es zwingend nötig, dafür ein spezielles Verhalten zu implementieren? Falls sich der Kunde nicht von sich aus darauf kommt, ist es eher wahrscheinlich, dass es keinen Sinn macht.

Falls es tatsächlich Sinn macht, aber bisher nicht gewünscht ist, kann man es mit dem Kunden besprechen. Aber Vorsicht: In dem Fall macht man es möglicherweise gratis.

Falls jeder seinen Job richtig gemacht hat, werden normalerweise nicht mitten im Projekt neue Anforderungen auftauchen. Es wird daher eher selten der Fall sein, dass beide Fragen mit Ja beantwortet werden können.
Trifft man diese Situation dennoch an, sollte man versuchen einen höheren Abstraktions-Level zu finden.
Zurück zum Such-Beispiel. Es sollte natürlich nicht ein eigenes Verhalten nur für das Wort Mutter geben. Es gibt auch andere Homonyme, welche gleich behandelt werden sollten. Des Öftern erfordern höhere Abstraktions-Levels weniger Aufwand als die detaillierte Situation selbst.

Und nochmals: Den einfachsten Weg zum Lösen des Problems finden!

Anforderungen und Bezahlung

Das grösste Problem an virtuellen Anforderungen ist, dass sie oft sehr viel Aufwand bedeuten. Dieser wird normalerweise vom Kunden nicht bezahlt.
Mit grosser Wahrscheinlichkeit steigt dadurch auch das Risiko für Fehler. Zudem wird die Applikation weniger benutzer-freundlich, wegen nicht nachvollziehbaren Verhaltens in sehr spezifischen Fällen. Deshalb sollte man diese Verhalten vermeiden, oder, falls das nicht möglich ist, das Problem generischer zu lösen versuchen.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.