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

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

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

请访问: 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

相关文章
|
10月前
|
搜索推荐 定位技术
熟练掌握ChatGPT解决复杂问题——学会提问
熟练掌握ChatGPT解决复杂问题——学会提问
198 0
|
2月前
|
设计模式 存储 人工智能
如何利用 ChatGPT 提升编程技能
如何利用 ChatGPT 提升编程技能
|
2月前
|
存储 算法 Python
学习编程是一个逐步积累的过程
【4月更文挑战第30天】学习编程是一个逐步积累的过程
23 2
|
8月前
|
程序员
开发中遇到问题如何更好地提问
开发中遇到问题如何更好地提问
43 0
|
9月前
|
Cloud Native 程序员 Go
从项目中突显技能:在面试中讲述你的编程故事
从项目中突显技能:在面试中讲述你的编程故事
50 0
|
10月前
|
SQL 运维 Java
如何用ChatGPT提高程序员开发效率?
如何用ChatGPT提高程序员开发效率?
426 0
|
网络协议 Java
编程技能强化代码知识点整理
编程技能强化代码知识点整理
142 0
|
机器学习/深度学习 人工智能 Java
我们都在努力做自己,我的编程学习之路分享
我们都在努力做自己,我的编程学习之路分享
180 0
我们都在努力做自己,我的编程学习之路分享
|
消息中间件 设计模式 存储
丁威: 优秀程序员必备技能之如何高效阅读源码(二更)
丁威: 优秀程序员必备技能之如何高效阅读源码(二更)
丁威: 优秀程序员必备技能之如何高效阅读源码(二更)
|
机器学习/深度学习 Python 人工智能
教程 | 一文读懂自学机器学习的误区和陷阱(附学习资料)
本文为你指出一些自学的误区,推荐学习资料,提供客观可行的学习表并给出进阶学习的建议。
4813 0

热门文章

最新文章

  • 1
    流量控制系统,用正则表达式提取汉字
    25
  • 2
    Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
    26
  • 3
    Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
    25
  • 4
    Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
    27
  • 5
    S外部函数可以访问函数内部的变量的闭包-闭包最简单的用不了,闭包是内层函数+外层函数的变量,简称为函数套函数,外部函数可以访问函数内部的变量,存在函数套函数
    23
  • 6
    Redis06-Redis常用的命令,模糊的搜索查询往往会对服务器产生很大的压力,MSET k1 v1 k2 v2 k3 v3 添加,DEL是删除的意思,EXISTS age 可以用来查询是否有存在1
    30
  • 7
    Redis05数据结构介绍,数据结构介绍,官方网站中看到
    21
  • 8
    JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
    19
  • 9
    JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
    19
  • 10
    定义好变量,${age}模版字符串,对象可以放null,检验数据类型console.log(typeof str)
    19