iT邦幫忙

13

好文分享 X-Y Problem

個人發覺有一些邦友對"提問",會有一些技巧上的迷失.
這篇陳皓的文章,很傳神的描述.
因為是簡體字的,也許有些邦友看不習慣,以下會貼出轉的.
原文鍊結在此:http://coolshell.cn/articles/10804.html#more-10804
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方案。所以你去問別人Y,但根本不提X。於是,你可以會錯過本來可能有更好更適合的方案,除非你告訴大家X是什么。

有些人問怎么做Y,但其它他想做的是X。他問怎么做Y是因為他覺得Y是最好搞定X的方法。 於是大家不斷地回答“試試這個,試試那個”來幫助他,而他總是在說“這個有問題,那個有問題,因為……”。基本不同的情況,其它的方案可能會更好。

X-Y Problem又叫“過早下結論”:提問者其實并不非常清楚想要解決的X問題,他猜測用Y可以搞定,於是他問大家如何實現Y。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
海綿寶寶
iT邦大神 1 級 ‧ 2014-01-08 11:37:32

本以為是老調重彈
沒想到文章的日期還蠻新的

X-Y Problem 的另一個極端是「雙手一攤」型
就是「我的問題是 X,請問怎麼解決?」

這類問題在 iT 邦幫忙也常看到

如何取得一個比較好的平衡點
發問者和回答者多站在對方的角度想一點
都是可以努力的方向

寫著寫著
結論怎麼有點像八股作文
冷

0
賽門
iT邦超人 1 級 ‧ 2014-01-08 12:30:24

看標題,還以為小雨大在為X、Y "染色體" Problem提出新的看法...毆飛

呵呵,賽大

0
老鷹(eagle)
iT邦高手 1 級 ‧ 2014-01-08 13:12:40

最近在找X網站招募兵到Y空間,這個因該叫做雲端離線下載噴鼻血

魯大 iT邦高手 1 級 ‧ 2014-01-09 08:50:56 檢舉

chingfeng提到:
招募兵

是騎兵還是步兵... 噴鼻血

混搭兵種!噴鼻血

我要留言

立即登入留言