如何成为 StackOverflow 上合格的提问者与回答者

写这篇文章最直接的原因是我的朋友 Rob Conery 发了一条推特,解释他为什么放弃在 Stack Overflow 贡献答案。

然而,那已经是很长时间的事了。前不久,我开始写一篇与本文类似的文章,但是文章越写越长,并且没有得出任何结论。现在我用一个小时的时间写这篇文章,然后不论写了什么都要发出去(稍后可能会重新排版)。

我了解很多用户对 Stack Overflow 的复杂感情。有些人认为它完全没有价值,但是我相信更多的人认为它“资源有价值,但是潜在的反对意见让人很难做出贡献”。有些人则定期做出贡献,在合理的时间范围内,偶尔解释或者查看反对意见。

这篇文章,我将谈谈我的经历,和我的一些看法,关于 Stack Overflow 存在的问题、我对一些察觉到的问题持反对态度、和如何改善目前的状况。下面是我希望在二月份拜访 Stack Overflow 团队时详细讨论的主题,但我们却忙于讨论其它重要问题

在这篇文章中,我大部分讨论的是”提问者” 和 “回答者”,这是特意进行的简化。许多用户可能既是求助者又是回答者,我很多时候还会用不写答案但是用“view” 写评论的方式成为回答者。尽管任何用户都可以担任不同的角色,但是对提交的每个问题,每个人通常只有一个角色。当然还有其他的角色,例如“评论其它答案的评论者”,我不想花费过多的时间讨论这个问题。

目标和期望的差距

与生活中大多数事情相似,当所有人目标一致时 Stack Overflow 的表现最好,因为我们可以共同迈向那个目标。相反,当人们的目标不同时则通常会出现问题。

对于 Stack Overflow 而言,最普遍的问题在于这两个目标的差异:

  • – 提问者:尽量减少解决面临的问题所需要的时间
  • – 回答者:最大限度地提高网站所有问题的价值,将网站视为长久的资源

就我而言,我经常有一个“试图帮助提高软件工程师的诊断能力,使他们能够更好地解决自己的问题”的子目标。

例如,考虑这个问题(编造的,但并不牵强) :

Random 总是返回相同的数值,它出问题了吗?

在我看来这是一个低质量的问题(稍后我将对其进行详细讨论)。我基本知道哪里存在问题,但是为了达到我的目标我希望提问者改善这个问题,我希望看到他们的代码、结果等。如果我的答案是正确的(快速连续创建多个使用相同的基于系统时间的种子的 System.Random 的多个实例),那么这个问题很可能由于重复而被关闭,并且很可能被删除。以现在的形式,这个问题对网站没有任何好处。我不想没有确定是否重复之前就将这个问题以重复的原因关闭。

现在,从提问者的角度来看,这些并不重要。如果他们知道我知道问题可能出现在哪,他们可能会认为我应该告诉他们,以便他们可以继续工作。如果现在就可以得到答案,为什么还需要花费 10 分钟来重现问题?更糟糕的是,如果他们花时间做了这些事情,然后由于重复的原因又立刻关闭这个问题,这样看上去很像在浪费时间。

如果忽略情绪,我认为时间没有被浪费:

  • – 提问者可以了解到,提出一个清晰的问题可以更快的得到答案。
  • – 提问者可以了解到,搜索重复问题很有价值,因为这可能意味着根本不需要提出这个问题。

但是我们都是普通人,忽略感情显然是个不可取的方法。在这种情况下可能发生的情况是 ( 即使我始终很有礼貌) 提问者会认为 Stack Overflow 中到处是只关心自己权利的“交警”。 我当然可以认为这是不公平的(虽然这可能会突出我的实际目标 ) 但这可能无法改变任何人的想法。

因此,这是个问题。Stack Overflow 社区认同网站的目标,那么在用户提出问题时向用户明确说明网站的目标了吗? 值得注意的是导航页面(奇怪的是网站首页没有设置该链接) 包含以下内容:

在您的帮助下,我们正在共同努力,为每个关于编程的问题建立一个详细答案库。

我倾向于稍作更改:

Stack Overflow 的目标在于创建高质量的问题库以及问题的高质量答案库。

这真的是一个共同愿景吗?如果提问者意识到这点,会有帮助吗?我是希望如此,但是我怀疑它会阻止掉所有问题(我不认为有什么能做到阻止所有问题的提问,世界不是一个完美的地方)。

让我们转到另一个我与其他人有不同意见的话题:低质量问题。

是的,存在低质量问题

即使不能以完全客观的方式衡量,我也敢肯定有高质量问题和低质量问题(还有很多介于中间的)。

我认为 Stack Overflow 中这样的问题可以看做高质量问题:

  • – 提出一个问题,并且明确知道该问题的要求。这个问题应该能够非常明显地看出答案是否回答了问题(这与答案是否正确无关)
  • – 避免无关紧要。这可能很困难,但是我认为这是有效工作的一部分:如果在开发 web 应用程序时遇到问题,至少应该尝试确定 web 应用程序的上下文是否与问题有关。
  • – 对其他人尽量有帮助。这是避免不相关因素的非常重要的原因。很多用户需要将字符串解析为日期。较少人需要使用 X 框架的 Y 版本通过定制及专有网络协议与 COBOL 编写的客户端交互时将字符串解析为日期。
  • – 阐述提问者进行过的尝试、进展以及卡住的位置。
  • – 在适当的情况下(通常情况)包含一个证明问题的小例子。
  • – 格式正确。不要使用整页的段落,不要使用没有格式化的代码等等。

