What is the XY Problem?
The XY Problem is where a problem exists (X) and in order to solve it the ‘solution’ of Y is proposed. And then people discuss the best way of doing ‘Y’ without really thinking about whether that is addressing the root problem in the first place.
Lets take a typical UX example. A client comes to you with a request.
“We need a carousel on the homepage showing all the main products we offer”.
It’s a pretty typical question, and I’d wager many agencies have had this very request come in to them.
So you do the diligent thing. You go and meet the client, find out how many products then need displaying in this carousel. You ask them if any products have a greater priority than others. You ask if this has to work differently on a mobile… All the useful questions to get as much information from the client as you can.
You will also look at the site as it currently exists; find out what (if any) CMS is being used. You look at different JQuery implementations, or whether there are any Drupal modules that can serve this purpose.
And you do find a nice little Drupal plugin that’ll do just what they want. Except it’s not really keyboard accessible so you start looking to see if we can update it, get the tab order working properly, ensure each slide can be navigated with the ‘Tab’ key logically…
And then it dawns on you: What exactly is the problem that this carousel idea is actually going to solve?
It’s an obvious question. And you kick yourself for not having thought about it until now. Have you been wasting time and effort trying to sreamline this Drupal carousel when a carousel may not actually be appropriate after all? You go back to the client:
“You’re asking for a carousel. How will you know that what we give you is what you need?”
“Well, if it shows links to our gloves, shoes, scarfs, socks, cloaks, umbrellas, waterproofs, ties, hats, and slippers then that’s good.”
“So why do you need links to all these sections on your homepage?”
“Well, the heads of each of those departments want their products represented on the homepage”.
“You realise that with a carousel the hats and slippers options will be right at the end, so it’d require the user to have clicked the ‘next slide’ option half a dozen times before they see them?”
“Oh yeah, that’s a good point. The stakeholders need their products represented on the homepage so they can monitor the click-through rates from the homepage to the products. If the products are always there in a carousel but never seen then that means the click rate is going to be misleading. Can you suggest anything else?”
“Well, if the requirement is actually about being able to monitor click-through rates from the homepage to the products, then why don’t we just give you a promotional area on the homepage and randomize the item that appears in it? That way you can see that whenever it appears on page load and people click it you’ll have accurate statistics for viewers to clicks?”
“Ah, that’s a great idea! Lets do that instead!”
And bingo. That’s your XY problem. You’ve spend time and effort looking into better ways to do a carousel (aka ‘Y’) when what you really should have been doing is defining what the actual problem was (aka ‘X’) and then solving that.
This is especially an issue in the agency world because you don’t want to be wasting time and effort on work that isn’t really going to be beneficial. The client is going to be unhappy because they’ve paid money for something and their root problem isn’t actually solved. Your agency is unhappy because you’ve wasted time on something unnecessary and you have an unhappy client who may be less willing to pass work your way in future. You’ve got to go back to the drawing board and you’re no further along than you were a few weeks ago so the project slips and you’ve either got to charge the client for the time you’ve spent (which they will not be happy about) or you have to take it on the chin and write off that time spent (not exactly good for an agency’s balance sheet!)
How can this be prevented?
It’s a tricky one. Although this example is a pretty black and white example, these sort of XY problems come up all the time. You have to be able to recognise it when it arrives so you don’t waste time solving the wrong problem. And the best way to do this is with one word:
You need to find out why this request has come in. Any different way you can phrase the question “why” the better. “We can build that for you, no problem. But why do you want it?”
Make sure you understand the problem that is at the root of the request. If you’re confident that you know what the problem is then you’re free to come up with your own Y to solve it.