【转帖】优秀的开发者如何提问(除了最后两条,俺都做到了)
感谢张一雷分享,来自这里:http://www.yeeyan.com/articles/view/haoxiaoru/62868
我经常在stackoverflow.com(一个国外著名的开发者问答站,类似CSDN)上看帖子,见过不少各式各样的求助帖。有些帖子写得好,回复的也切题;有些则不知所云。我觉得,优秀的开发者/程序员必须学会如何“在最短的时间内获得最好的答案”。
首先,请允许我这样说。作为一个开发人员,遇到问题却不愿意提问是不对的。要求自己“不怕羞辱、勇敢提问”真的很重要!在stackoverflow, experts-exchange(类似我们的CSDN,Donews,51CTO)以及其他技术型社区看过无数帖子后,我总结出几个写求助帖提问交流的技巧。
问题描述要细致。
有些人提问过于简洁了。只有一句类似“我写的这个计算器怎么不能运行呢?”的话。没有写自己的思考,没有代码片段,或其他相关细节。要知道,细节才是解决问题的关键。当然,也不能过了,整个帖子密密麻麻全是代码,要别人帮你找错误一般是不可能的。一定要清楚地描述自己的问题。给大家举个例子:
愚蠢的问题:我怎样才能让某图形程序的颜色拾取器取得十六进制的RGB值?
明智的问题:我正试图用自己选定数值的颜色替换一幅图片的颜色表,现在唯一知道的方法是编辑每个表槽,但却无法让某图形程序的颜色拾取器取得十六进制的RGB值。
第二种提法是明智的,这样才可能有人回复你“建议采用更合适的工具**完成任务”。
帖子要包含错误信息。
“请求大家帮助”“我的程序不能运行!”……上帝呀,这样的帖子您就别发了,没人会理你的。人们需要准确地知道它是怎么不能运行,你知道自己是怎么弄的,应该怎么样,可是别人只是路过,并不知道怎么回事儿。
简要列出你的开发环境。
环境变量是常常被忽视的要素。花几秒钟列出一些像使用的软件版本号、开发平台等相关细节。
写出你的猜测!
提问的时候讲述你自己对这个问题的看法是很有用的。有时,你所处的环境在别人眼里是不可思议的,人们根本不知道你要干什么。帖子里包括你的思维过程简介可以让大家找准你的失误,并解释原因。
要有示例。
也许根本不需要例子,但有时这是准确地描述你的问题/情况的唯一方法。先写出出错的代码片断,然后描述你的问题。如果是网页编程方面的问题,给一个示范网页,让大家查看一下会很有帮助。对于CSS一类的问题,只有这样才能清楚明白的表达。
学会描述一个问题,不仅能很快找到答案,还能知道以后如何研究类似的问题。
有些问题只要你把关键字输入Google搜索框,然后点击“手气不错”就能找到答案。贴出你的为难题之前要先自我探索和研究一下。自己亲手找到答案,可以学到更多东西。就算你没有找到最终的解决方案,但是在探索的过程中,你已经学到了很多很多。
不要被别人的回复激怒!
大多数时候,大家在自己的业余时间(或工作间歇)给你回复。如果您发了帖子,有人回复“你有没有好好检查一下自己的代码呀?”你可能会倾向于回应,“我当然检查过了,要不然我会发帖提问嘛,你以为我傻呀?”也许我的描述有点儿过分,但信不信由你,更糟的情况也有的是。遇到这样的回复你要礼貌,除非他恶意攻击你。
提问时要记住这几点。谦逊些,谁都有过提问的时候,没有啥都知道的大牛!如果有,这头大牛一定是发了不少成功的求助帖!
[解决办法]
谆谆教导
[解决办法]
1、提问之前:
“先搜索” ——先搜索自己所希望了解的主题。只要不是冷、孤问题,一般都是有答案的。
查询精华区——精华区集中了许多经典的解答和好帖(文章),这对一个并没有提问目标者来说,是相当有利用价值的,而且极容易得到额外收获。
“释义”:
你提出问题时,首先要说明在此之前你干了些什么?这将有助于树立你的形象:你不是一个妄图不劳而获的乞讨者,不愿浪费别人的时间;能说明你从这些操作中学到了什么,就更好了。如果提问者能从答案中学到东西,我们更乐于回答他的问题。
“周全的思考”:
准备好你的问题,草率的发问只能得到草率的回答,或者根本得不到任何答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。
“小心别问错了问题”:
如果你的问题基于错误的假设,通常收到的也将是毫无意义的字面解释,心里想着“蠢问题...”,希望着你会从问题的回答(而非你想得到的答案)中汲取教训。
“决不要自以为够资格得到答案”:
你没这种资格。毕竟你没有为这种服务支付任何报酬。你要自己去“挣”回一个答案:提出一个有内涵的,有趣的,有思维激励作用的问题——一个对社区的经验有潜在贡献的问题,而不仅仅是被动的从他人处索要知识——去挣到这个答案。
另一方面,表明你愿意在找答案的过程中做点什么,是一个非常好的开端。“谁能给点提示?”、“我这个例子里缺了什么?”以及“我应该检查什么地方?”,比“请把确切的过程贴出来”更容易得到答复。因为你显得只要有人指点正确的方向,你就有完成它的能力和决心。
“版主不是万能的”:
版主仅是一个有经验者,但这不表明他(她)有义务回答你的问题。山外青山楼外楼,强中自有强中手。不要试图苛求版主,因为版主有自己工作和任务,版主的主要职责是维护一个版区的正常秩序,帮你是人情,不帮你同样是可以的!
2、怎样提问?
“选择讨论区”:
千万注意小心选择提问的场合。如果象下面描述的那样,你很可能被忽略掉或者被看作失败者:
* 在风马牛不相及的论坛贴出你的问题;
** 在探讨高级技巧的论坛张贴非常初级的问题,反之亦然;
*** 在太多的版块交X张贴;
版主通常将砍掉问错地方的问题,以保护自己的版区不被大量无关帖子淹没。你不会希望自己的帖子被这样砍掉吧?
总的说来,问题发到精心挑选的论坛版区,比发到毫不相干的版块更容易得到有用的答案。这一现象有多种原因,其中之一是相应论坛有更多潜在的问题回答者;另一个原因是对应论坛有更多的听众。解答者更愿意让尽量多的人——而非有限的一两个——从回答中受益。
“用辞贴切,语法正确,拼写无误(减少错别字!)”:
注意推敲你的用辞,特别是主题尽量使用含义丰富,描述准确的标题。但是内容部分不一定要用呆板正式的语言。准确的运用俚语和富有幽默感的语言要远比枯燥、八股文更容易被别人接受。
蠢问题:救命啊!我的论坛不能被访问了!(夫子注:我通常的反应—跳过,顺便在心里骂一句:活该!)
聪明问题:char.asp 改了一个符点—论坛瘫痪,急助!
另外,如果你在回复中提出问题,记得要修改内容标题,表明里面内容有所改动。并记得引用并删减前文的内容,以便给新来的读者留下线索。
“精确描述”:
1) 谨慎明确的描述症状;
2) 提供问题发生的环境(机器配置、操作系统、应用程序以及别的什么);
3) 说明你在出错前是怎样去研究和理解这个问题的;
4) 说明你在提问前采取了什么步骤去解决它;
5) 罗列最近做过什么可能有影响的硬件、软件变更;
6) 如果是程序问题,记得将相关出错信息以及出错上下部分行号贴上。
尽量想象回答者将会怎样反问你,在提问的时候预先给他答案。
“话不在多”:
你需要提供精确有效的信息。这并不是要求你简单地把成吨的出错代码或者数据完全转储摘录到你的提问中。如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。
这样做的好处至少有三点:
第一,表现出你为简化问题付出了努力,这可以使你得到回答的机会增加;
第二,简化问题使你得到有用答案的机会增加;
第三,在提炼你的bug报告的过程中,也许你自己就能找出问题所在或作出更正。
“只说症状,不说猜想”:
告诉别人你认为问题是怎样引起的没什么帮助。(如果你的推断如此有效,还用向别人求助吗?),因此要确信你原原本本告诉了他们问题的症状,不要加进你自己的理解和推论。让别人来诊断。
蠢问题:我修改的xx程序老是出现错误,应该怎样办?
聪明问题:在修改xx程序中,老是出现……错误,相关出错信息如下...
-----------
此处为出错信息
-----------
[解决办法]
顶一个~~
[解决办法]
受用
[解决办法]
珍惜生命,善用谷歌
提问的智慧
[解决办法]
[解决办法]
★论坛首页的提问的智慧
[解决办法]
西西转过来的帖子其实是一个寻找客户支持的正常提问方式
比如我CAD的二次开发出现问题,我在对方网站上提问(付费的那种,不是论坛)的话,就需要提交我的版本号,开发语言,开发环境,问题描述,代码片断,其他辅助文件(数据,或者屏幕截图).一般在72小时之内都能得到有效帮助
我们在论坛提问如果也可以按照这样一个流程,问题会描述的清楚许多。
'----------------------------------------------
我当时也问了好多莫名的问题,总结一下有几个原因
1.我自己也没理解领导要的是什么,所以就按照自己的理解把领导的话发成问题弄上来了
2.我知道领导要的是什么,但是我不是很能把业务转化成技术。转化成技术后也不是能很明确地做出分割,发现遗漏的什么技术点
3.心态很着急,领导很快就要自己就开始抓瞎
总而言之,我无法正确总结出搜索的关键词。在论坛抛出没头脑的问题后,看到别人给我的回复,我可能就开窍了找到搜索关键词了。
即便到现在有的时候我依然无法找到很好的搜索关键字,但是至少不会差太大,搜搜就差不多了
'----------------------------------------
我相信很多人在刚开始的都和我当年差不多。我感谢很多网友在我问那些糊涂问题的时候依然给我指点,我现在也尽量向他们学习,会的就给出一些建议。
当然我也不喜欢直接要代码的,或者说口气强硬不看提示只要代码的