我在10年的堆栈溢出学习中学到了什么


我参加Stack Overflow十周年纪念日临近。 多年以来,我使用该网站的方式及其感知已经发生了很大变化,我想与您分享我的经验。 我是从不十分参与站点社区或其文化生活的普通用户的角度撰写此文章的。 最近几天,我只回答与我正在开发的产品VS Code相关的问题。 但是,在此之前,我积极参与了广泛主题的讨论。 十年来,我询问了大约50个问题,并给出了575个答案 ,并浏览了许多其他人的评论。

John Skeet 对Stack Overflow文化的描述比我以往任何时候都更好,更权威。 他的出版物影响了本文的某些章节,尽管总的来说,这是我对我对Stack Overflow的经验,该站点的优缺点以及今天如何使用它的坦率思考。 讨论将是很肤浅的,而不会沉浸在网站的工作或其历史中。

因此,这是我使用堆栈溢出十多年的经验。

您需要能够提出问题


乍看之下,没有什么比这更简单了:在文本框中输入几个词,然后单击“提交”,Internet将神奇地帮助您解决所有问题! 但是我花了将近10年的时间才能理解,要真正获得结果,必须在该死的领域中输入哪些单词。 实际上,我每天仍在学习。

能够提出好的问题是一种被低估的技能(顺便说一句,写关于问题的好消息也是如此)。 首先,我们如何确定一个问题是“好”? 堆栈溢出提供了一个提示 ,其中列出了一个好的问题的质量:

  • 请问网站的主题。
  • 暗示一个客观的答案。
  • 尚未设置。
  • 已被调查。
  • 清楚地描述问题,通常使用最少的,易于重现的示例。

好的,但是实际上“问题的清晰描述”是什么样的? 哪些信息相关,哪些不相关? 有时,您会觉得要提出一个好的问题,首先需要知道答案。

不幸的是,一个小的文本框在这里没有帮助。 难怪这么多用户发布了不合标准的问题? 有时,他们得到的唯一答案是一些令人困惑的文档的链接。 他们会很幸运。 许多不合标准的问题只是被默默地忽略了,它们在无休止的问题流中消失了。

问好问题是一种技巧。 幸运的是,它可以被开发。 我基本上是通过阅读一堆问题和答案来学习的,指出了哪些有效,哪些无效。 哪些信息有用,哪些会干扰? 尽管您仍然会害怕在实践中使用获得的知识并提出问题。 只是尝试从结果中学习。 我必须承认,我自己对一些早期的无知问题感到有些困惑,尽管也许这证明自从我访问此网站以来,我大大提高了提出问题的能力。

不好的问题和不太好的问题不是一回事


我不会加糖:有些问题根本不好。

这个问题包括一个屏幕截图和短语“为什么它不起作用!?!”,这是一个不好的问题。 怎么了 显然,作者几乎没有付出任何努力。 这不是一个问题,而是一个需求:“这对我有用吗!”我为什么要这样做? 我的时间太宝贵了,无法将其用于帮助不想从一开始就学习并且不会感谢我的帮助的人。 了解什么是堆栈溢出。

现在考虑一个标题为“如何删除页面上的蓝色边框”的问题,该问题由几段文字组成,这些文字讨论了outlineproperty的CSS属性,但未明确提及“ CSS”或“轮廓”一词。 尽管这样的问题可能与Stack Overflow的许多建议相矛盾,但我不同意这一点,这不是一个坏问题。 作者至少试图给出一些信息,甚至不知道该给出什么。 尝试很重要,感知和学习的意愿也很重要。

但是,许多Stack Overflow参与者很可能以相同的方式处理这两个问题:责备和关闭。 这是令人不快的,它会吓跑许多经验不足的用户,使他们无法学习提出更好的问题并大致了解该站点的工作方式。

真的不好的问题是不值得的。 但是请记住,那些问不太好的问题的人会无意间这样做。 他们想问好问题,只是不知道如何。 如果您盲目且不加解释地惩罚初学者,他们将如何学习?

一个好的问题并不能保证答案


通常,堆栈溢出可以回答许多人可以回答的较简单的问题。 对JavaScript或HTML中的二进制搜索有疑问吗? 太好了! 在不到一个小时的时间内获得五个答案。 但是,问题越复杂或具体,无论措辞的质量如何,他们回答您的可能性就较小。

随着时间的流逝,获得答案的可能性也会迅速下降。 当问题深入提要几页时,它就会丢失。 一个星期后,您只需要祈祷那些拥有必要知识的人会偶然发现您的问题(或慷慨地单击它)。

您可能不喜欢正确的答案。


每个月,我都会对所谓的不受欢迎的答案感到厌烦。 这些答案实际上说:“原因是它的设计如此”,或者“这是不可能的,因为……”,或者“这是需要首先修复的错误”。 在所有这些情况下,作者都不会做出决定甚至无法解决。 我怀疑当人们不喜欢答案怎么说时,他们就会减去它。 我什至理解它们,但这并不意味着答案是错误的。

