首页 > 杂项资源 > X-Y Problem

X-Y Problem

2013年12月16日 发表评论 阅读评论 38,442 人阅读    

X-Y Problem

对于X-Y Problem的意思如下:

1)有人想解决问题X
2)他觉得Y可能是解决X问题的方法
3)但是他不知道Y应该怎么做
4)于是他去问别人Y应该怎么做?

简而言之,没有去问怎么解决问题X,而是去问解决方案Y应该怎么去实现和操作。于是乎:

1)热心的人们帮助并告诉这个人Y应该怎么搞,但是大家都觉得Y这个方案有点怪异。
2)在经过大量地讨论和浪费了大量的时间后,热心的人终于明白了原始的问题X是怎么一回事。
3)于是大家都发现,Y根本就不是用来解决X的合适的方案。

X-Y Problem最大的严重的问题就是:在一个根本错误的方向上浪费他人大量的时间和精力

示例

举个两个例子:

Q) 我怎么用Shell取得一个字符串的后3位字符?
A1) 如果这个字符的变量是$foo,你可以这样来 echo ${foo:-3}
A2) 为什么你要取后3位?你想干什么?
Q) 其实我就想取文件的扩展名
A1) 我靠,原来你要干这事,那我的方法不对,文件的扩展名并不保证一定有3位啊。
A1) 如果你的文件必然有扩展名的话,你可以这来样来:echo ${foo##*.}

再来一个示例:

Q)问一下大家,我如何得到一个文件的大小
A1)  size = `ls -l $file  | awk ‘{print $5}’`
Q) 哦,要是这个文件名是个目录呢?
A2) 用du吧
A3) 不好意思,你到底是要文件的大小还是目录的大小?你到底要干什么?
Q)  我想把一个目录下的每个文件的每个块(第一个块有512个字节)拿出来做md5,并且计算他们的大小 ……
A1) 哦,你可以使用dd吧。
A2) dd不行吧。
A3) 你用md5来计算这些块的目的是什么?你究竟想干什么啊?
Q) 其实,我想写一个网盘,对于小文件就直接传输了,对于大文件我想分块做增量同步。
A2) 用rsync啊,你妹!

这里有篇文章说明了X-Y Problem的各种案例说明,我从其中摘出三个来让大家看看:

你试图做X,并想到了用Y方案。所以你去问别人Y,但根本不提X。于是,你可以会错过本来可能有更好更适合的方案,除非你告诉大家X是什么。

— from Re: How do I keep the command line from eating the backslashes? by revdiablo

有些人问怎么做Y,但其它他想做的是X。他问怎么做Y是因为他觉得Y是最好搞定X的方法。 于是大家不断地回答“试试这个,试试那个”来帮助他,而他总是在说“这个有问题,那个有问题,因为……”。基本不同的情况,其它的方案可能会更好。

— from Re: Re: Re: Re: regex to validate e-mail addresses and phone numbers by Limbic~Region

X-Y Problem又叫“过早下结论”:提问者其实并不非常清楚想要解决的X问题,他猜测用Y可以搞定,于是他问大家如何实现Y。

— from <Pine.GHP.4.21.0009061210570.8800-100000@hpplus03.cern.ch> by Alan J. Flavell

其实这个问题在我之前的《你会问问题吗》里提到的那篇How To Ask Questions the Smart Way中的提到过,你可以移步去看一下

所以,我们在寻求别人帮助的时候,最好把我们想解决的问题和整个事情的来龙去脉说清楚。

一些变种

我们不要以为X-Y Problem就像上面那样的简单,我们不会出现,其实我们生活的这个世界有有各种X-Y Problem的变种。下面我个人觉得非常像XY Problem的总是:

其一、大多数人有时候,非常容易把手段当目的,他们会用自己所喜欢的技术和方法来反推用户的需求,于是很有可能就会出现X-Y Problem – 也许解决用户需求最适合的技术方案是PC,但是我们要让他们用手机。

其二、产品经理有时候并不清楚他想解决的用户需求是什么,于是他觉得可能开发Y的功能能够满足用户,于是他提出了Y的需求让技术人员去做,但那根本不是解决X问题的最佳方案。

其三、因为公司或部门的一些战略安排,业务部门设计了相关的业务规划,然后这些业务规划更多的是公司想要的Y,而不是解决用户的X问题。

