Wat is het XY-probleem?

Wat is het XY-probleem?

Als ik vragen stel, hoe herken ik wanneer ik erin val? Hoe kan ik vermijden?

Terug naar FAQ-index

Reacties

  • Bekijk een PerlMonks post over hetzelfde onderwerp.
  • triest voorbeeld van het XY-probleem: stackoverflow.com/questions/2691018/… disclaimer I ‘ m bevooroordeeld daar, degene die beweert X te spotten in plaats van Y
  • Russische vertaling voor ru.stackoverflow.com
  • Er is ‘ ook Japanse vertaling voor ja.stackoverflow.com
  • Contrasteren met ” frame-uitdagingen “, die nu ontmoedigd of verboden op een aantal SE sites: interpersonal.meta.stackexchange.com/questions/1495/…
  • Relevante sectie in ” Hoe je op een slimme manier vragen kunt stellen “.
  • @ Sridhar-Sarnobat In jouw analogie zou een X → Y-vraag zoiets zijn als ” Hoe kan iemand de groei van celtypen remmen xyz door het tuv eiwitgehalte in de bloedbaan van een patiënt ‘ te verlagen? ” omdat u denkt dat is de enige mogelijke remedie voor kanker.
  • Hmmmm, dus u ‘ zegt dat dat een te specifieke vraag is en ik moet hieraan toevoegen dat de ” real ” doel is kanker te genezen. Zo ja, eerlijk punt. Hoewel eigenlijk het tegenovergestelde probleem is dat vragen worden afgesloten omdat ze te breed van opzet zijn.
  • Kunnen we toegeven dat dit de slechtst mogelijke naam is voor dit probleem? De naam heeft letterlijk niets te maken met wat het beschrijft. Alsof iemand iets zegt als ” zet de wagen voor het paard ” zelfs als ze ‘ heb het nog nooit gehoord, ze hebben in ieder geval een hint dat er iets achteruit is (paarden trekken, niet duwen). Ik heb echter geen ‘ geen goede ideeën voor een alternatieve naam.
  • Soms kan het handig zijn om dingen ook vanuit een bredere context te beschouwen, als je bedenkt of wat ‘ s vorderende / resulterende neigt eigenlijk naar een verstandige oplossing

Antwoord

Wat is het?

Het XY probleem is vragen naar uw poging tot oplossing in plaats van uw werkelijke probleem.

Dat wil zeggen, u probeert probleem X op te lossen, en je denkt dat oplossing Y zou werken, maar in plaats van te vragen naar X wanneer je problemen tegenkomt, vraag je naar Y.

Het probleem

Dit kan tot frustratie leiden bij mensen die u proberen te helpen het probleem op te lossen, want tegen de tijd dat u ernaar vraagt, heeft de oplossing waarvoor u hulp nodig heeft misschien geen duidelijke verbanden op het probleem dat u probeert op te lossen.

Hoe het te vermijden

Om te voorkomen dat je in deze val loopt, moet je altijd informatie over een breder plaatje toevoegen samen met elke poging tot oplossing. Als iemand om meer informatie vraagt, of vooral om een specifiekere vraag, geef dan wel details. Als er andere oplossingen zijn waarvan u denkt dat ze zullen worden voorgesteld en die u al “al hebt uitgesloten, probeer dan niet te voorkomen dat u ze nog een keer herhaalt – geef in plaats daarvan aan waarom u ze hebt uitgesloten, aangezien dit meer informatie geeft over uw vereisten. en helpt anderen om betere antwoorden te geven.

Een voorbeeld

Een recent IRC-gesprek ter illustratie:

Q: Is er een functie om een string tussen twee scheidingstekens te retourneren?

B: Ik begrijp niet wat je bedoelt, maar ik betwijfel of er al een functie is

C: Splitsen en segmenteren

D: Partitie ook

Q: Ik heb partitie geprobeerd
Q: Ik probeerde ingebouwde functies te gebruiken om het nummer te krijgen tussen zoiets als dit in een string ” attribute1: 50.223, attribute2: 442.1 ”

D: Waarom ontleed je niet gewoon de string?

Q: Ik dacht dat er misschien wat ingebouwde parseermateriaal was

D: paren = [x.strip () voor x in s.split (“, “)]; attribs = {k: v voor x in paren voor k, v in [x.split (“: “)]}
D: Er zijn een paar bibliotheken, maar simplistische formaten zijn eenvoudig genoeg – als je niet om fouten geeft afhandeling
D: De bron wijzigen om een bekend formaat te gebruiken, bijv. json of yaml, heeft waar mogelijk de voorkeur

Q: Deze code komt eigenlijk uit HTML
Q: Maar ik weet niet hoe ik Javascript moet parseren met HTMLParser of hoe het ook heet

D: Is het alleen ingesloten in HTML, of een verminkte versie van HTML?

Q: Het is ingesloten in de HTML