当然,反之亦然:好的答案并不一定会告诉您您想听的内容。 一些最佳答案首先回答了原始问题,然后描述了解决问题的其他方法。 有时,我会回答用户的问题,然后写一个大文本,说明为什么不建议这样做。

每当将关系的表达简化为利弊之类的按钮时,就会丢失重要的差异。 经常在Internet上发现此问题。 有多少个社交网络可以将“我支持”与“即使我不喜欢它或不同意它,我也说得很好”之间的区别?

总的来说,尽管每月都有不利因素,但我认为Stack Overflow社区是客观地投票。 我们将坚持这条道路。

我几乎从不问堆栈溢出


我使用这个网站的时间越长,我问这个问题的次数就越少。 这部分是由于我的专业成长。 我在工作中遇到的许多问题过于复杂,无法用简单的问题来表达,或者太具体,以至于任何人都无法帮助我。 我意识到网站的局限性,所以我避免问一些几乎可以肯定不会得到很好答案的问题。

但是,即使我正在学习一种新的语言或框架,我也很少在这里问问题。 不是因为这样的天才,恰恰相反。 只是,经过多年的Stack Overflow讨论之后,我深信我不太可能成为第一个提出这个问题的人。 我开始寻找,几乎总是发现有人几年前已经问过同样的问题。

观察别人的问题是学习产品新知识的好方法。


现在,我正在研究VS Code ,所以我习惯了使用vscode标记查看问题。 这是了解我的代码如何在现实世界中使用的好方法。 用户有什么问题? 如何改善文档或API? 为什么我认为绝对可以理解的原因造成如此多的误解?

问题是显示产品使用方式的重要信号。 但是重点不是要回答并继续前进,而是要首先尝试了解一个人为什么有问题。 也许该产品对您有未知的问题,或者您在不知不觉中做出的某些假设? 这些问题还帮助我发现了许多错误,并启发了我继续工作。

如果您为开发人员提供产品,则不要将Stack Overflow当作转储(或更糟的是,作为问题的墓地)。 定期检查问题和答案。 这并不意味着您需要自己回答每个问题,但是来自Stack Overflow的信号非常重要,不能忽略。

问题,错误报告和功能请求之间的界限模糊


实际上,有关VS Code on Stack Overflow的很多问题都是错误报告。 还有许多其他方面-实际上是对新功能的要求。

例如,有一个标题为“为什么我这样做时VS Code为什么崩溃??”的问题是一个错误报告。 VS Code不应在多种情况下出现。 回答错误报告的问题是徒劳的,因为作者对解决方法很满意,而且他们永远不会填写真实的错误报告。 在这种情况下,我通常会写信以便用户在Github上填写错误报告。

在其他情况下,差异可能不太明显。 例如,问题“为什么JavaScript IntelliSense在VS Code中不起作用?”。 根据JavaScript IntelliSense不能正常工作的程度,该问题可以分为三类之一:

  • 如果这是用户配置问题,那么这实际上是Stack Overflow的问题。
  • 如果IntelliSense在这种情况下可以工作,但不能工作,则这是一个错误报告。
  • 如果IntelliSense在这种情况下不起作用,那么这是对一项新功能的要求。

最后,对于大多数用户而言,这些细微差别并不重要-他们只希望JavaScript IntelliSense能够正常工作。

尽管对我来说,作为项目负责人,这些差异很重要,但总的来说,它们对我也不重要。 因为问题,错误报告和功能请求都是表达一种想法的所有方式:用户期望我的代码中有某些内容,但没有收到。 如果产品是完美的,则用户永远不会问这个问题,因为他们会理解一切并完全按照自己想要的去做(或者至少清楚地说出为什么做不到)。

开发人员也是人


人们情绪激动。 人们是非理性的。 人是白痴。 当然,并非总是如此,但有时! 而且您不会相信,但是开发人员也是人。

开发人员喜欢重复这种发明:“我们使用计算机工作,因此我们必须理性。 我们了解神秘的符号,因此我们必须聪明。 程序已经占领了世界,所以我们必须保持冷静! 好酷! 去吧!

事实并非如此。 如果是这样,那么上帝就会帮助其他人。 即使在Stack Overflow上,这个作为专业知识的工具也被创建为客观的知识库,甚至在我自己的VS Code的非常具体的角落,我仍然会遇到各种丑陋的情况:逻辑错误,侮辱,从众思考等。

不要上当:您可能没有您想象的那么完美。 但这并不意味着我们不必试图摆脱我们的缺点。

杜德,我是创造它的人


我也是一个人,不时Stack Overflow发生的事情使我很烦。 例如,当用户自信地胡说八道或简单地对与VS Code相关的问题给出错误答案时-VS Code是我创建的并且我非常了解的产品。 奇怪,但给人的印象是答案越错误,有人就将其称为无可争辩的事实的可能性就越大。

发生这种情况时,我将按照图片中的步骤操作并写下正确的答案。



而且有几次导致长分支的出现:我不敢质疑他们对我创造的知识的困扰! 该死的聪明人,不要一直试图保持正确! 因为我是对的!

