返回片段
发布于 2024 年 10 月 21 日,星期一
如何提问问题
在前端开发过程中如何有效地提问问题。博客内容可能包括提问前的准备工作,如明确问题的背景、复现步骤和预期结果;提问时的技巧,如使用简洁明了的语言、提供必要的代码片段和错误信息;以及提问后的跟进,如如何处理回复和进一步澄清问题。通过这些内容,博客旨在帮助前端开发者提高问题解决的效率,促进技术社区的交流与合作。
提问的智慧
原文版本历史https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/history.md
目录
- 简介https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E7%AE%80%E4%BB%8B
- 在提问之前https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E5%9C%A8%E6%8F%90%E9%97%AE%E4%B9%8B%E5%89%8D
- 当你提问时https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E5%BD%93%E4%BD%A0%E6%8F%90%E9%97%AE%E6%97%B6
- 慎选提问的论坛https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E6%85%8E%E9%80%89%E6%8F%90%E9%97%AE%E7%9A%84%E8%AE%BA%E5%9D%9B
- Stack Overflowhttps://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#stack-overflow
- 网站和 IRC 论坛https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E7%BD%91%E7%AB%99%E5%92%8C-irc-%E8%AE%BA%E5%9D%9B
- 第二步,使用项目邮件列表https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E7%AC%AC%E4%BA%8C%E6%AD%A5%E4%BD%BF%E7%94%A8%E9%A1%B9%E7%9B%AE%E9%82%AE%E4%BB%B6%E5%88%97%E8%A1%A8
- 使用有意义且描述明确的标题https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E4%BD%BF%E7%94%A8%E6%9C%89%E6%84%8F%E4%B9%89%E4%B8%94%E6%8F%8F%E8%BF%B0%E6%98%8E%E7%A1%AE%E7%9A%84%E6%A0%87%E9%A2%98
- 使问题容易回复https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E4%BD%BF%E9%97%AE%E9%A2%98%E5%AE%B9%E6%98%93%E5%9B%9E%E5%A4%8D
- 使用清晰、正确、精准且合乎语法的语句https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E4%BD%BF%E7%94%A8%E6%B8%85%E6%99%B0%E3%80%81%E6%AD%A3%E7%A1%AE%E3%80%81%E7%B2%BE%E5%87%86%E4%B8%94%E5%90%88%E4%B9%8E%E8%AF%AD%E6%B3%95%E7%9A%84%E8%AF%AD%E5%8F%A5
- 使用易于读取且标准的文件格式发送问题https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E4%BD%BF%E7%94%A8%E6%98%93%E4%BA%8E%E8%AF%BB%E5%8F%96%E4%B8%94%E6%A0%87%E5%87%86%E7%9A%84%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%8F%91%E9%80%81%E9%97%AE%E9%A2%98
- 精确地描述问题并言之有物https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E7%B2%BE%E7%A1%AE%E5%9C%B0%E6%8F%8F%E8%BF%B0%E9%97%AE%E9%A2%98%E5%B9%B6%E8%A8%80%E4%B9%8B%E6%9C%89%E7%89%A9
- 话不在多而在精https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E8%AF%9D%E4%B8%8D%E5%9C%A8%E5%A4%9A%E8%80%8C%E5%9C%A8%E7%B2%BE
- 别动辄声称找到 Bughttps://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E5%88%AB%E5%8A%A8%E8%BE%84%E5%A3%B0%E7%A7%B0%E6%89%BE%E5%88%B0-bug
- 低声下气不能代替你的功课https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E4%BD%8E%E5%A3%B0%E4%B8%8B%E6%B0%94%E4%B8%8D%E8%83%BD%E4%BB%A3%E6%9B%BF%E4%BD%A0%E7%9A%84%E5%8A%9F%E8%AF%BE
- 描述问题症状而非你的猜测https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E6%8F%8F%E8%BF%B0%E9%97%AE%E9%A2%98%E7%97%87%E7%8A%B6%E8%80%8C%E9%9D%9E%E4%BD%A0%E7%9A%84%E7%8C%9C%E6%B5%8B
- 按发生时间先后列出问题症状https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E6%8C%89%E5%8F%91%E7%94%9F%E6%97%B6%E9%97%B4%E5%85%88%E5%90%8E%E5%88%97%E5%87%BA%E9%97%AE%E9%A2%98%E7%97%87%E7%8A%B6
- 描述目标而不是过程https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E6%8F%8F%E8%BF%B0%E7%9B%AE%E6%A0%87%E8%80%8C%E4%B8%8D%E6%98%AF%E8%BF%87%E7%A8%8B
- 别要求使用私人电邮回复https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E5%88%AB%E8%A6%81%E6%B1%82%E4%BD%BF%E7%94%A8%E7%A7%81%E4%BA%BA%E7%94%B5%E9%82%AE%E5%9B%9E%E5%A4%8D
- 清楚明确的表达你的问题以及需求https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E6%B8%85%E6%A5%9A%E6%98%8E%E7%A1%AE%E7%9A%84%E8%A1%A8%E8%BE%BE%E4%BD%A0%E7%9A%84%E9%97%AE%E9%A2%98%E4%BB%A5%E5%8F%8A%E9%9C%80%E6%B1%82
- 询问有关代码的问题时https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E8%AF%A2%E9%97%AE%E6%9C%89%E5%85%B3%E4%BB%A3%E7%A0%81%E7%9A%84%E9%97%AE%E9%A2%98%E6%97%B6
- 别把自己家庭作业的问题贴上来https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E5%88%AB%E6%8A%8A%E8%87%AA%E5%B7%B1%E5%AE%B6%E5%BA%AD%E4%BD%9C%E4%B8%9A%E7%9A%84%E9%97%AE%E9%A2%98%E8%B4%B4%E4%B8%8A%E6%9D%A5
- 去掉无意义的提问句https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E5%8E%BB%E6%8E%89%E6%97%A0%E6%84%8F%E4%B9%89%E7%9A%84%E6%8F%90%E9%97%AE%E5%8F%A5
- 即使你很急也不要在标题写
紧急
https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E5%8D%B3%E4%BD%BF%E4%BD%A0%E5%BE%88%E6%80%A5%E4%B9%9F%E4%B8%8D%E8%A6%81%E5%9C%A8%E6%A0%87%E9%A2%98%E5%86%99%E7%B4%A7%E6%80%A5 - 礼多人不怪,而且有时还很有帮助https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E7%A4%BC%E5%A4%9A%E4%BA%BA%E4%B8%8D%E6%80%AA%E8%80%8C%E4%B8%94%E6%9C%89%E6%97%B6%E8%BF%98%E5%BE%88%E6%9C%89%E5%B8%AE%E5%8A%A9
- 问题解决后,加个简短的补充说明https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E5%90%8E%E5%8A%A0%E4%B8%AA%E7%AE%80%E7%9F%AD%E7%9A%84%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E
- 如何解读答案https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E5%A6%82%E4%BD%95%E8%A7%A3%E8%AF%BB%E7%AD%94%E6%A1%88
- RTFM 和 STFW:如何知道你已完全搞砸了https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#rtfm-%E5%92%8C-stfw%E5%A6%82%E4%BD%95%E7%9F%A5%E9%81%93%E4%BD%A0%E5%B7%B2%E5%AE%8C%E5%85%A8%E6%90%9E%E7%A0%B8%E4%BA%86
- 如果还是搞不懂https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E5%A6%82%E6%9E%9C%E8%BF%98%E6%98%AF%E6%90%9E%E4%B8%8D%E6%87%82
- 处理无礼的回应https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E5%A4%84%E7%90%86%E6%97%A0%E7%A4%BC%E7%9A%84%E5%9B%9E%E5%BA%94
- 如何避免扮演失败者https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D%E6%89%AE%E6%BC%94%E5%A4%B1%E8%B4%A5%E8%80%85
- 不该问的问题https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E4%B8%8D%E8%AF%A5%E9%97%AE%E7%9A%84%E9%97%AE%E9%A2%98
- 好问题与蠢问题https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E5%A5%BD%E9%97%AE%E9%A2%98%E4%B8%8E%E8%A0%A2%E9%97%AE%E9%A2%98
- 如果得不到回答https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E5%A6%82%E6%9E%9C%E5%BE%97%E4%B8%8D%E5%88%B0%E5%9B%9E%E7%AD%94
- 如何更好地回答问题https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E5%A6%82%E4%BD%95%E6%9B%B4%E5%A5%BD%E5%9C%B0%E5%9B%9E%E7%AD%94%E9%97%AE%E9%A2%98
- 相关资源https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md#%E7%9B%B8%E5%85%B3%E8%B5%84%E6%BA%90
在提问之前
- 要通过电子邮件,新闻群组或者聊天室提出技术问题前,做到一下事情:
- 尝试在你准备提问的论坛的旧文章中寻找答案
- 尝试上网搜索找打答案
- 尝试阅读手册找到答案
- 尝试阅读常见问题文件(FAQ)找到答案
- 尝试自己检查或实验找到答案
- 向你身边的强者朋友打听找到答案
- 如果你是程序开发者,尝试阅读源代码找到答案
- 当你提出问题的时候,请先表明你做了上述的努力,这更有助于树立你并不是一个不劳而获的提问者。
- 运用某些策略,可用自己找到的各种信息组合在一起再进行思考,即使没有结果也可以在询问语句中添加,我在尝试解决时
没有找到什么有用的东西。 - 准备好你的问题后,再将问题仔细阅读一遍,不要草率的发问,越是在询问时表达出你为解决问题所付出的努力,就越有
可能得到实质性的帮助。 - 不要问错了问题
- 表明在找答案的过程中做点什么,例如:谁能给点提示?我的这个例子中缺少了什么?我应该检查什么地方?等等
当你提问时
-
搞清楚你的主题
-
使用有意义且描述明确的标题
-
好标题范例:目标 --- 差异
- 目标部分:知道是哪一个或那一组东西有问题
- 差异部分:描述与期望的行为不一致的地方
-
例子:
- 蠢问题:救命啊!我的笔记本电脑不能正常显示了!
- 聪明问题:X.org 6.8.1 的鼠标指针会变形,某牌显卡 MV1005 芯片组。
- 更聪明问题:X.org 6.8.1 的鼠标指针,在某牌显卡 MV1005 芯片组环境下 - 会变形。
-
-
使用清晰,正确,精准且合乎语法的语句
- 正确的拼写,标点符号,大小写很重要
-
使用易读取且标注的文件格式发送问题
-
精准的描述问题
- 描述问题发生的环境
- 在提问前你是怎样去研究和理解这个问题的
- 在提问前为确定问题而采取的诊断步骤
- 描述最近做过什么可能相关的硬件或软件变更
- 尽可能提供一个可以重新这个问题的可控环境的方法
- 注意:尽量去揣测一个回答者会怎样反问你,在提问之前预先将回答者可能提出的问题回答一遍
-
话不在多而在精
-
别动辄声称找到了 Bug
- 如果在使用软件中遇到问题,如果你能提供解决问题的源代码补丁是最好的。
-
别低声下气的询问问题,这样没有什么用处
-
按发生时间先后列出问题症状
- 问题发生前一系列操作,往往是对找出问题最有帮助的线索,因此,在描述中添加你的操作步骤
- 如果你的问题够长,在开头简述问题时,接下来再按时间顺序详述。
-
描述目标而不是过程
- 想要弄清楚某件事(而不是说一个 Bug),在开头时就描述你的目标,然后再陈述重新啊你所卡住的特定步骤
-
清楚明确的表达你的问题以及需求
-
询问有关代码的问题
- 最有效的描述程序问题的方法提供一个最精简的 Bug 展示测试用例。
-
去掉无意义的提问句
-
即使你很急也不要在标题中写紧急
-
礼多人不怪,有时很有帮助
如何解读答案
- 蠢问题案例:
- 我能在哪找到 X 程序或 X 资源?
- 我怎样用 X 做 Y?
- 如何设定我的 shell 提示?
- 我可以用 Bass-o-matic 文件转换工具将 AcmeCorp 文件转换为 TeX 格式吗?
- 我的程序/设定/SQL 语句没有用
- 我的 Windows 电脑有问题,你能帮我吗?
- 我的程序不会动了,我认为系统工具 X 有问题
- 我在安装 Linux(或者 X )时有问题,你能帮我吗?
- 我怎么才能破解 root 帐号/窃取 OP 特权/读别人的邮件呢?
- 如何更好的回答问题?
- 态度和善一点
- 对触犯者私下恢复
- 如果不确定,一定要说出来!
- 如果帮不了忙,也别妨碍他。
- 是泰兴的反问以引出更多的细节
- 如果你决定回答,请给出好的答案
- 正面的回答问题
# 代码质量# 设计模式# 算法# 数据结构# Git