最近我在解决一些日常维护应用的过程中遇到很多提问的同事,有些许感慨和无奈,我们工作确实有时候很无聊或久而久之麻木了,程序员确实是有些闷的职业于是导致很多人对沟通交流技能退化了,提问的方式和语句让人无力和不想与之交谈。
如:在吗?(要是以前的2G时代我还得花一毛线短信回:在!啥事?)
如:大神,你们这个功能是不是有BUG?(我知道我们系统存在问题的可能性,但是你啥都不告知我们还得不停的望闻问切。)
诸如此类的提问,一般很不想搭理的,我需要不停的问才能了解他的意图和来龙去脉,这花了我很长时间,也行过一会他说:请忽略,是我的VPN没登录。但我们作为基础软件的提供方,我们有时候不得不做一些类似客服的工作,耐心解答用户的问题。为了提高我的工作效率、为了证明我不是客服。我觉得尽我所能让更多人能够提高提问技巧,于是我参考了很多文章和书籍,如**《提问的艺术:如何快速获得答案》**原著Eric Raymond,翻译D.H.Grand,改编Conmajia。它给了我很多提问理论上的帮助,所以我想分享给大家,希望能帮助到想提高这方面的人。其实提高并不难,记住几个要点照着做几次就会形成提问习惯,这个习惯我认为也很好养成。
如何获取帮助
在编程的世界里,当提出一个技术问题时,你能得到怎样的回答?这取决于挖出答案的难度,同样取决于你提问的方法。本指南旨在帮助你提高发问技巧,以获取你最想要的答案。
首先你必须明白,作为程序员我们或许有些自信,偏爱有些难度的问题,或者能激发我们思维的好问题。如若不然,公司招我们来干吗?躺吗?如果你有值得我们反复咀嚼玩味的好问题,我们自会对你感激不尽。好问题是激励,是厚礼,可以提高我们的理解力,而且通常会暴露我们以前从没意识到或者思考过的问题。对程序员而言,“问得好!”是发自内心的大力称赞。
尽管我们有时候蔑视简单问题和不友善的坏名声,有时看起来似乎我们对新手,对知识贫乏者怀有敌意,但其实不是那样的,至少我是很尊重所有人,应该我也是从小白丁成长起来的。
我们不想掩饰对这样一些人的蔑视——他们不愿思考,或者在发问前不去完成他们应该做的事。这种人只会谋杀时间–他们只愿索取,从不付出,无端消耗我们的时间,而我们本可以把时间用在更有趣的问题或者更值得回答的人身上。我们称这样的人为“失败者”(由于历史原因,我们有时把它拼作“lusers”)。
野比注:luser即loser,失败者、屌丝。
我们在很大程度上属于志愿者,从繁忙的生活中抽出时间来解惑答疑,而且时常被提问淹没。所以我们无情的滤掉一些话题,特别是抛弃那些看起来象失败者的家伙,以便更高效的利用时间来回答胜利者的问题。**如果你觉得我们过于傲慢的态度让你不爽,让你委屈,不用问:就是这样的。**我们并没有要求你向我们屈服——事实上,我们中的大多数人最喜欢公平交易不过了,只要你付出小小努力来满足最起码的要求,我们就会欢迎你加入到我们的文化中来。但让我们帮助那些不愿意帮助自己的人是没有意义的。如果你不能接受这种“歧视”,我们建议你花点钱找家商业公司签个技术支持协议得了,别向程序员乞求帮助。如果你决定向我们求助,当然不希望被视为失败者,更不愿成为失败者中的一员。立刻得到有效答案的最好方法, 就是象胜利者那样提问——聪明、自信、有解决问题的思路,只是偶尔在特定的问题上需要获得一点帮助。
如何让别人喜欢回答你的提问
当你提出问题的时候,首先要说明在此之前你做了些什么(准备)。
有这么一个段子:某部门再开例会的时候,下属问他上级他遇到了几个问题,然后向他的上级说出他的问题后上级反而问他:你的答案是什么?下属心里顿时委屈与不解:这不是你作为上级要解决的吗?怎么反而问起我来了,我要是知道我还问你干嘛。事后他的上级跟他这么说的:其实我反问你是希望你也参与想这个问题的解决方案,如果只是我给答案,久了你也不会思考,就想小鸟在窝里叫饿了妈妈、饿了妈妈,等着鸟妈妈抓虫投喂。
我对这个段子有很深的印象,后来我每去向上级汇报或者我有疑问要请教别人的时候我都会事先准备一两个我个人的一些答案或方向,再去汇报或请教,这样别人对你会多看你一眼,对你的提问方式交谈非常高效和有质量。谨记千万别认为你这么思考没用,你可能会认为你的答案可能没作用或认为它是错误的就不去思考。这将有助于树立你的形象:你不是一个妄图不劳而获的乞讨者,不愿浪费别人的时间。如果提问者能从答案中学到东西,我们更乐于回答他的问题。
周全的思考,准备好你的问题,草率的发问只能得到草率的回答,或者根本得不到任何答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。决不要自以为够资格得到答案,你没这种资格。毕竟你没有为这种服务支付任何报酬。你要自己去“挣”回一个答案,靠提出一个有内涵的,有趣的,有思维激励作用的问题–一个对社区的经验有潜在贡献的问题,而不仅仅是被动的从他人处索要知识–去挣到这个答案。
另一方面,表明你愿意在找答案的过程中做点什么,是一个非常好的开端。“谁能给点提示?”、“我这个例子里缺了什么?”以及“我应该检查什么地方?”比“请把确切的过程贴出来”更容易得到答复。因为你显得只要有人指点正确的方向,你就有完成它的能力和决心。
问题解决后,加个简短说明
问题解决后,向所有帮助过你的人发个说明,让他们知道问题是怎样解决的,并再一次向他们表示感谢。
问题得到解决后可能引起别人的广泛关注, 应该在那里贴一个补充说明。补充说明不必很长或是很深入;简单的一句“你好,原来是网线出了问题!谢谢大家**@解答者**”比什么也不说要强。事实上,除非结论真的很有技术含量,否则简短可爱的小结比长篇学术论文更好。说明问题是怎样解决的,但大可不必将解决问题的过程复述一遍。除了表示礼貌和反馈信息以外, 这种补充有助于他人在专门讨论群、论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。最后这种补充有助于所有提供过帮助的人从中得到满足感。
彬彬有礼,多用“请”和“先道个谢了”。让大家都知道你对他们花费时间义务提供帮助心存感激。然而,如果你有很多问题无法解决,礼貌将会增加你得到有用答案的机会。
最后
下面我提供⑥点提问要素,尽量精简易概:
- 谨慎明确的描述症状
- 提供问题发生的环境(机器配置、操作系统、应用程序以及别的什么)
- 说明你在提问前是怎样去研究和理解这个问题的
- 说明你在提问前采取了什么步骤去解决它
- 罗列最近做过什么可能有影响的硬件、软件变更
- 尽量想象一个程序员会怎样反问你,在提问的时候预先给他答案(这点换位思考很重要)
当你认真看完并思考后,如果看完还还认为这是对的,那么请每次提问时按照这几点做下去,你会发现你比没有这里思维的人进步很大。你可以感谢你自己-成长了。