X-Y问题

本文翻译自 http://xyproblem.info/,是一篇关于提问时经常出现的问题的文章,。

X-Y 问题是什么

X-Y 问题是提问时只是问你自己的尝试性的解决方案 (attempted solution) 而不是你的实际问题。这给求助方以及提供帮助的对方带来了巨大的时间及精力浪费。

  • 用户想做 X。
  • 用户不知道怎么做 X,但是自己摸索出 (fumble one’s way) 想法是否他们能做 Y。
  • 用户也不知道怎么做 Y。
  • 用户以 Y 为问题提出帮助请求。
  • 其它人尝试帮助用户解决 Y,但是也疑惑于 Y 看起来是个很奇怪的要解决的问题。
  • 几番浪费时间的互动后,最终确认用户是想问 X 怎么解决,而 Y 甚至不是个合适的方案。

当人们坚信自以为的解决方案而不知道退回上一步清楚解释真实问题时,X-Y 问题就出现了。

怎么办

  1. 提出问题时总是包含更多的信息,提出任何可能的解决方案
  2. 如果某人问更多信息,尽量提供细节。
  3. 如果你已经排除过 (rule out) 其它解决方案,解释为什么你排除了那些方案,这可以提供关于你需求更多的信息。

记住如果你的判断依据 (diagnostic theory) 是对的,你就不会请求帮助了。

示例

例1

n00b 实际不是要文件名的最后 3 个字符,他想要文件扩展名,所以为什么要问最后 3 个字符。

我怎么回显文件名中的最后三个字符。

如果他们在变量中: echo ${foo: -3}

为什么 3 个字符? 你实际想要什么?

你想要扩展名?

是的。

那么请问你想要的!

不是所有文件名都保证有 3 个字符扩展名。

所以盲目的获取 3 个字符不能解决问题。

echo ${foo##*.}

例2

如果 Angela 刚开始解释她想要防止别人检测她的 OS,这可能是更短以及更高效的讨论。

Angela: ‘nmap -O -A 127.0.0.1’ 返回一些 ‘OS:’ 开始的行。怎么修改?
Obama: 检查 nmap 的源码,查找它怎么得出 Linux 部分,然后重写你的 TCP/IP 栈使它不按 nmap 检测的方式来运行。
Angela: Yeah, 但是我根本不懂 Linux 系统 API.
Obama: 好吧,nmap 是以协议栈工作的方式为指纹,除了重写协议栈的相关部分实在没有其它方法。
Angela: 我确实需要避免这些信息。iptables 能胜任吗?
Obama: 好吧,不要用 OS 检测或者版本扫描。
Angela: 我想阻止其它人检测到 OS版本。

其它参考链接

https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem

http://mywiki.wooledge.org/XyProblem

你可能感兴趣的:(翻译)