D: Als het JavaScript is (en dat wil zeggen, behalve de ontbrekende buitenste accolades), kan JSON het waarschijnlijk parseren

Q: Bedankt

D: Ik heb het niet “expliciet gezegd: JSON parseert alleen datastructuren, geen JS-code

Q: Dat is alles wat ik moet ontleden, is een gegevensstructuur

Het probleem is eigenlijk hoe JavaScript-datastructuren moeten worden geparseerd, niet ” een tekenreeks tussen twee scheidingstekens te vinden “, maar het kost nogal wat tijd en intuïtie om tot het echte probleem te komen.

Dit is gemakkelijker te doen in een volledig interactieve chat (ongeacht in welke modus), maar op een SE-site , waar je een bericht een beetje bijwerkt, het plaatst en dan 5-30 minuten of langer hebt voordat je feedback geeft, helpt het echt om vanaf het begin in de goede richting te gaan.

Opmerkingen

  • IMO XY-problemen zijn soms nuttig omdat de antwoorden de vraagsteller kunnen helpen begrijpen waarom hun oplossing niet ‘ niet zou werken, en het origineel beter begrijpen probleem in het proces.
  • De gemakkelijkste manier om tot het echte probleem te komen, is gewoonlijk vijf keer te vragen waarom.
  • Als je begint met Y in plaats van X, heb je misschien om te vragen waarom 10 keer (of vaker, pas de 5 waarom toe op elk niveau?). 🙂
  • Waarom Y – dat ‘ de vraag is die gesteld moet worden
  • Om eerlijk te zijn, vragen vragenstellers vaak naar X, en het antwoord is ” dat ‘ te veel is, deel het op in een klein voorbeeld ” en zo isoleert de poster hun poging tot oplossing Y en verliest iedereen het oorspronkelijke probleem uit het oog.
  • Soms zit je vast aan Y. Bij mijn eerste klus moest ik een webshop aanpassen. De codebasis was een verrotte mix van html PHP en js. Er waren 2 manieren om problemen op te lossen: Doe het hele ding opnieuw (geweigerd door baas) voeg meer tape toe. DUS hielp me daar niet echt. ” Hoe doe je dat? ” ” Waarom zou je dat doen? ” ” Omdat ik ” ” Wat is J / doe dit niet / waarom gebruik je {antipattern}? ” ” Omdat ik
  • @OliverA. Dan wordt een deel van de vraag een uitleg waarom je Y moet doen. ” Ik moet Y doen omdat legacy / boss / old framework ” dan wordt de vraag gemakkelijker te beantwoorden en waardevoller voor iedereen.
  • @LegoStormtroopr Behalve dat veel mensen dat niet begrijpen ‘. Ze ‘ begrijpen niet dat je soms ‘ niet de luxe hebt om de juiste aanpak te kiezen en hebt om bestaande code te pleiten, en de vraag is gesloten als te smal of zoiets …
  • Ik heb solide pogingen gedaan om al mijn vragen samen te vatten tot een ” Y ” mogelijk. Ik heb er geen belang bij om de hele omvang van mijn probleem te omschrijven (vooral wanneer ik op mijn werk aan closed-source propriëtaire software werk), en ik voel me (exclusief degenen die erop staan de keten te doorkruisen met ” waarom? waarom? waarom? “) Ik kan sneller een antwoord krijgen door mijn vragen buiten alle context in te kapselen.
  • Het hangt ervan af over de algemene kennis van de vraagsteller van ‘ van de probleemruimte.Ik ben het eens met n00n, voor degenen die meer ervaring hebben met de alternatieven, hebben ze misschien al alle mogelijke X ‘ s uitgesloten, en nu is X een constante, en ze willen gewoon oplossen voor Y. Het doet afbreuk aan de vraag om alle mogelijke X ‘ s te moeten doornemen die je ‘ al hebt uitgesloten, en verdiep je in kantoorpolitiek of bestaande systeemarchitectuur. Iemand die minder ervaren is, kan er baat bij hebben als andere ‘ s alternatieve X ‘ s bekijken en suggereren dat ze die voorwaarde heroverwegen.
  • Het tegenvoorbeeld: Me: is er een manier om de huidige directory in Java te wijzigen? Overig: in java hoef je dat niet ‘ te doen. Wat wil je doen? Ik: (zucht) OK, ik heb een uitvoerbare pot voor een programma dat naar een poort luistert en berichten uitwisselt. De jar bevindt zich normaal gesproken in x / bin en de configuratie in x / conf. Het programma leest dus zijn configuratie uit ../conf. Nu wil ik dat binnen een tomcat-server uitvoeren door zelf de hoofdmethode van het programma ‘ s aan te roepen. Maar ik heb geen controle over de server ‘ s homedirectory en ” ../conf” is geen acceptabele plaats.
  • (vervolg) Dus ik vraag me af of er een manier is om de homedirectory voor een thread te wijzigen. Overig: Oh, ik begrijp het. Nou, dat kun je ‘ niet doen in Java. Ik: Waarom kon je me dat niet eerder vertellen? ‘? – In dat geval stelde ik vraag X en kreeg ik antwoord op vraag Y (hoe bestanden te gebruiken in Java).
  • Meestal wil ik niet dat mensen mijn probleem oplossen, beantwoord gewoon mijn vraag. Het kan nogal vervelend zijn als mensen proberen te helpen met het eerste in plaats van het laatste.
  • @NoctisSkytower Maar meestal is elk antwoord contextafhankelijk … V: ” Hoe kan ik X in C doen? ” A: ” Er zijn 20 verschillende manieren, elk met zijn eigen valkuilen en usecases, je kunt ze zelf bestuderen en alle fouten maken die anderen hebben gemaakt, of je kunt ons vertellen welk probleem je hiermee wilt oplossen en wij kunnen je de beste aanpak geven ! ” Q: ” Ik wil niet ‘ een lezing geef me gewoon een antwoord, het kan me ‘ niet schelen! ” – A: ” -.- dag. ”
  • Niet-programmerende SE-sites linken naar dit antwoord om het XY-probleemconcept uit te leggen. Een meer universeel (niet-programmerend) voorbeeld zou zelfs nog nuttiger zijn.

