The XY Problem
The XY Problem is where a problem-solver gets stuck or so focused on a particular solution, they are unable to backtrack mentally to see potentially superior solutions. This is a common occurrence in the world of software design/development.
However, this psychological phenomenon affects everyone, I.T. or not, novices and experts alike.
It most often occurs when a person tries to solve a problem on their own.
They will:
- pursue a method that seems like a promising approach
- get stuck
- and then ask for help with their chosen method instead of asking for help with the original problem.
In short: it’s asking about the attempted solution rather than the actual problem.
If you believe in Murphy’s Law, the method on which they got stuck will probably be the longest/most complicated route to the answer.
- – User wants to do X.
- – User doesn’t know how to do X, but thinks they can fumble their way to a solution if they can just manage to do Y.
- – Unfortunately, the user doesn’t know how to do Y either.
- – The user asks for help with Y.
- – Others help user with Y, but get confused because Y seems like a strange problem to want to solve.
- – After wasting time, it finally becomes clear that the user wants help with X, and Y was a dead end.
The reason people get their train of thought stuck on one approach is that they’ve forgotten how much they rely on trial and error problem solving shortcuts. What happens then is they’re valuing a potential dead end just as if it were a proven thing.
This can, and most likely will, lead to frustration by people who are trying to help solve the problem. Why? Because by the time the user asks about it, the solution that the user needs help with might not have any obvious connections to the actual problem they are trying to solve.
Let’s illustrate this with some examples.
XY Problem examples from the I.T. world
- Example #1 – since this is an I.T. blog:
-
[client] How can I print the last 3 characters of a filename?
[consultant] If they’re in a variable, use substring to get the last 3 characters:
[consultant]
var result = input.Substring(input.Length - 3);[client] Thank you.
[consultant] Why 3 characters? What do you REALLY want? The file extension?
[client] Yes.
[consultant] There’s no guarantee that every filename will have a three-letter extension. So just grabbing the last three characters won’t work.
[consultant] The easiest way to obtain the file extension is:
[consultant]
string fileName = @"/Users/loz/Desktop/images/cc.pdf";[consultant]
FileInfo fi = new FileInfo(fileName);[consultant]
string extn = fi.Extension; - Example #2
- A developer is working on a web application.
The developer encounters an issue where product images take a long time to load, impacting the user experience.
Instead of clearly stating the problem of slow image loading, they ask the question, “how can I implement image caching?”
Why is it a problem?
While caching might seem like the logical solution, focusing on it without explaining the context can lead to the following issues:
- * Misdiagnosis
- The person providing help may suggest specific caching techniques without understanding the root cause of slow loading. This could be inefficient. For example, if there’s another issue somewhere, like network problems, bad image optimization techniques, or something else
- * Limited solutions
- Exploring possible caching solutions might overlook alternative solutions that could be more effective. Those could include image compression, increasing server resources, or using a Content Delivery Network (CDN).
- * Wasted time
- Both people spend time investigating and discussing caching, which might not be the real solution.
Here’s the better approach… the developer should rephrase their question to focus on the actual problem:
“I’m experiencing slow image loading times, which is is affecting the user experience. Can you suggest ways to improve this?”
Benefits:
- * Clearer communication
- The helper understands the desired outcome (faster image loading) and can suggest various solutions. These could include caching, optimization, increasing server resources, or a CDN, depending on the root cause.
- * Effective solutions
- Exploring a wider range of options increases the chances of finding the most efficient and suitable solution.
- * Saved time
- Focusing on the actual problem avoids unnecessary discussions about potentially irrelevant solutions.
- Example #1 – a more real world household example:
-
You’re investigating how to compost your household organic waste. When considering how to solve the problem, you might think of several potential solutions:
* compost with a municipal government program
* do backyard composting
* or compost with worms.Let’s say that a municipal program is not available and you decide on backyard composting. You soon end up with rats getting into your compost, and they’re invading your kitchen now too!
So you go onto a Q&A forum and ask, “How do I get rid of the rats in my kitchen?”
Bam! You’ve just fallen into the XY problem! You might get useful answers on how to get rid of rats in your kitchen. Unfortunately no-one will be able to solve your original problem because they’re not addressing the source of the problem. So the rats will keep coming back.
It might be better for you to ask the Q&A forum about how to solve the original issue. Ask, “How should I compost my household waste?” Then you might learn that you shouldn’t compost meat or dairy products in a backyard compost bin because they can attract pests.
- Example #2 – example from Chess (yes, it happens there too!)
- Imagine a chess match where a person wins with a 5-move smothered mate in one game. In the next game, the same player fails to see a faster 3-move mate because they are stuck on the idea of the 5-move mate.
Real world XY Problem examples
In Conclusion
Can you see how, in the above examples, the XY Problem is a mental block which typically leads to enormous amounts of wasted time and energy, both on the part of people asking for help, and on the part of those providing help?
There’s a skillful art in respectfully answering questions, helping with what’s asked, while seeking to understand the real goal. And if you’re asking questions, providing more context may help others provide better answers.
In development, it saves time and effort.
In design, it may be uncovering unmet needs.
In customer support, it leads to happy customers. 🙂
Do you have any thoughts on the “XY Problem” or have any examples you’ve experienced?
