XY问题是啥
- 你想做X这件事
- 但你不知道怎么做X,但是你觉得做Y能够搞定X
- 同样,你也不知道怎么做Y
- 就去想其他人寻求帮助来搞定Y,完全不提X
- 别人费力帮忙地搞定Y,但是觉得Y是一个很奇怪的问题
- 经过讨论,大家才知道你要完成X,而且Y也不是X的合适的解决方法;结果也浪费了大量的时间
本质:在错误的方向上,浪费了大伙儿很多时间,最后,干得越多错得越远。
咋解决
- 无论尝试任何解决方案,都要给出初始问题的大背景
- 向别人寻求帮助时,一定给出大背景,尽量给出细节
例子
- Q) 我怎么用Shell取得一个字符串的后3位字符?
- A1) 如果这个字符的变量是$foo,你可以这样来 echo ${foo:-3}
- A2) 为什么你要取后3位?你想干什么?
- Q) 其实我就想取文件的扩展名
- A1) 我靠,原来你要干这事,那我的方法不对,文件的扩展名并不保证一定有3位啊。
- A1) 如果你的文件必然有扩展名的话,你可以这来样来:echo ${foo##*.}
工作中的启示
- 这是学会提问的一个点,就是提问时一定给出最原始的需求;不要把你认为的手段当成目的;
- 接需求:leader或者产品经理提需求时,往往屏蔽了一些信息。这时候一定多问几个为什么?问问背景,问问真实的用户需求是啥?
- 个人发展,X可能是提升竞争力的技术,但是因为不会或者不好做,我们去做提升KPI的Y。这个需要避免,一个人的成长是应该放眼于整个行业来评估的,而不是仅仅得到一个好的绩效或者一次好的晋升就是成长。
参考
http://xyproblem.info
https://coolshell.cn/articles/10804.html
http://mywiki.wooledge.org/XyProblem