X-Y Problem
什么是X-Y problem呢?
-
某人想要解决问题X
-
他认为Y可能是解决X问题的方法
-
但是他不知道Y怎么做
-
于是他去问别人Y应该怎么做
这就产生了一个X-Y problem
也就是说,没有去问怎么解决问题X,而是去问怎么去解决方案Y。
这就会导致以下的后果:
1)热心的人们帮助并告诉这个人Y应该怎么搞,但是大家都觉得Y这个方案有点怪异。
2)在经过大量地讨论和浪费了大量的时间后,热心的人终于明白了原始的问题X是怎么一回事。
3)于是大家都发现,Y根本就不是用来解决X的合适的方案。
示例
在酷壳看到的例子
Q) 我怎么用Shell取得一个字符串的后3位字符?
A1) 如果这个字符的变量是$foo,你可以这样来 echo ${foo:-3}
A2) 为什么你要取后3位?你想干什么?
Q) 其实我就想取文件的扩展名
A1) 我靠,原来你要干这事,那我的方法不对,文件的扩展名并不保证一定有3位啊。
A1) 如果你的文件必然有扩展名的话,你可以这来样来:echo ${foo##*.}
想说的
我在接触这个名词之前,有过这么一段经历(大概含义):
我:请问VC中可以启用o2优化吗?
A:你提出这样的问题,那么我可以猜测你目前对XX方面还没有进行了解,你不应该把精力放在这方面上。
后来我便重构了代码,而不是使用想当然的方式提高代码运行速度,而时至今日我还没有接触到编译有关的内容。在今日接触 X-Y problem 这个名词后,才想到当时我就产生了X-Y problem。
因此我们在解决问题的时候,要避免先入为主的想法,或者是在提出问题时,描述自己解决问题的思路,以免浪费帮助者的时间与精力。
这也就回到了提问的智慧(How To Ask Questions The Smart Way (catb.org))。
参考
More About How to Ask a Good Question (plover.com)