在这种绝望中变得愤世嫉俗很容易


面对源源不断的不合标准的问题,很容易变得愤世嫉俗。 他听说过Google吗? 但是他甚至没有想象如何建立联系的句子? 狗,你呢?

有时我每天都会看几十个新问题。 不断观察所有这些低质量的问题,您可能会陷入轻蔑或玩世不恭的境地。 这种玩世不恭的态度可能会蔓延到网站上,任何遇到过热情的主持人或花了几个小时研究和整理问题以便只得到缺点而被遗忘而又没有任何解释的人都会得到证实。

当然,有些用户不会花一克力气就发布不好的问题。 但是我相信,大多数低质量的问题都来自有良好意愿的人(尽管很愚蠢)。 我总是试图记住初学者意味着什么。 刚开始时,您不了解这里的所有安排。 在某些情况下,您甚至都不知道用哪个词来正确表达您的问题。 相信我,很难处于那个位置。 当您只是为了提问而倒水时,这是不愉快的。

尽管Stack Overflow在帮助新手方面做了很多工作,但还有很多工作要做。 我试图在遵循网站上接受的标准与对经验不足的用户谦逊的态度之间找到平衡。 这可能包括对我为什么投票决定关闭问题或发表评论以提示用户提供其他信息的解释。 我还有成长的空间。

另一方面,我毫不犹豫地拒绝了拥有50,​​000名声誉的用户,他们发布了“用于JavaScript开发的VS代码的最佳设计?”的问题,或者上传肥皂水的代码屏幕截图而不是文本。

有时候我只是想谢谢你


堆栈溢出的赏识文化发展不佳。 我记得曾经在一个站点上自动删除了“你好”和“谢谢”这两个词。 也许这仍在进行中,我还没有测试过。

如今,任何在客户支持部门工作过的人都清楚,礼貌过度会阻碍甚至假装。 但是有时在此站点上,某人对您来说很重要,而感谢他的唯一方法是加一个加号。 糟透了

效率不要求我们变成没有灵魂的机器人。 旁道可以在人与人之间提供更真实的通信,如果用户当然想要他们自己的话。

有时候我想知道收到答案后发生了什么


堆栈溢出基于事务处理原理:有些人问问题,另一些人回答。 收到回复后会怎样? 谁知道 有时我发现发现有趣。 我的回答有帮助吗? 他帮助了什么谦虚的项目? 问题的作者学到了什么?

当然,这种好奇心无法得到满足。 即使您可以要求用户报告他们将如何使用收到的信息,也将是一个很大的问题。 但是对此进行反思很有趣。

游戏化是有效的...


...将流程变成游戏时。

当我在状态栏中看到一个+10或+25小图标时,我仍然有些担心。 这些小小的游戏化是我回到网站已有10年的原因。 但是多年来,我也开始想知道Stack Overflow是什么类型的游戏,而赢得比赛意味着什么。

我确信该系统的创建是出于最佳意图:奖励人们有用的问题和答案。 但是,一旦您添加高分, 古德哈特(Goodhart)法就会生效,一些用户开始调整其行为,而不是获得最大价值,而是获得最大评分。 这很重要,因为...

声誉并不代表您的想法


声誉并不等同于技术能力,沟通技巧或了解Stack Overflow如何工作或应如何工作。

我不想说声誉一文不值。 它并不意味着Stack Overflow管理意味着什么,也不意味着“声誉”一词的含义。 我意识到声誉是影响力的衡量标准。 考虑网站上发布的两个假设答案:

  • 一是关于常见的git操作。 在两分钟内,我使用Google写下了三行答案。
  • 另一个是关于混乱的图论。 也许全世界只有一百个人可以回答。 我写了一些段落和示例代码来说明问题的实质以及如何解决它。

五年来,他们研究了500万次的第一个答案,并提出了2,000加分。 他们看了第二遍答案300次,并提出了两个可悲的优势。

在某种程度上,这是非常不诚实的。 , ? ( , ). , , . , , - «»?

«» Stack Overflow . , . , , ? , , , PHP iOS.

, , Stack Overflow. , «» « »? , ? , . , «» Stack Overflow , , . , ?

, , , . Stack Overflow 10 . , , , . , , , Stack Overflow -, . , .

Stack Overflow


, - git, Stack Overflow. , - bash, Stack Overflow. , , Stack Overflow.

IntelliSense, Stack Overflow. , . , . . , , .sort JavaScript, , -1, 0 1, JS, .

, Stack Overflow — . . , ? , , «» ( , , ).

Stack Overflow —


Stack Overflow , , , . , .

Stack Overflow. , , , . , , .

Stack Overflow . - . , - Stack Overflow . , , . , , . , , , — , — . , , , .

聚苯乙烯


, Stack Overflow. (ES5!) JavaScript Eclipse, , 90 % « jQuery, ...». , , . , - , .

, Stack Overflow - : -; ; . , , , . . , Stack Overflow 10 , , . , .

Source: https://habr.com/ru/post/zh-CN481012/


All Articles