精确提问的艺术

老实讲,我已经不记得我多少次说过“你什么意思”这句话了。

很多人的提问几乎没有任何信息含量。

想要在*nix世界里提问,首先你可能已经学习过了《提问的艺术》,如果你还没学习过,那请先去学习一次。这篇文章哪都有,而且有中文版。于是本文的牢骚纯粹作为那篇文章的补充。

前提:不要做白痴!

至少如果你的问题如果包含一条出错信息,那么你应该先去搜索。如果你使用Google的话,应该至少学会引号的使用,这样能使你搜索的结果是包含整句话,而不是零散的几个词。其次,搜索要去掉所有只能在你机器上重现的内容,例如路径,进程号。

另外要善用Google的按时间搜索功能,如果你发现五年前有人遇到类似的问题,那么那个问题很可能不是你的问题。要找最近出现的内容。

1、不是害羞的时候!

如果你知道什么,不要有意把你知道的内容隐瞒起来。

2、你都干了些什么?!

精确不代表冗余的内容,在了解你的问题的基础上,你要列出相关的内容。以下是一些经验之谈。一个关键的方法就是找你做了什么。例如你安装了什么软件包,修改了什么配置。

在自己知识范围内确定可能的问题。

如果输出提示和什么文件相关,可以通过包管理器去查询那个文件所属的包。

在少数情况下,问题是可能绕一个曲线才会触发的(例如我有幸曾经发现过一次glibc的bug……触发曲线是 KDE->Qt->Strigi->glibc,但这种情况少之又少。),找到你知道的直接相关的问题。

找到前后的差异是很重要的。而且也是最容易的。包管理器都会提供你安装的log记录,如果你不记得了,包管理器的log也会帮你记得。

3、举一反三!

如果你的问题和许多环境有关,那么最好确定下你的问题是否与某个环境有关。比如我经常被问到的输入法问题,如果不能启用输入法,那么究竟是哪个程序不能启用?那么有哪个程序又能启用?这些也都是重要的信息。

再比如显卡驱动,你当然可能只有一台电脑,那么开源闭源驱动至少可以换着试试看。究竟是驱动的问题还是程序的问题这是一条重要的分水岭。

4、寻找同行者!

Linux的环境是非常复杂的,而且在这个环境下,很多人对于自己环境没有问题出于一种幸灾乐祸的态度(你懂的),比如说,你在Fedora的论坛上说你的Ubuntu出问题了,很大可能会收到的回答就是,来投奔Fedora吧!事实上也不能太怪别的论坛的人,他们可能压根不知道在你那边发生了什么。

所以先问和你有相同环境的人,也是很重要的一点,比较你们二人的环境配置也是有助于找到你的问题。

其实除了第一条之外,后三条和核心思想只有一句话,那就是比较。不要指望其他人一口气指出你的问题,你和他的距离已经超过世界上最遥远的距离了。

This entry was posted in Linux and tagged . Bookmark the permalink.

6 Responses to 精确提问的艺术

  1. alpha080 says:
    Firefox 9.0.1 GNU/Linux

    irc#ubuntu-cn 里面经常有人提出不知所云的问题,你又是在哪儿被打击了?
    个人看法是会 google 的人才值得回答,会 google 到《提问的艺术》,至于是不是在 *nix 世界倒是无所谓,反正都生活在 Martix 里面,不是么?

  2. csslayer says:
    Firefox 12.0a2 Windows 7

    @alpha080 一个问题回答太多次之后,我都学乖了直接扔链接了,我有几篇blog就用于扔链接用的……这都算好心了。

  3. vx13 says:
    Firefox 7.0.1 Windows 7

    @csslayer
    我知道很多人会自动无视链接。同样的内容,总是转来转去,不怕信息冗余吗?让百度、 bing 等对冗余信息去除能力不是很强的搜索引擎怎么办?

  4. fbcon says:
    Google Chrome 16.0.912.77 GNU/Linux x64

    Kill the fucking question! Search the fucking Internet! Read the fucking manual! Read the fucking source! Debug the fucking program! Write the fucking patch! Submit the fucking report! Wait for the fucking update!

  5. 右京样一 says:
    Firefox 10.0.1 GNU/Linux

    我表示相当相当的可以理解……

    虽然相似的问题有很多,但很少有问题是绝对相同的。比如如果我搜索到某个类似的问题,解答是
    sudo mount /dev/sdb1 /
    我原封不动敲进去多半是有问题的。但这个问题的回答者可能只是扔出一句命令,并没有进一步解释。于是我必须要知道mount是干嘛的,/dev/sdb1是啥意思,进而要知道mount该怎么用,我所要挂载的分区是哪个。为了知道这些我需要知道如何使用man page或者–help。好不容易都弄明白了,说不定又会遇到权限问题,于是我还要知道如何用visudo把sudo的权限给某个程序……这对于一个新手来说是多么的难以接收啊……

  6. 萌名雪 says:
    Google Chrome 17.0.963.56 GNU/Linux x64

    知其所以然也是很重要的呢
    我帮同学修电脑时,总是会问到个问题:
    1、具体阐述什么症状(别说什么“我电脑打不开了”这么笼统的
    2、症状在什么时候发生
    3、最后一次正常运行时你做了什么
    ……
    现在想想,这不就是让他“艺术地提问”么=。=

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.