Stack Overflow 上有很多符合所有这些要求的问题,或符合以上大部分要求的问题。

我有理由认为这样的问题比另外一些问题质量高,一些问题可能只是一个家庭作业的照片。我曾经见过这样的问题,虽然,它们并不总是那么糟糕,但是我真的不知道如果这都不能认为是一个低质量的问题,我们还能达成什么一致意见。

当然,在此之间还有很多问题——但我认为接受存在低质量问题的观点非常重要,或者至少经过讨论并找出不同意见。

经验有助于写出好问题,但并非绝对必要

我看过许多文章声称 Stack Overflow 对于新用户来讲过于困难,因为,新用户很难写出一个好问题。

我认为接受网站协议并愿意为之付出努力的新人,至少能提出一个合理的问题。他们可能需要花费更长的时间进行研究并写出问题,而且写出的问题可能不会像有经验的人在相同情况下写出的问题那样简单。但是我相信,整体而言,新用户能够写出质量足够好的问题。他们可能没有意识到他们需要做什么或者为什么这样做,但这是一个拥有不同解决方案的问题。而不仅仅是”提问者可能是技术新手,所以我们需要回答没有任何帮助的糟糕问题”。

一个稍稍不同的问题是用户是否具有写出真正优秀问题所需的诊断技能。这是一个我非常重视的话题,而且我真的希望有一个好的解决方案,但是我真的没有。我坚信,帮助程序员提高自己的诊断能力,除了在 Stack Overflow 中提出更好的问题之外,将对他们有巨大的好处。

一些用户在 Stack Overflow 的表现像个混蛋,但是大多数人不会这样

我当然不会宣称 Stack Overflow 社区是完美的。我看到过一些用户对提出低质量问题的人非常无理,我不是要为此进行申辩。如果你看我非常不礼貌,那么请阻止我。我不认为要求改进问题本身是粗鲁的,我们可以非常礼貌地要求改进问题,也可以非常刻薄地要求改进问题。我完全赞成提高 Stack Overflow 的文明水平,但是我认为这不能以牺牲网站质量为代价。

我还经历过要求提问者提供更多信息时,提问者的反应非常无理的情况。这不是一个单向的问题。在这个方向上,我看到过比回答者更加粗鲁的行为。事实上,这些问题通常被关闭或删除,所以只是随便浏览网站的人通常不会看到这些。

我的时间非常有限,所以我们来看最重要的一点,我们需要对彼此更友好。

Jon 的 Stack Overflow 宣誓

我故意把它称为我的宣誓,因为这不是将我的要求强加于他人的地方。如果你认为这也是你想遵循的原则(或许有一些修正),那再好不过了。如果 Stack Overflow 决定在网站指南的某个地方采用它,我非常欢迎,并且他们可以对其做任何适当的修改。

从本质上来讲,我认为许多问题看起来像是提问者和回答者之间的一种交易。因此,建立一种契约是合理的(虽然这听起来更像是商业用语),因此,我倾向于使用一个诚心的宣誓。

作为一个回答者,我将…

  • 不表现的像个混蛋。
  • 记住我正在回应的是人,是有感情的。
  • 认定我正在回应的人是诚心地希望得到帮助。
  • 要明确,对问题质量的评论不是对提问者的价值的指责。
  • 记住,有些时候,我正在回应的人可能会感到他们正在被指责,即使我不认为我有这个意思。
  • 要明确,评论如何改善问题时提出积极的具体建议,不要消极地强调现状。
  • 答案要清楚,记住不是每个人都与我的技术背景相同(所以有些术语可能需要链接等)。
  • 花点时间好好展示我的答案,使用尽可能易读的格式。

作为一个提问者,我将…

  • 不表现的像个混蛋。
  • 记住任何一个回答问题的都是人类,都是有感情的。
  • 认定任何一个回答我问题的人都充满善意并试图帮助我。
  • 记住我是在要求其他人放弃自己的时间来帮助我解决问题。
  • 在提问之前先研究自己的问题、尽可能的缩小问题范围、给出尽可能详细的相关信息来减少回答问题的人需要花费的时间。
  • 花点时间好好提出自己的问题,使用尽可能易读的格式。

我希望大部分时间我可以遵循这些誓言。我怀疑自己有时候做不到,所有希望通过明确的写出来,阅读它,使自己成为一个更好的社区成员。

我认为如果每个人在 Stack Overflow 上发布任何内容之前都遵循这样的誓言,我们的社区将会更加美好。

打赏支持我翻译更多好文章,谢谢!

打赏译者

打赏支持我翻译更多好文章,谢谢!

任选一种支付方式

1 1 收藏 评论

关于作者:学以致用123

应用软件开发,主要用python、sql 个人主页 · 我的文章 · 21

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部