Antwoord

Het XY-probleem, zoals het soms wordt genoemd, is een mentale blokkade die leidt tot enorme hoeveelheden verspilde tijd en energie, zowel bij de hulpvragers als bij de hulpverleners. Het gaat vaak ongeveer als volgt

  • Gebruiker wil X doen.
  • Gebruiker weet niet hoe hij X moet doen, maar denkt dat ze naar een oplossing kunnen zoeken als ze slagen er gewoon in om Y te doen.
  • De gebruiker weet ook niet hoe hij Y moet doen.
  • De gebruiker vraagt om hulp bij Y.
  • Anderen proberen help gebruiker met Y, maar zijn in de war omdat Y een vreemd probleem lijkt om op te willen lossen.
  • Na veel interactie en verspilde tijd wordt het eindelijk duidelijk dat de gebruiker echt hulp wil met X, en dat Y was niet eens een geschikte oplossing voor X.

Het probleem doet zich voor wanneer mensen hun gedachtegang vastlopen op één benadering en niet in staat zijn een stap terug te doen. Openstaan voor een nieuwe kijk naar het grotere plaatje, deze mensen vinden misschien hun weg terug naar X en blijven zoeken naar alternatieve oplossingen.

Zie “ XyProblem ” voor meer informatie.

Opmerkingen

  • Ik denk ook dat dit antwoord nodig is aanvulling op de uitleg. Ik las het bovenstaande, probeerde na te denken over mijn huidige probleem (of het nu een X- of Y-vraag is), en toen ik verder las op deze opmerking, kreeg ik de ” aha ” moment van begrip dat als ik mijn vraag had gepost, ik zou hebben geïnformeerd naar de Y en niet naar de X. De herhaling van mijn situatie zou een mentale blokkade kunnen zijn die zich richt op hoe ik de probleem in plaats van duidelijk te vermelden welk probleem ik wil oplossen, is zeer nuttig.
  • Ik denk dat het de ‘ verantwoordelijkheid van de gebruikers is. Ik ‘ heb het probleem vaak ontmoet, dat ik het probleem X wilde oplossen, en iedereen stelde Y en Z voor. Maar als ik een oplossing voor Y of Z had gewild, is dit wat ik had gevraagd. Ik vind dit een beetje gênant, niet alleen omdat de antwoorden die ik krijg niet ‘ niet bij mijn vraag horen, maar ook omdat ik me onderschat voel.Sindsdien mis ik met opzet alle details die mijn antwoorden op deze slechte manier zouden kunnen misleiden.
  • Dit specifieke antwoord doet me denken aan Maslow ‘ s Hammer
  • Ik ben het niet eens met het antwoord. Als je probleem X hebt en Y als je oplossing noemt en hulp vraagt voor Y, wat je ‘ doet, is je (waarschijnlijk foutieve) begrip van het probleem vaststellen. Als ik iemand wil helpen, wil ik niet alleen hun X-vraag weten, maar ook hoe ze momenteel denken (de Y). Soms is het ‘ belangrijker om te leren hoe te denken dan wat te denken. En het XY-probleem geeft me belangrijke aanwijzingen hoe ik dat moet aanpakken.
  • Eigenlijk is het vermanen van XY-problemen bijzonder onvriendelijk. En (om te kiezen, oh, een): stackoverflow is in dit opzicht de afgelopen jaren afschuwelijk geweest. Ik ‘ m beweerde dat de andere programmeursgerichte SE-sites ‘ niet zo onherstelbaar verknoeien als zij deden.
  • @ tgm1024 Ik ‘ begrijp je opmerkingen niet helemaal; het XY-probleem is niet wanneer een gebruiker zijn denkproces opneemt door zowel X als Y in de vraag op te geven, het is ‘ wanneer de gebruiker niet ‘ t omvat hun denkproces en geeft alleen de Y omdat het vooral in dat geval ‘ moeilijk is om ze te leren denken .
  • @JiK, je identificeert het als een XY-probleem of je doet ‘ t. Als u dat doet, bent u ‘ goed op de hoogte van de X. Als u geen ‘ t, dan ‘ Ik kan beter niet aannemen wat de X is, omdat de gepresenteerde Y misschien wel een geldig opgestelde vraag is .
  • Gebruiker doet niet ‘ weet niet hoe X te doen, maar denkt dat ze hun weg naar een oplossing kunnen vinden als ze er maar net in slagen Y te doen. Klinkt als hoe alle problemen voor mij zijn opgelost: P. Tot het uiterste genomen zou iedereen zijn vraag moeten beginnen met ” Ik wil mijn leven / de wereld op de een of andere manier verbeteren. Ik ben geboren in 19 … ”
  • Soms is dat ‘ vrijwel juist. Vele jaren geleden, nadat mijn Oracle DBA zich tot mij wendde (zijn sysadmin) en vermoeid zei ” Op de een of andere manier is er ergens iets misgegaan ” Ik heb voor mezelf een T-shirt gemaakt met dat erop. Het is in veel opzichten een perfect foutenrapport omdat het geen ‘ aannames maakt die ik vervolgens moet weerleggen: het begint met zijn probleem en laat me door zijn observaties en zijn verwachtingen kijken om te zien waar de mismatch met de realiteit kan zijn.
  • @ tgm1024 It ‘ s over het vermijden van veel tijdverspilling voor zowel de vragensteller als de beantwoorders. Als u zich bewust bent van de voorbehouden van een mogelijk geldige Y, moet u die informatie in uw vraag opnemen. Verder vragen om X wordt vermeden. Als je ‘ niet weet dat het vragen om X waarschijnlijk precies is wat je nodig hebt, want een oplossing voor Y zal je niet erg helpen. Het zou niet onvriendelijk zijn om ze niet op de juiste oplossing te wijzen en in plaats daarvan een slechte oplossing achter te laten.
  • @trixn, ik ‘ weet niet zeker waar we het oneens zijn. Echter, — > Als je probleem X hebt en Y als je oplossing noemt en hulp vraagt voor Y, wat je ‘ doen is uw (waarschijnlijk gebrekkige) begrip van het probleem vaststellen. Als ik iemand wil helpen, wil ik niet alleen hun X-vraag weten, maar ook hoe ze momenteel denken (de Y). Soms is het ‘ belangrijker om te leren denken dan te leren wat te denken. En hun passende en waardevolle XY-probleem geeft me belangrijke aanwijzingen over hoe ik precies dat moet aanpakken.
  • @ tgm1024 Dat is letterlijk wat je al zei voordat. Mijn punt ging over uw bewering dat het vermanen van XY-problemen bijzonder onvriendelijk is. Het ‘ is natuurlijk ook een kwestie van hoe u uw vermoeden uitdrukt dat een vraag een XY-probleem zou kunnen zijn. Maar over het algemeen ben ik het er niet ‘ mee eens dat het wijzen van een vragensteller hierop niet-onvriendelijk is, aangezien het in feite zou kunnen zijn wat hij / zij eigenlijk nodig heeft. Daarom ‘ is de reden waarom ik meestal om meer informatie over de use-case vraag. Als Y een gemakkelijk te beantwoorden vraag is, beantwoord ik deze meestal toch met de opmerking dat het misschien toch niet de gewenste oplossing is.
  • @trixn, je kunt natuurlijk iemand in de goede richting wijzen, en natuurlijk je kunt iemand begeleiden naar een nieuwe manier om ergens naar te kijken.Om echter te beginnen met het idee dat de vraagvorming zelf op de een of andere manier verkeerd is, is dat waar ik ‘ m tegen sta. Kijk bijvoorbeeld eens naar het hyperbolische citaat in het antwoord 71 van Jonathan Benn: ” Specifiek voor Q & A, de verderfelijkheid van een XY-probleem komt voort uit het feit dat het frustrerend is voor alle betrokkenen. ” Dat is gewoon onzin. De XY-vraag is waardevol. Het ‘ is alleen frustrerend voor mensen die willen dat dit zo is.
  • Geweldige uitleg. RE: ” en dat Y niet ‘ zelfs een geschikte oplossing was voor X “, Ik denk dat Y soms een oplossing kan zijn voor X. Maar het is geen natuurlijke of praktische oplossing.
  • Imo dit is degene die bovenaan zou moeten staan. Geen belediging bovenaan antwoord, maar ik eerst las dat en het deed me aan mijn hoofd krabben en toen kwam ik naar beneden om dit te zien en het antwoord werd glashelder voor me.

