大家好,我是MAI麦造
在职场中,实习生经常会提出问题,有得让人实在是难以回答。
其主要原因还是在提出的问题非常模糊。
本篇文章总结自 《提问的智慧》(How To Ask Questions The Smart Way)
这是开源社区与技术论坛广为流传的一篇指南性的文章,由 Eric S. Raymond 编写。
对于如何描述问题、提出问题、在哪儿提出、非常的有启发。
1. 展示你是‘赢家’(winner),而非‘失败者’(loser)
只有那些积极主动、认真思考、尽自己最大努力去查找和解决问题的人,才会得到高质量的帮助。
你要表现出你“自己已经做了很多功课”,而不是把问题直接扔给别人,让他们帮你全盘解决。
这样才能赢得高手们的尊重和回应。
反之,如果你只是在社区不停地索要答案,不愿意先自己尝试,那你就会被视为“失败者”,很容易被忽视甚至被排斥。
失败者提问:
“我的程序不工作,帮帮我!”(没有说明环境,没有展示自己尝试过什么)
赢家提问:
“我在 Ubuntu 20.04 上使用 Python 3.9 运行下面这段代码时,遇到了这个错误信息。之前我查过官方文档,也在网上搜索过类似的问题,但没找到解决办法。代码和错误日志如下……我试过重装相关库,但问题依旧。不知有没有人遇到过类似情况,能指点一下可能的原因或调试方向?”
2. 提问之前先自己做功课
在你问别人问题前,先在网上搜索、看手册和FAQ、翻阅旧帖,自己尝试解决。
这样你不会浪费别人的时间,也更容易得到答案。
假设你的Linux系统里某个程序报错,你先用Google搜索错误信息,或者查程序的帮助文档,再试试调整设置和重新安装,如果都无效,你可以带着这些尝试的过程去提问。
3. 选择适当的地方提问
不同的问题适合问不同的社区或论坛
比如编程问题适合Stack Overflow,电脑硬件问题适合Super User,专门的项目有自己的邮件列表和论坛。不要跨平台乱发,避免让人觉得你不尊重社区。
你问Python代码问题,不要发到Linux安装群里,也不要同时间重复发多个地方。
4. 写个准确、简洁而有信息量的标题
标题是别人看到的第一眼,要简单明确描述问题
比如“X.org 6.8版中,MV1005显卡导致鼠标指针变形”,而不是“救命啊!我的笔记本坏了!”
标题写“Python 3.8中,requests库请求超时错误”,比“求助,代码不工作”吸引更多专家关注。
5. 用清晰、规范的语言表达问题
拼写无误、语法正确、避免聊天用语或火星文,可以让人更容易理解你的问题和认真回答。
对非母语者,礼貌提示语言困难更易获得宽容。
例如写“我在尝试连接数据库时出现TimeoutError,请问可能原因?”与写“连接数据库不成功咋办?”
6. 描述真实的症状而非猜测的原因
发问时陈述你看到的错误和表现,不要冒然推断“我觉得是硬件坏了”,让技术高手帮你分析问题。
“程序崩溃时显示Segmentation fault,运行20分钟后发生。”比“我怀疑硬盘坏了,怎么修?”
7. 提供尽可能详细的背景和步骤
说明你的环境(系统版本、硬件信息)、你做了哪些操作、之前改动了什么,最好提供最小可复现问题的测试案例。
例如:“我的Ubuntu 20.04系统,在执行make时,出现以下错误日志……”并附出错命令和相关代码段。
8. 不要一味追求完整答案,要请教解决思路或检查点
比起“给我完整代码”,更容易获得回应的是“代码为什么会在第7行出错?有没有测试方法?”你表现出愿意学习和尝试的态度。
例如:“我测试某个函数时,预期输出A,实际返回B,哪里可能出错?”比“请帮我写个修正代码。”
9. 礼貌尊重,结尾别忘感谢和反馈结果
用“谢谢您的帮助”表达感激很重要, 问题解决后最好回来汇报结果或加短评,帮助社区知识积累。
例如:“感谢大家的指导,问题是因为驱动版本不兼容,更新后已解决。”
10. 面对无礼或挫折保持冷静,不要放弃
有时你会收到不耐烦甚至刻薄的回应,不代表没人想帮,保持理性,改进问题后继续寻求帮助。
对方说“RTFM”(去看说明书),不要生气,而是认真读文档后再回应“我查过文档,没找到XX说明,能否帮忙?”
11. 避免常见的无意义问题和误区
诸如“程序没用”、“谁帮我修电脑?”、“我怎么破解密码?”等问题不会得到帮助,技术社区只帮忙解决明确且合理的技术难题。
避免提问“我程序不工作,谁能帮我?”而要具体说“我执行脚本时出现以下错误,期待输出XX,实际是XX。”
最后
本文只是总结了一些核心观点,更多的还是需要阅读原文:
英文原文链接: www.catb.org/~esr/faqs/s…
简体中文翻译版: github.com/ryanhanwu/H…