学编程遇到问题,如何更好地提问?

简介: 不要只把你不懂的地方拿出来问而不提及问题的前因后果,否则回答者可能无法明白你的问题。尽量客观描述问题,而不是只说自己的理解和假设。在客观描述的基础上,你可以再加上自己的判断和尝试解决的结果。

入门教程、案例源码、学习资料、读者群

请访问: python666.cn

大家好,欢迎来到 Crossin的编程教室 !

一个编程学习者,尤其是刚入门的初学者,在学习过程中必然会遇到各种问题,于是难免需要向人提问寻求解答。本编程教室开张以来,我也解答了非常多的提问。今天想就“提问”这件事情说说我的一点建议:

1. 提问之前先尝试搜索

你的问题可能是千万人曾经遇到过的小问题,搜索引擎就可以回答你。

2. 尽可能清楚、准确、完整地描述你的问题

不要只把你不懂的地方拿出来问而不提及问题的前因后果,否则回答者可能无法明白你的问题。尽量客观描述问题,而不是只说自己的理解和假设。在客观描述的基础上,你可以再加上自己的判断和尝试解决的结果。

3. 附上必要的信息

如果你的代码出了问题,请提供你的代码、运行结果、报错信息,如果有必要,最好截图(判断是否格式、书写、运行方式上有问题)和代码文本(方便别人复制并运行你的代码)都附上。不要只说“我执行了xxx语句为什么结果不对”,这样别人只能回复你“……”。

4. 最好选择聊天群和论坛提问

这一点是我个人针对本教室的听众的建议。聊天群的好处是,有很多人会看到你的问题,这里面很可能有人解决过类似的问题。即使没有现成的答案,一起讨论也有利于找到解决方案。

论坛的好处是,你的问题会记录下来,可以被更多人看到,它被解答的可能性也就更高。同时,它也会为后来的人提供参考。论坛发帖的不足之处在于可能不会立刻得到解答。

综上所述,我认为一个比较好的提问方式是:在你尝试自己搜索后依然不能解决问题时,在聊天群里或者论坛上描述清楚你的问题,包括你要做什么,遇到了什么状况,你的代码、输出、报错信息,足够信息量的截图和代码片段,你尝试过的方案和结果。这样,会让你的问题更有效地得到解决。

附上一篇文章:《提问的智慧(How To Ask Questions The Smart Way)》,由知名黑客 Eric S. Raymond 所写,并被广泛转载。你很容易在网上搜到它。

这篇文章主要是面向“黑客”所说。对于一般的编程初学者,有些要求可能略苛刻。不过参考阅读,对于你应当会有帮助。毕竟没有人会一直停留在初学者的阶段,好的习惯越早养成越早受益。

在这里,摘录其中的一些条目:

提问前

尝试在你准备提问论坛的历史文档中搜索答案

尝试搜索互联网以找到答案

尝试阅读手册以找到答案

尝试阅读“常见问题文档”(FAQ)以找到答案

尝试自己检查或试验以找到答案

尝试请教懂行的朋友以找到答案

如果你是程序员,尝试阅读源代码以找到答案

提问时

仔细挑选论坛

面向新手的论坛和互联网中继聊天(IRC)通常响应最快

第二步,使用项目的邮件列表

使用有意义且明确的主题

使问题容易回复

用清晰、语法、拼写正确的语句书写

使用易于读取且标准的文件格式发送问题

描述问题应准确且有内容

量不在多,精炼则灵

别急于宣称找到bug

低声下气代替不了做自己的家庭作业

描述问题症状而不是猜测

按时间先后罗列问题症状

描述目标而不是过程

别要求私下回复电邮

提问应明确

关于代码的问题

别张贴家庭作业式问题

删除无意义的要求

不要把问题标记为“紧急”, 即使对你而言的确如此

礼貌总是有益的

问题解决后追加一条简要说明

提问禁忌

我到哪可以找到某程序或 X 资源?

我怎样用 X 做 Y?

如何配置我的 shell 提示?

我可以用 Bass-o-matic 文件转换工具将 AcmeCorp 文档转为 TeX 格式吗?

我的{程序、配置、SQL 语句}不运行了

我的视窗电脑出问题了,你能帮忙吗?

我的程序不运行了,我认为系统工具X有问题

我安装 Linux 或 X 遇到困难,你能帮忙吗?

我如何才能破解超级用户口令/盗取通道操作员的特权/查看某人的电子邮件?

详细内容见此链接(复制到浏览器里打开),文章有些长,不过还是挺有意思的。

http://www.beiww.com/doc/oss/smart-questions.html

相关文章
|
搜索推荐 定位技术
熟练掌握ChatGPT解决复杂问题——学会提问
熟练掌握ChatGPT解决复杂问题——学会提问
253 0
|
1月前
|
数据采集 机器学习/深度学习 人工智能
ChatGPT高效提问—基础知识(AIGC)
ChatGPT高效提问—基础知识(AIGC)
|
6月前
|
设计模式 存储 人工智能
如何利用 ChatGPT 提升编程技能
如何利用 ChatGPT 提升编程技能
|
6月前
|
存储 算法 Python
学习编程是一个逐步积累的过程
【4月更文挑战第30天】学习编程是一个逐步积累的过程
45 2
|
程序员
开发中遇到问题如何更好地提问
开发中遇到问题如何更好地提问
51 0
|
SQL 运维 Java
如何用ChatGPT提高程序员开发效率?
如何用ChatGPT提高程序员开发效率?
539 0
|
敏捷开发 算法 Cloud Native
面试中的代码写作:如何撰写清晰、高效的示例代码
面试中的代码写作:如何撰写清晰、高效的示例代码
100 0
|
敏捷开发 Cloud Native 程序员
程序员面试中的逻辑推理:如何展示清晰的思维
程序员面试中的逻辑推理:如何展示清晰的思维
135 0
|
网络协议 Java
编程技能强化代码知识点整理
编程技能强化代码知识点整理
|
消息中间件 设计模式 存储
丁威: 优秀程序员必备技能之如何高效阅读源码(二更)
丁威: 优秀程序员必备技能之如何高效阅读源码(二更)
丁威: 优秀程序员必备技能之如何高效阅读源码(二更)