Antwoord

Een XY-probleem lijkt een subset te zijn van het Einstellung-effect , waarbij een probleemoplosser vastloopt aan een bepaalde oplossing en niet in staat is mentaal achteruit te gaan om potentieel superieure oplossingen te zien. Dit psychologische fenomeen treft iedereen, zowel beginners als experts.

Waarom je eerste idee je blind kan maken voor een beter idee ” legt een voorbeeld uit van schaken waarbij een persoon wint met een gesmoorde mat van 5 zetten in één spel. In de volgende game ziet dezelfde speler geen snellere mat van 3 zetten omdat hij vastzit aan het idee van een mat met 5 zetten.

Specifiek voor Q & A, de perniciteit van een XY-probleem komt voort uit het feit dat het frustrerend is voor alle betrokkenen:

  1. De persoon die de vraag stelt, stelt de verkeerde vraag (die is eerder gerelateerd aan hun poging tot oplossing dan aan het oorspronkelijke probleem), en vindt het dan moeilijk om de vraag te verduidelijken omdat ze vastzitten aan hun eigen oplossing. De voorgestelde antwoorden zijn onbevredigend omdat ze niet aangeven hoe de oplossing van de auteur moet worden geïmplementeerd.
  2. Mensen die de vraag beantwoorden, vinden het frustrerend omdat de voorgestelde oplossing geen zin voor hen heeft, omdat ze de probleem vanuit een nieuwe hoek en worden (vermoedelijk) niet beïnvloed door het Einstellung-effect, en ze vinden het moeilijk om de originele poster te krijgen om hun vraag te verhelderen.

