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的变种,这是不是一种刻舟求剑的表现?

参考

  • StackOverflow: What is XY Problem?
  • PerlMonks: XY Problem
  • Greg’s Wiki

转载自: 酷 壳 – CoolShell
原作者: 陈皓
原文链接 : X-Y PROBLEM

X-Y PROBLEM相关推荐

  1. iText in Action 2nd5.4节(Adding page events to PdfWriter)读书笔记

    前言 在上一节我们讨论了几种不同页边界的类型后这一节我们继续回到IPdfPageEvent接口中,现在这个接口还剩下以下4个关于文档和页面的方法没有说明: OnOpenDocument----当文档被 ...

  2. ROS-3DSLAM(16):视觉部分visual estimator第九节 factor4

    2021@SDUSC 2021年12月24日星期五--2021年12月27日星期一 一.背景简介: 这一周继续分析factor文件夹. 这一周我分析的代码部分视觉的残差,特征点在相机的投影下产生的残差 ...

  3. vin-slam中调用ceres库内部代码分析与性能优化

    vin-slam中调用ceres库内部代码分析与性能优化 1,vin-slam中后端参数优化调用流程代码 2,ceres内部的求解流程(未完待续) 首先,很抱歉前几次上传的关于一些图像算法代码不全,主 ...

  4. python金融分析试题_python 金融分析学习

    import tushare as ts import pandas as pd import numpy as np import matplotlib.pyplot as plt from sci ...

  5. 基于最低水平面的三维装箱问题的启发式算法

    ⭐️ 前言 小编之前写过一篇博文:求解三维装箱问题的启发式深度优先搜索算法(python),详述了基于空间选择的三维装箱算法.本文考虑了一个事实:在某些情况下,我们在摆放物品时,总是优先选择较低的平面 ...

  6. SDUT OJ 2974

    写在前面: 最近有小学弟问了,刚来的小学弟正在打基础的阶段 于是po出了老同学写的答案^^ 希望小学弟们能在c/c++的世界打出一片天地,算法的大门时刻为你们打开oooooo A Problem De ...

  7. VINS-Mono代码阅读笔记(十):vins_estimator中的非线性优化

    本篇笔记紧接着VINS-Mono代码阅读笔记(九):vins_estimator中的相机-IMU对齐,初始化完成之后就获得了要优化的变量的初始值,后边就是做后端优化处理了.这部分对应论文中第VI部分, ...

  8. 2019暑期组队排位总结

    2019暑期组队排位总结 2019牛客暑期多校(第一场) problem J problem A problem E 2019牛客暑期多校(第二场) problem F problem H 2018 ...

  9. 2017GDCPC题解(未完)

    以下代码均没有经过数据验证,若有不正确的地方,劳烦各位dalao指出 Problem A:Open Box 题目大意: 给一把锁,锁的密码是9394,输入4个字符表示该锁每一位密码现在所在的位置,问最 ...

  10. 读懂VINS-Mono——初始化

    估计器初始化 初始化的原因是单目惯性紧耦合系统是一个非线性程度很高的系统,首先单目是无法获得空间中的绝对尺度,而IMU又必然存在偏置,在后面进行求解的时候还需要用到重力加速度(包括大小和方向),对于速 ...

最新文章

  1. swift 错误集合 ------持续更新中
  2. 国外同行关注啥——digg.com网站Programming分类每周热点[12/17 - 12/23]
  3. 【arduino】继续蜂鸣器音乐播放,arduinoIDE里调用音乐播放库
  4. Lesson 8.1Lesson 8.2 决策树的核心思想与建模流程CART分类树的建模流程与sklearn评估器参数详解
  5. 探索式软件测试—Exploratory Software Testing
  6. Activity详细解释(生命周期、以各种方式启动Activity、状态保存,等完全退出)...
  7. Python--递归
  8. LINUX下统计代码行数
  9. 上传excel腾讯云服务器,使用SpringBoot上传文件到腾讯云
  10. [Tailwind] Control What Variations are Generated for Each Utility Class Module in Tailwind
  11. Openstack的用户登录流程
  12. 卓有成效的程序员读书笔记
  13. java内存模型及GC原理
  14. 鸿蒙系统是华容网格吗,鸿蒙上手机还在迟疑,国内对手却已悄然来到
  15. 阿里云飞天洛神:高性能网络软硬件一体化技术实践 | 凌云时刻
  16. 藏宝阁游戏服务器维护中,梦幻西游藏宝阁异常交易保护 | 手游网游页游攻略大全...
  17. JAVA面试总结(初版)
  18. Mac系统PR2022安装BeatEdit插件遇到各种问题解决
  19. 分布式事务解决方案(一)Seata集成和使用
  20. 用python做一个飞机大战(一)

热门文章

  1. Date - Java处理日期和时间
  2. SpringCloud:Ribbon负载均衡(基本使用、 负载均衡、自定义配置、禁用 Eureka 实现 Ribbon 调用)
  3. 华为手机输入键盘声音_华为手机键盘隐藏7个秘密,你只用来打电话?来一起解锁新玩法...
  4. MAC 压测工具Webbench
  5. C#使用post提交http请求
  6. linux TCP数据包封装在SKB的过程分析
  7. enum to IEnumerableT
  8. {在头值中找到无效的字符。} 发email的时候 遇到这个问题 老师解决
  9. JavaScript消息框应用
  10. window2003 server的一些优化设置_windows 2003