# The XY Problem
Date: 2020-06-21


### The XY Problem

[原文链接 The XY Problem](http://xyproblem.info/)

#### 什么是`XY`问题

`XY`问题是在询问您尝试的解决方案，而不是您的实际问题。 这导致提问者和回答者大量的时间和精力浪费。

- 用户想做X。
    
- 用户不知道如何做X，但认为只要能够做Y，他们就可以找到解决方案。
    
- 用户也不知道该怎么做Y。
    
- 用户请求有关Y的帮助。
    
- 其他人试图用Y帮助用户，但感到困惑，因为Y似乎是一个很想解决的问题。
    
- 经过大量的交互和浪费的时间之后，终于可以清楚地知道用户确实需要X的帮助，而Y甚至不是X的合适解决方案。
    

当人们陷于他们所认为的相关解决方案无法及进行,停下来并完整地解释问题时，就会出现问题。

#### 如何解决

1. 始终包括有关更广泛情况的信息以及任何尝试的解决方案。
    
2. 如果有人要求提供更多信息，请提供详细信息。
    
3. 如果您已经排除了其他解决方案，请分享您排除它们的原因。 这将提供有关您的问题的更多信息。
    

记住，如果您的诊断理论是正确的，您就不会寻求帮助了

#### 例子

##### Example 1

n00b实际上并不需要文件名中的最后3个字符，而是想要文件扩展名，那么为什么要问最后3个字符呢？

```
<n00b>如何回显文件名中的最后三个字符？
<feline>如果它们在变量中：echo $ {foo：-3}
<feline>为什么要输入3个字符？ 你真正想要的是什么？
<feline>您是否需要扩展名？
<n00b>是。
<feline>不能保证每个文件名都具有三个字母的扩展名，
<feline>所以盲目地抓三个字符并不能解决问题。
<feline> echo $ {foo ## *。}
```

##### Example 2

如果Angela刚开始解释说她想防止其他人检测到她的操作系统，那本来可以是简短得多且更有成果的讨论。

```
Angela：'nmap -O -A 127.0.0.1'返回以'OS:'开头的某些行。 怎么改变呢？
Obama：在nmap的源代码中查找，找到如何找到Linux部分，然后重写TCP / IP堆栈以使nmap无法检测到它。
Angela：是的，但是我完全不了解linux系统api。
Obama：好吧，nmap基于TCP / IP堆栈的工作方式，除了重写该堆栈的适当部分外，没有真正的方法。
Angela：我真的需要避免这些信息。 iptables可以完成这项工作吗？
Obama：好吧，不要使用操作系统检测或版本扫描
Angela：我想防止其他人知道我的操作系统类型
```