Opmerkingen

  • Interessant hoe de Einstellung effect beschrijving gebaseerd is op een duidelijke fout. Luchin experimenteerde hoe mensen het probleem zouden afleiden uit zijn onvolledige en dubbelzinnige beschrijving (was hij vragen om optimalisatie voor latentie of optimalisatie voor doorvoer?). Hij maakte zichzelf echter misleidend dat hij naar verluidt nog steeds aan het experimenteren was met ” hoe mensen tot oplossingen komen “. Dat is misschien een referentie. Luchin was zo gefocust op zijn interesse, dat hij niet opmerkte toen hij naar een heel ander probleem ging.
  • Mijn bron was Scientific American, als je bezwaar maakt, kun je het met hen bespreken;)
  • Ik denk dat een betere Een voorbeeld van schaken zou zoiets zijn als een speler die gefocust is op het proberen om een gecompliceerde schaakmat te krijgen met onvoldoende materiaal, terwijl hij voorbijgaat aan het feit dat hij een pion heeft die een dame kan zijn.

Antwoord

Het probleem Ontbrekende vierkante puzzel is een goede illustratie. Het illustreert een eenvoudig en universeel probleem / vraag / oplossingsproces, waarbij “enige illusie” complicaties veroorzaakt.

Er is een duidelijk probleem — de 1 × 1 gat daarin ontstaat op de tweede figuur —, maar de oplossing is pas duidelijk nadat we weten (zoals een ei van Columbus) … Alle mensen, experts en niet-experts, ga ermee akkoord dat er een probleem is.

voer hier de beschrijving van de afbeelding in

  • normale gebruiker : denkt dat “er twee equivalente cijfers zijn, de” totale driehoeken “in een perfect 13 × 5 raster .. . “, gevolgd door de vraag:

    • probleem Y : “Waarom heeft de tweede equivalente driehoek een gat erin?” .
  • deskundige gebruiker : denk zoiets als “oeps , ze zijn vergelijkbaar , maar niet “perfect gelijkwaardige” cijfers “, gevolgd door de vraag:

    • probleem X : “Hoe kun je aantonen dat het geen perfecte equivalenten zijn?” .

De slimme geometrie-expert denkt in termen van “vergelijkbare geometrieën die geen” perfecte equivalenten “zijn.

De normale gebruiker denkt , ten onrechte, in termen van exacte congruentie . Het gebruik van verkeerde hypothese , maak slechte Y vragen.


Het” XY-probleem “als een specialisatie van het” verkeerde hypothesegedrag “

Je wilt de echte vraag oplossen – X, en je denkt in termen van een Y -context, en probeer om vraag te gebruiken Y. In plaats van te vragen naar context X, vraag je naar context Y.
(zoals @Gnome hierboven opgemerkt , maar met andere woorden)

Dus, “XY-probleem” is slechts een andere (meer gespecialiseerde) term om te zeggen “Gebruik van verkeerde werkhypothese .

