XY-Problem

Das XY-Problem besteht darin, dass man nach der angestrebten Lösung und nicht nach dem eigentlichen Problem fragt. Dies führt zu einer Zeit- und Energieverschwendung, sowohl auf Seiten der Hilfesuchenden als auch auf Seiten derjenigen, die Hilfe anbieten.

Stell dir folgende Situation vor:

  • Nutzer möchte X tun.
  • Nutzer weiß allerdings nicht, wie er X machen soll, glaubt aber, dass er sich zu einer Lösung kommt, wenn er es nur schafft, Y zu machen.
  • Nutzer weiß aller allerdings auch nicht genau wie er Y machen soll.
  • Nutzer bittet andere um Hilfe Y zu lösen.
  • Andere versuchen, dem Nutzer bei Y zu helfen, sind aber verwirrt, weil Y ein seltsames Problem zu sein scheint, das sie lösen wollen.
  • Nach viel Interaktion und verschwendeter Zeit wird schließlich klar, dass der Benutzer eigentlich Hilfe für X benötigt und dass Y keine geeignete Lösung für X war.

Das Problem tritt auf, wenn Menschen sich auf das versteifen, was sie für die Lösung halten, und nicht in der Lage sind, einen Schritt zurückzutreten und das Problem in seiner Gesamtheit zu erklären.

Was kann man dagegen tun?

  1. Erkläre immer das ganze Problem, keine Teilmengen!
  2. Wenn dich jemand um weitere Informationen bittet, gib bitte Einzelheiten an!
  3. Wenn es andere Lösungen gibt, die du bereits ausgeschlossen hast, teile den anderen mit, warum du diese ausgeschlossen hast. So erhalten andere mehr Informationen über deine Anforderungen.

Beispiel

Paul will eigentlich nicht die letzten 3 Buchstaben eines Dateinamens, er will die Dateierweiterung. Warum also nach den letzten 3 Buchstaben fragen?

<Paul> Wie kann ich die letzten drei Buchstaben eines Dateinamens ausgeben?

<Hans> Wenn sie in einer Variablen stehen: echo ${foo: -3}
<Hans> Warum 3 Zeichen? Was willst du WIRKLICH?
<Hans> Möchtest du die Dateierweiterungen ausgeben?

<Paul> Ja.

<Hans> Es gibt keine Garantie dafür, dass jeder Dateiname eine dreibuchstabige Erweiterung hat. Einfach die letzten drei Buchstaben auszugeben ist fahrlässig.
<Hans> So geht's: echo ${foo##*.}