提问的艺术

《编程珠玑》艺术第一章内容讲了一个小故事,虽然故事的主题与提问无关,但是确显而易见的说明了一个事实,大部分人都不会提问。

著名的商业战略家,安德鲁·索贝尔曾经写过一本名为《提问的艺术》一书,我并不认为所有人能够有耐心的读完次数,同时能够做到书中所描写的种种做法。相对而言,我们日常生活工作中的交流绝大部分都是存在偏差的,甚至是无意义的。我想在此讲述,如何让你更加高效的去提问并得到正确而高质量的答案。

尊重他人的时间,也是对自己的一种尊重

如今这个物质横流的社区,绝大多数人会用金钱来衡量一切。对于知识,很多人不以为然。当你在向一个人请教的时候,请注意,没有人有义务帮你解答。对于你的问题,他人的帮助应该得到尊重与感谢,无论答案是否对你有所帮助。

你的问题,不要让他人觉得迷惑甚至低级

很多人喜欢碰到一个问题随口提问,工作中常遇到“XXX如何进行网络操作?”。对于,有耐心的解答者第一步要做的就是搞清楚你的问题,甚至提问者还没有耐心进行讨论。这样,你只会消耗他人的耐心,并且降低你在他人心中的印象分数。

所以,在提问前,请弄清楚你的问题,尽量解释清楚。如果你发现,你的问题连自己都无法解释清楚,恭喜你,你应该还没有搞清楚自己要做什么。你可以借助网络上数以万计的资源去弄明白你想要的东西,之后你的问题可能已经有了你想要的答案。

如何提问才是好的问题?

很多人说,要有价值的问题才是好问题。那么什么才叫有价值?这个定义很模糊,我们来看一下关于工程师提问的具体方式。

  1. 标题一定要清晰。很多人都知道什么叫做keyword,那么标题中应该尽量包含问题的keyword,这样才能帮助他人了解你的问题。许多人喜欢以类似“高手请进”这样的标题来提问。我想说的是,你的问题高手很有可能不屑于回答。

  2. 尽量描述你的工程环境,例如是windows还是Mac OS X?是什么语言,用的何种编码等等,这样才有助于让他人定位。

  3. 详细描述你想要的思路。例如前面所提到的,如果你问如何进行网络操作之类的问题,我很乐意为你提供关于网络的技术书籍,不下20本。让你在3个月之内无法做其他事情。所谓思路,即你想达到的目标,你可以详细描述你想要的最终效果,这样他人会给你提供代码片段。你也可以提出具体的功能需求,这样他人可以为你提供解决方案。

  4. 如果你有思路,请描述清楚。很多时候,问题的答案需要代码辅助,你应该尽量提供你的代码片段。注意,应该是问题相关的代码片段。如果你提供的片段不完整,甚至与问题相差甚远,那么请不要把解决问题的希望寄托于他人。

  5. 避开陈词滥调,请关注问题。正如当前你读到的这篇文章一样,内容都是所有人能想到的,也可以定义为陈词滥调。在问题的过程中,请不要编写更多的“废话”,那样对问题没有任何帮助。

  6. 对于满意的答案,请给予及时的回复,来帮助更多的人。别人在帮助你的时候,你也应该帮助他人。