Reacties

  • Bekijk je downvote, ik bewerkt om persoonlijke mening te scheiden van deze meer algemene en misschien interessante vorm om uit te leggen ” wat is “.
  • Ik begrijp uw betekenis uit uw antwoord en u ‘ re degene die de vraag beantwoordt met geanimeerde illustratie. Als mijn reputatie (in deze metagemeenschap) mij toestaat om te stemmen, zal ik hierop stemmen.
  • Dit antwoord illustreert een typische use case , wanneer ” denken-imperatieve programmeur ” een vraag stellen over functionele taal … De voorgestelde oplossing : vraag op het hoogste niveau.
  • sorry, waarom heeft de tweede equivalente driehoek een gat erin?
  • Hallo @KorayTugay, je vraag valt buiten het bereik (het is een klassiek probleem, dus je kunt klassieke uitleg gebruiken, zie mijn Wikipedia-link!). PS: ik zie het gat graag als het verschil , omdat de driehoeken vergelijkbaar zijn en bijna hetzelfde oppervlak hebben, maar niet precies hetzelfde oppervlak, zodat je kunt construeren het gat van de kleine strook van het geometrische verschil.
  • @koraytugay kijk naar het punt waar de rode en blauwe driehoeken elkaar raken wanneer de animatie wordt gereset. het wordt duidelijk dat de blauwe driehoek steiler ” dan de rode, dus wanneer de blauwe driehoek onderaan is, is de hypotenusa ” convex ” en bovenaan is het ” concaaf “. Deze ” buiging ” van de hypotenusa geeft aanleiding tot één vierkant ‘ s verschil in gebied

Answer

Het XY-probleem vermijden

Ik beweer dat je het niet kunt vermijden. Niet zonder simpelweg je programmavereisten naar SO te gooien en hen te vragen je ontwerp voor je te doen ( niet aanbevolen) .

Ik beargumenteer dit omdat het ontwerpproces voor alle software is gebaseerd op een eerste reeks vereisten “A”. Van daaruit zegt u “Ik kan A bereiken als ik B doe en C “. Van daaruit zeg je:” Ik kan B bereiken als ik D en E doe en ik kan C behalen als ik F en G doe “. En dat gaat door tot het punt waarop we zeggen:” Ik kan X bereiken als ik Y doe “. We doen dit meestal zo snel dat we niet eens over het proces nadenken.

Dus het grootste probleem met het XY-probleem is dat Y niet mogelijk is, maar je weet niet hoeveel van je ontwerp om tot rust te komen g et terug naar de X wat mogelijk is. Meestal weet je niet eens dat Y onmogelijk is zonder het echt te vragen. Je weet niet wat je niet weet. Daarom is het onvermijdelijk


Vragen stellen waarbij u het risico loopt in XY te vallen

Het beste wat u kunt doen aan het XY-probleem, is beschermen tegen bij het stellen van vragen. Stel nog steeds dezelfde vraag, maar geef zoveel mogelijk relevante informatie:

  • Geef uw probleem aan
  • Geef aan wat u proberen te bereiken
  • Geef aan hoe het past in uw bredere ontwerp

Dit zal mensen helpen om te identificeren dat het XY is en u veel sneller helpen.


BELANGRIJK: Antwoorden geven op XY-problemen

Naar mijn mening het grootste probleem met XY-vragen zijn de (vaak) nutteloze antwoorden die ze oproepen. We zullen mensen nooit stoppen met het stellen van deze vragen, dus het beste is om te begrijpen hoe we ze snel kunnen beantwoorden en effectief.

Ironisch genoeg worden veel van deze slechte antwoorden en reacties gegeven door diegenen die het meest behulpzaam willen zijn en kunnen ze worden gegeven door enkele van de meest gerenommeerde mensen op het forum / SO.

Ik heb een methode ontdekt om deze vragen te beantwoorden die lijkt te helpen om de psychologie van XY-problemen te omzeilen en de OP van een vraag naar een werkende oplossing te leiden. De methode duurt iets langer om te beantwoorden in de eerste instantie, maar sluit de Q / A-lus veel sneller.

Ik stel voor dat je de vraag in drie delen beantwoordt en ze in de volgende volgorde geeft.

  1. Beantwoord de vraag van het OP . Ook al heeft het OP waarschijnlijk iets anders nodig, vergeet nooit de vraag die ze eigenlijk eerst hebben gesteld te beantwoorden en niet de vraag waarvan u denkt dat ze beantwoord willen worden. In sommige gevallen is dat antwoord “Y is niet mogelijk” . Te vaak zie ik reacties (opmerkingen) met de vraag “waarom heb je dat nodig?” . Dit geeft het OP niets. Als je “zegt, wordt dat heel moeilijk. Leg uit waarom je het nodig hebt, we kunnen je misschien helpen “, dan neemt een OP in veel gevallen gewoon de ” Y is echt moeilijk “ en gaat terug naar de tekentafel. . Dat is prima, want je hebt hun vraag beantwoord en ze kunnen heel goed zelf terugkomen met vraag X.

  2. Bespreek de poging tot oplossing van het OP . Dit stukje is lastig en vergt enige aandacht. Maar ik kan niet genoeg benadrukken hoe belangrijk het is. Als het OP om Y heeft gevraagd en je denkt dat ze X willen, ga dan na het beantwoorden van hun vraag (1) verder met praten over Y (NIET X). Waar moet Y voor worden gebruikt? Hoe is het niet van toepassing op X? Het belangrijkste is om over de vraag te blijven praten, maar van het beantwoorden ervan over te gaan op het verstrekken van nuttige informatie. Want dat is tenslotte wat u denkt dat het OP nodig heeft. Nuttige informatie en niet het antwoord op hun vraag.

  3. Los op X Dit is waar je naar op zoek was om te doen en het is tenslotte het hele punt van je reactie. Je “hebt het OP op hun voorwaarden ontmoet en hun vraag beantwoord. Je hebt hen geholpen de tekortkomingen van hun vraag te begrijpen en waarom het niet de bedoeling is om Y op te lossen … dus nu ben je volkomen gerechtvaardigd om een oplossing uit te leggen naar X.