其四、对于个人的职业发展,X是成长为有更强的技能和能力,这个可以拥有比别人更强的竞争力,从而可以有更好的报酬,但确走向了Y:全身心地追逐KPI。

其五、本来我们想达成的X是做出更好和更有价值的产品,但最终走到了Y:通过各种手段提升安装量,点击量,在线量,用户量来衡量。

其六、很多团队Leader都喜欢制造信息不平等,并不告诉团队某个事情的来由,掩盖X,而直接把要做的Y告诉团队,导致团队并不真正地理解,而产生了很多时间和经历的浪费。

所有的这些,在我心中都是X-Y Problem的变种,这是不是一种刻舟求剑的表现?

参考

(全文完)


关注CoolShell微信公众账号可以在手机端搜索文章

(转载本站文章请注明作者和出处 酷 壳 – CoolShell.cn ,请勿用于任何商业用途)

——=== 访问 酷壳404页面 寻找遗失儿童。 ===——


本广告收入已由广告主捐给Wikipedia

好烂啊有点差凑合看看还不错很精彩 (65 人打了分,平均分: 4.86 )
Loading...
  1. 2013年12月19日12:52 | #1

    哇,生活中我最担心的就是,存在问题而不自知。谢谢耗子大叔提醒 ^_^

  2. wangn
    2013年12月19日16:03 | #2

    这个在生活中真是随处可见,需要经常拿这些问题来照照自己,谢谢分享。

  3. hlsing
    2013年12月20日11:20 | #3

    请教别人时要直接问X问题,自己解决的话对不熟悉没见过的问题是X-Y模式,因为这本身就是一个思考,学习的过程。

  4. lugesot
    2013年12月20日12:43 | #4

    从哪转的文章?还是shell的问题?
    Q) 我怎么用Shell取得一个字符串的后3位字符?
    A1) 如果这个字符的变量是$foo,你可以这样来 echo ${foo:-3}
    这个不是取字符串的后三位啊!!!

  5. lugesot
    2013年12月20日12:48 | #5

    看了英文的引用,我想说,这个翻译太马虎了。

    @lugesot

  6. 2013年12月21日08:18 | #6

    如果有人问问题,最好直接问他要解决什么问题,然后再讨论,刚才提出的问题。这样就可以避免陷入不必要的讨论。

  7. 忧郁
    2013年12月23日11:36 | #7

    如果问问题的是个菜鸟,我想你应该问问他为什么要问这个问题。
    如果问问题的是个跟你平级的人,他觉得y是个好的解决方法,就算告诉了你需求x,你也未必找得到比y更好的方法。况且同级之间是有竞争的,他不想让你知道太多。
    如果问问题的人比你高级,他问什么你就说什么吧。

  8. Sherice
    2013年12月23日15:36 | #8

    恩,很常见的“坏习惯”,“屡试不爽”呢……
    不过,如果Y真的是X的解决方法,这也节约了别人帮你的时间吧。关键就看你本人是否把握住了X的实质!

  9. 书痕
    2013年12月25日09:04 | #9

    第六点感觉是很多

  10. smallnic
    2013年12月25日17:22 | #10

    哈哈,想起我去年刚从C++转JAVA的时候,以前不了解JSON,结果遇到调用别人接口返回一个JSON格式的字符串,自己用split搞了几把搞定了(还比较简单,没多少嵌套的)。。跟StackOverFlow里的那个问题是一样的啊。。

    另外其实我想说一点是,XY问题和那边“你会问问题吗?”里的一个场景是冲突的,如果我原封不动地把问题丢给别人请求帮助,别人可能觉得我不主动思考就去找他;但是我思考过后把问题“简化”了去问别人,可能实际上又走了弯路,该怎么做呢?

  11. 2013年12月25日21:27 | #11

    之前没有注意,前些日子看完后,发现常被人问Y,我已经把这网址贴好多人了,“我就不多说什么了,乃看看这个吧”

  12. 2013年12月25日21:29 | #12

    @smallnic
    我认为应该是都说明才是吧。
    1. 现在的需求是这样的: xxxx
    2. 我的想法是这样的 : xxxx
    3. 现在问题是这样的: xxx
    4. 请问?

  13. 2013年12月30日04:35 | #13

    唉,其实达到X的最好办法是培养优秀的工程师,结果所有的开发团队都在追求Y,提出各种开发方法建立process

  14. wxd356
    2013年12月30日14:46 | #14

    正确的做法不是应该说出X,并且说自己进行了Y的尝试遇到了阻碍吗

  15. h
    2014年1月4日14:25 | #15

    总结的很准确,以后直接把X说清楚,然后请别人来解答

  16. harjol
    2014年1月9日14:15 | #16

    第一个例子是说雪姬的故事吧。。。。既视感好强。

  17. 三方
    2014年1月9日15:42 | #17

    我们的导师,也就是老板,就是这样,老是跟我们讲Y,不说X,时间和精力不知浪费了多少

  18. 2014年1月11日11:09 | #18

    还好我还没碰到过,我问我师傅基本都是一句话搞定问题,得到解决方案,立马实现它,我觉得问问题的人应该先想清楚真的按你想的做事OK的,考虑不周的情况下去问确实是浪费时间

  19. ostric
    2014年1月14日19:09 | #19

    同感!

  20. 2014年1月20日23:23 | #20

    很有意思的文章,这种问题碰到过几次,之前也读了那篇文章《提问题的智慧》,的确有时候身边的人问些问题很让你摸头不着脑,最后大家给出了解决方案发现还是没能解决问题,细问之下才知道那根本就不知这么做的。所以问问题之前最好把来龙去脉说清楚。

  21. nadir
    2014年2月1日21:03 | #21

    很不错的思考。所以有人问我很奇怪的问题的时候,我一般问”你为什么问这个问题?“,看看他是不是已经掉到沟里了

  22. final
    2014年2月17日14:14 | #22

    讲的非常不错,受益匪浅。不过如果X是个大问题,决策者应能决策出多个x问题进行求解,如果完整抛出X,则可能资源浪费。

  23. Harzon
    2014年3月13日23:54 | #23

    恩恩,前辈说得真好。想起编程珠玑里面说的,明确了问题这场战役就成功90%了。也想起幸福课中TalBen讲的,错误来源是强调找到正确答案而非正确的问题

  24. 2014年3月20日22:46 | #24

    很深奥的啊

  25. java是有goto的
    2014年4月1日17:22 | #25

    谢谢科普,但,有时X-Y是不得已的办法。如果直接给人说出X,那岂不是剥夺了这个人独立思考的权利?
    我要解决X问题,但是我需要知道Y问题的答案;如果Y问题知道了,我将尝试通过Y来解决X;但如果我知道了Y却没有解决X,那我很有可能再问Z问题;直到把X问题解决。

    我只能说,这种现象是不可避免的!

  26. 2014年10月9日06:31 | #26

    工作上的确碰到了这样的情况。

  27. 感恩
    2015年2月13日09:49 | #27

    请教别人问题是建立在别人的认知水平上,比你段位低的,可以直接问Y,比你段位高的同时询问X和Y。

  28. 2015年6月26日12:11 | #28

    @感恩
    这文章的核心意思就是:因X问Y只是浪费双方时间而已。段位?你似乎沉浸在奇怪的自我世界中。

  29. casablinca
    2015年8月11日17:42 | #29

    不错, 受益匪浅

  30. 奥巴马
    2015年11月27日14:11 | #30

    说到点子上了,但不够。问题的本质呢。

  31. 2016年5月19日01:06 | #31

    问答时出现X-Y问题还有一个常见原因是,要实现的具体业务场景有时涉及了商业机密,这种情况下只能把问题本身转换成另一个等价的问题,所以带来一些看起来非常奇怪的问题。

评论分页
1 2 10804
  1. 2013年12月20日11:01 | #1
  2. 2014年1月27日15:23 | #2
  3. 2014年1月27日21:13 | #3
  4. 2014年3月27日12:08 | #4
  5. 2014年6月18日15:03 | #5
  6. 2014年9月3日09:43 | #6
  7. 2014年9月3日10:14 | #7
  8. 2014年9月4日09:30 | #8
  9. 2014年11月7日11:55 | #9
  10. 2015年3月30日10:35 | #10
  11. 2015年12月13日17:56 | #11
  12. 2016年1月8日19:50 | #12
  13. 2016年3月8日06:05 | #13