开发人员解决问题的艺术:如何优雅的向别人提出你不懂的问题

时间:2022-10-28 17:22:24

做技术如同做学问:首先你得态度端正,其次你得勤于思考,还得能于吃苦,最后你得学习有方。

  • 态度:严谨、朴素、踏实、顽强、不浮躁
  • 思考:多角度、多维度
  • 吃苦:愿意为解决一个问题而穷极所能

案例

下面是一个非常不错的发起提问的例子,我们看一看这里是如何提出问题的:

开发人员解决问题的艺术:如何优雅的向别人提出你不懂的问题

首先,肯定别人的项目,对创建该项目的人致以感谢和敬意。并说明自己选用这个项目是因为这个项目非常 awesome 。

接着,告诉项目创始人,自己在使用该开源项目时遇到了问题。并说明自己不是一遇到问题就立即来提问,而是经过很多途径、尝试了很多种解决方案,没有得到解决,然后才提出这个issue。比如文中提到“我根据你的文档一步一步的进行操作,并且通过google搜索尝试了很多解决方案,但是仍然没有找到能够解决该问题的办法,请给我一点 wisdom”。

在说明这些之后,表明了观点,阐明了事情经过。下面是issue本身:他提到:“根据要求安装和配置好了 Vagrant 及 VB,通过 gitbash 设置了相关配置,一切都很正常。然而,无论我怎么努力都不能通过 ssh 连接上服务器。随后,命令行返回一段错误,并说出了错误信息:blablabla...”

仔细描述了自己的操作过程,以及错误的发生时机和返回的错误信息等。这些信息都非常有助于使问题得到快速解决,都是能够初步或直接断定问题所在的关键点。

通过上面一段描述之后,发生错误的时机以及整个操作流程都说清楚了。接着,是对操作流程中每一个操作细节的描述:

这里提到了,操作系统环境是 win8x64,ssh keys 是通过 Gitbash 创建的并且保存在 .ssh 目录中,尝试了不同的命令行终端但是都不能正常工作。但是 ssh 可以与其他服务器(阐明自己的SSH应该是没有问题的)。进行了系统重启、删除并重建配置等与虚拟机相关的各种尝试,但问题依旧。还通过VB界面检查了端口设置,并尝试修改该端口配置,但都无济于事,还通过 netstat -a 检查了端口情况。接着通过vagrant相关命令尝试了一系列操作,根据文档进行逐步尝试,仍无法连接上服务器。还尝试阅读了google出来的各种解决方案,但都没有解决问题。

最后,请给我一些帮助,我是真的想使用你的 setup file !

做事和做学问的艺术。

  1. 选择项目,在众多开源项目中选择一个能够满足自己需求的项目。
  2. 确保自己的选择是科学的,一旦选中,就花最大的努力将其应用到自己的项目中。
  3. 遇到问题,首先要做的是对照官网文档仔细检查自己的操作有没有问题,而不是直接去问别人要答案。
  4. 在检查完使用方法完全符合文档要求后问题依旧,把解决问题的思路继续向周边扩散(不要局限于依托文档解决问题,比如稳重提到的检查端口等等),仍然没有去直接找人要答案。
  5. 穷尽个人全部知识结构,仍不能解决问题,用笨办法(排除法,如尝试自己的SSH是否可以连接上其他服务器等等)开始逐个检查相关环境是否有问题,依然没有直接去问人要答案。
  6. 排除法也不能定位问题所在,开始google求助,筛选和识别出哪些搜索结果有可能解决自己遇到的问题,还是没有直接去要答案。
  7. 对筛选出的可能可行的解决方案进行尝试,仍然没有直接去开 issue 寻求答案。
  8. 通过 google 依然解决不了问题,并已穷极所能。此时,只能问人要答案了。
  9. 问答案也是有门道的,首先,弄明白你应该去找谁要答案。一定是到最权威的地方去找答案,而不是随便找个人讨论(可以少走弯路,还能避免误人子弟)。你使用的开源项目,项目开发团队当然就是权威了,所以他到github提交issue。
  10. 最后才是提问的艺术,比如措辞、如何提问、如何抛出细节等等。

提问的艺术

先立足于自己解决,确定通过一己之力无法解决问题后,再对外寻求帮助。必须要有一个自己思考的过程,这个方案可能不是最高效的,但绝对是对提高处理问题能力大有帮助的。当提出问题请求帮助时,要注意以下几点:

  1. 背景说明:尽可能详细的描述你做了什么
  2. 问题本身:尽可能详细的描述问题本身
  3. 环境信息:尽可能详细的提供有利于别人判断问题所在的关键点

最后

本文地址:http://www.cnblogs.com/kelsen/p/6259647.html

关于本文如果您有任何建议或疑问请在下面留言交流,也可通过 Web前端高级工程师 群进行线上沟通。

开发人员解决问题的艺术:如何优雅的向别人提出你不懂的问题