De meeste mensen zijn hier om te leren, dus delen 1 en 2 van dit antwoord zijn net zo belangrijk als deel 3. Maar al te vaak wordt deel 3 erop gegeven. en het is buitengewoon frustrerend en betuttelend voor het OP om nog maar te zwijgen van het feit dat veel OPs het antwoord niet zullen accepteren.

Door dit antwoord te geven, vermijdt u ook schaamte wanneer u denkt dat het OP een XY-probleem heeft, terwijl ze in feite niet. Het enige wat je hebt gedaan, is wat extra informatie geven. Deel 3 simpelweg risicos geven alsof je de vraag niet hebt gelezen.


Overigens. Lees de vraag opnieuw en lees dit antwoord … let op de drie delen?

Opmerkingen

  • Zoals ” XY Probleem ” is een soort ” Gebruik van verkeerd hypothese ” , moet de Stackoverflow-gemeenschap helpen de juiste hypothese te tonen … Dit is de focus in uw ” Antwoorden geven op XY-problemen “?
  • @PeterKrauss In zekere zin. Dat is meer een aanname (ik ben het ermee eens dat de gemeenschap dat zou moeten doen) . Ik neem aan dat iemand die de vraag beantwoordt, deel 3 wil geven – de juiste hypothese. Het probleem van het XY-probleem ligt in de verspilde tijd. De focus van dit antwoord is dus om te benadrukken dat tijd besteden aan het vooraf geven van delen 1 en 2 geen tijdverspilling is, maar op de lange termijn daadwerkelijk tijd bespaart. Je hebt gelijk dat dit antwoord generaliseerbaar is naar het Gebruik van de verkeerde hypothese .
  • Te vaak neemt het OP het antwoord op Y en wordt uitgevoerd, zonder verder te lezen of te beseffen dat Y de verkeerde oplossing voor X. Daarom ‘ geef ik ze liever geen antwoord dat misbruikt zal worden. Ik ‘ zou eerder het risico lopen hen te beledigen om tot de juiste oplossing te komen dan verder bij te dragen aan zowel slechte code als gebrekkige logica.
  • @Tom That ‘ prima, in die gevallen vraagt de ” je om iets dat heel moeilijk is ” of ” je moet dit niet ‘ doen, het ‘ is een heel slecht idee ” type part (1) zijn volkomen toepasselijk.
  • Ik lachte hardop nadat ik dit had gelezen en opnieuw had gecontroleerd. Uitstekend antwoord, uitstekende observaties, uitstekend leiderschap door voorbeeld.
  • Ik zou eraan willen toevoegen dat het doel van deze site niet alleen is om de persoon die de vraag oorspronkelijk stelde te helpen, maar ook om een opslagplaats voor iemand anders te creëren wie vindt de vraag later. Zelfs als Y niet de juiste manier is om X te doen, kan het op zichzelf nog steeds nuttig zijn in andere contexten, dus het beantwoorden van Y kan ook waardevol zijn.
  • Hiermee wordt de feitelijke vraag eigenlijk goed beantwoord, terwijl anderen gewoon de feiten verklaarden.

Antwoord

(gescheiden van mijn andere antwoord omdat deze meer mening dan uitleg heeft)

Als u het ermee eens bent dat het “XY-probleem” slechts een andere (meer gespecialiseerde) term is voor “Gebruik van een verkeerde werkhypothese”, zoals hier geïllustreerd en uitgelegd , en vergelijkbaar met het “Einstellung-effect” hier uitgelegd door @Jonathan Benn

We kunnen denken in termen van enkele hoofdsituaties:

  • Rush situatie: de verkeerde hypothese is slechts een taal- of overdreven vereenvoudigingseffect, dat door de gebruiker kan worden gecorrigeerd met een beetje meer aandacht en door te investeren meer tijd om de vraag te bewerken.

  • Normaal situatie: zoals in de geïllustreerd Missi ng Vierkante puzzel, je weet niet dat je hypothese niet klopt. Dit is de belangrijkste situatie om hier te bespreken (!).

Laten we ons dus concentreren op de normale situatie.


SOLUTIONS / ATTENUATORS

Het “XY-probleem” is een geldig probleem!

De Stack Exchange-vraag is om een probleem te laten zien. Als mijn vraag helpt om aan te tonen dat de het echte probleem is mijn verkeerde hypothese , het is oké! Het is een eerste stap , en misschien heb ik geen andere vragen nodig na het verkrijgen van de juiste hypothese (en probeer het zelf op te lossen).

Voorbeeld. Zie “ XPath voor xml: lang? Het testen van de eigen-as van het attribuut is mislukt “; het echte probleem is dat @attribute::self niet bestaat, dus het was een verkeerde hypothese over de titel van de vraag.

De help/mcve oplossing heeft beperkingen

Stack Overflow “s help/mcve rationale : “Hoe maak je een M inimal, C omplete en V erifieerbare E xample “, kan worden gebruikt om het XY-probleem te vermijden.

Maar de bewerkingskosten (tijd en aandacht duur), en de perceptie dat het een soort vervuiling in uw tekst is (een “slechte marketing” voor de vraag), zijn nadelen.

Het is ook correct om het probleem te vereenvoudigen en leg uit met meer focus op het punt.


Beste praktijk

Train gebruikers van Stack Overflow om te controleren of de vereenvoudiging zinvol is. Algoritme voor een goede vraag:

  1. Probeer een MCVE te maken.

  2. Als een MCVE geen pr actisch, probeer in ieder geval te vereenvoudigen.

    2.1. Test, controleer op inconsistenties, simuleer de lezer … en bekijk. Levert uw vereenvoudiging iets vreemds op, verandert de context? Controleer om fouten te voorkomen.

  3. Luister naar de opmerkingen over uw vraag , en probeer het te verduidelijken, probeer werk de vraag indien nodig te bewerken: als er mensen reageren, is het een merk op dat u meer tijd kunt investeren in uw vraag.

De verkeerde hypothese is niet vanzelfsprekend, maar als we vereenvoudigen, versterken we de verkeerde effecten, en wordt het duidelijker.


PS: aan de andere kant, als we alle details uitleggen en tonen, alle context, en het echte punt controleren, de montage van het probleem (zoals bij gebruik van mcve), de inconsistenties laten ook zien met meer bewijs.

Opmerkingen

  • Het is ‘ mijn ervaring dat de MCVE creëert niet minder XY-problemen. Het maakt een meer pure abstractie door de context van de oorspronkelijke vraag weg te halen. Dat wil zeggen dat de X zich mogelijk in de context van de oorspronkelijke vraag bevindt, maar de MCVE wordt uitsluitend geconstrueerd om Y uit te drukken.
  • Bedankt @couling (!). Ja, aangezien de methodologie MCVE misschien geen ” best practice ” is, maar een manier is om ” … leg alle details uit en laat ze zien … “. Ons brein werkt beter na dat soort zelfevaluatie … Je kunt de tekst bewerken en corrigeren, het is een Wiki.

Antwoord

Onderhandelen over een vakbondsovereenkomst …

Het XY-probleem is relevant voor het verschil tussen “op rente” gebaseerde onderhandelingen (X) en “positie” gebaseerde onderhandelingen (Y).

X = het totale nettoloon van de werknemer stagneert de afgelopen jaren, terwijl de kosten van levensonderhoud voortdurend stijgen; de werknemer heeft meer nettoloon nodig.

Y = kiezen “u gaat geen parkeergeld verhogen” als een heuvel om op te sterven / de enige “oplossing” voor X die de werknemer bereid is te accepteren.

Streven naar Y (een standpunt innemen) is streven naar een zeer specifieke en beperkte oplossing voor het probleem (X). Het snijdt de werknemer af van het universum van oplossingen voor het probleem (X) door erop te staan dat het slechts op één zeer specifieke en beperkte manier wordt opgelost. Als op die manier (Y) om wat voor reden dan ook bezwaarlijk is voor de werkgever, dan ontstaat er een patstelling – een periode waarin er geen oplossing is voor X, waar een oplossing voor beide partijen acceptabel moet zijn.

Als de werknemer kan mikken op X in plaats van Y, dan blijft het universum van oplossingen open / onbeperkt en kan de werkgever worden gerekruteerd om mogelijke oplossingen voor X te helpen vinden. (Misschien blijkt het in orde te zijn met de werknemer om de parkeertarieven te verhogen, in ruil voor een verhoging van de kosten van levensonderhoud …)

Dit interesse / positie-paradigma lijkt relevant voor het stellen van vragen over SO, wanneer OP om hulp vraagt om hun functie te laten werken. Soms kun je naar X gaan door simpelweg te vragen: “Waarom probeer je dit te doen?”; Maar ik vraag me af of het soms niet zo waardevol is om naar Y te streven. Hoevelen van ons hebben ooit geprobeerd iets te doen, gewoon om te zien of we dat konden? Iedereen die hier zijn eigen DNS-server heeft met een specifiek type software voor datzelfde reden? 🙂 Misschien niet je beste oplossing voor X, maar het is nog steeds interessant …

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *