你知道人们从Stack Overflow上Ctrl-C/V的频率有多高吗?

2021-05-29   出处:stackoverflow.blog  作/译者:Ben Popper and David Gibson / lukeaxu  

        人常说每个笑话都是基于某种现实。就我们最近的愚人节笑话(3月31日Stack Overflow发布将涉足硬件领域的博客文章)而言,或许那就是事实,或许是真相的一部分。我们在沿袭Stack Overflow传统业务发展的时候,也想与时俱进调整我们的业务。这个灵感来自于创始人对需要付费查看问题答案的网站的失望。如果我们也决定以后从Stack Overflow复制代码需要付费,这个世界会是什么样子?

        好了,玩笑结束,希望大家笑得开心,希望没有人真的被吓到。切入正题,我们想如果在网站中响应每次用户按下的Command+C,我们就能够了解人们是如何使用我们网站的。于是在两周的时间里,我们记录了发生在Stack Overflow上的每一个复制操作,以下是我们的发现。

你不是一个人在战斗(You Are Not Alone)

        每4个访问Stack Overflow用户中,就有1个会在访问该页面的5分钟内复制一些东西。在3月26日和4月9日之间,在被统计的7,305,042个回答和评论中,总共发生了40,623,987次复制。人们从回答中复制的次数10倍于从问题中复制的次数,35倍于从评论中复制的次数。人们从代码块中复制的次数是周围文本的10倍以上。令人惊讶的是,我们看到,发生在没有采纳答案的问题上复制的次数,比有采纳答案的问题上的复制次数要多。

        所以,如果你曾经因为从我们的网站上复制代码而不是自己书写而感到有些难过,原谅自己吧。既然别人已经完成了这份艰苦的工作,为什么还要自己重新造轮子呢?我们把这称为知识复用,你在复用别人已经学习、创造和证明过的东西。知识复用并不是一件坏事,它可以帮助你更好地学习,更快地获得可正常工作的代码,并减少你的挫败感。我们的整个网站都是在知识复用的基础上运行的,正是这种利他主义的指导,使得Stack Overflow成为一个强大的社区。

        你可以站在巨人的肩膀上,利用他们之前的经验教训来构建有价值的新事物。你仍然应该遵循一些基本的最佳实践原则,以防止复制时有BUG或安全问题潜入你的代码,确保你能充分理解你所复制粘贴的内容。当然,也要注意有些代码需要有一定的许可才能使用。除此之外,我们鼓励每个人利用社区的优势进行分享。

        上面是概要总结,但对于那些想深入了解我们在研究数据时发现的东西的人来说,请继续向下阅读我们产品营销团队的数据分析师David Gibson所呈现的奇妙见解和图表。如果你想听听我们在愚人节玩笑背后如何建立软件模型和物理键盘,请查看原文中的音频播客。

        作为一个多年来毫不掩饰从Stack Overflow上复制代码的人,当我看到发生在网站上数以百万计的复制事件,我丝毫不觉得惊讶。真正让我惊讶的,是我们最终回答的那些问题。到底有多少人从Stack Overflow上复制?人们只是在复制代码吗?人们是否更倾向于复制已采纳的答案?

        为了给数据分析增加一些方向性,我和团队列出了一份我们想要回答的问题清单。起初只是从一个玩笑开始,后来演变成了有价值的探索,并且过程当中产生了新的见解,引发了许多关于如何发展创新公共平台以及如何为团队带来更多价值的内部讨论。

数据

        通过使用我们自制的网络跟踪工具,我们创建了自定义事件来捕捉用户发生的每次复制活动。通过这些事件,我们能够捕捉到复制活动中许多不同的属性:标签、问题、答案或评论、代码块或纯文本、复制者的声望和回答得分、地区以及回答是否被采纳。除了被复制的实际文本,我们几乎捕捉到了所有的东西。

        我们收集了整整两个星期的数据,从2021年3月26日到2021年4月9日,下面的分析是基于这段时间的数据。

问题

        Ben已经提到了一些较高维度的统计数据,这些数据很快就证明了人们长期以来的玩笑:每个人都从Stack Overflow复制。我们也很快意识到,所有复制活动与我们的网站流量密切相关。大多数复制活动发生在工作周的工作时间内。从数据我们发现,更大的地理面积意味着更多的复制:亚洲33%,欧洲30%,北美26%。最后,86%的复制来自匿名用户,也就是0代表的用户。

        当我们问到究竟是谁在复制以及他们在复制什么的更多细节问题时,事情开始变得更加有趣。

高声望用户复制得更多吗?

        首先,我们想看看我们的高声望用户是否比其他用户复制的次数更多。

        我们可以看到,大多数的复制来自于0声望的用户。这些是我们的匿名用户,因为只要创建账户就能立即获得1点声望。其中一些复制活动有可能是来自有账户但没有登录的用户,这种情况我们没有办法验证。

        由于我们平台上的大多数用户声望都比较低,所以我们取消分组,看看我们是否可以使数据更直观展示。通过查看每个用户的复制次数,而不是总复制次数,我们可以看到不同声望用户的平均复制次数。

        

        从这份统计图来看,随着声望的增加,用户的复制次数会减少。结论是用户的声望越高,他们的复制次数就越少,这种关系是存在的,但不是很强,所以我没有十足的信心说声望越高或越低的用户复制次数越多。初级开发者往往有较低的声望,他们正在寻找能够加速他们的学习并让他们快速开始实践的东西。随着开发人员建立起他们的专业知识,他们也建立起他们的声望,他们将专注于更具体的领域,那些东西多半不可能从Stack Overflow复制。

被采纳的回答被复制得更多吗?

        当我们想到一个被采纳的回答时,我们可能会认为它是最好的回答,并推断它比未被采纳回答的复制次数要多。然而,看一下数据,我们发现52.4%的复制来自于未被采纳的回答。但是,平均而言,被采纳的每个回答平均被复制7次,而未被采纳的每个回答平均被复制5次。因此,更多的复制发生在未被采纳的回答,但被采纳的回答有更高的知识复用率。在Stack Overflow,我们把知识复用定义为复用别人已经学习、创造和证明的东西。

        值得注意的是,一个问题可能没有被采纳的回答。 就拿这个回答来说吧:在我们的统计中,它有将近4,984次投票支持,被复制了7,943次,但没有被采纳。事实上,这个问题后面没有任何一个回答被采纳。这可能是因为这个问题的发起人自2010年以来就没有再出现过,也或者有其他什么原因。

分数高的回答被复制得更多吗?

        如果被采纳的回答不是被复制最多的,那么分数较高的回答肯定是被复制最多的,对吗?让我们来看看吧!

        我们看到,对于回答来说,在我们定义的1至1000分的分组中,复制次数的分布似乎是相当平均的。至于问题,大多数的复制是来自1-5分的问题。我猜测这是因为用户在复制问题以重现问题,然后最终发布回答。

        与查看用户声望时类似,网站上大多数回答和问题的分数较低。为了使数据更直观,让我们看看每个回答和问题的复制量。

        我们可以清楚地看到,随着回答或问题得分的增加,每个回答或问题的复制数量也在增加。这是有道理的,因为当一个回答或问题的分数增加时,该知识更有可能被我们的社区用户复用。

人们会从得负分的回答中复制吗?

        上面图中那些分数为负数的蓝点又是怎么回事?为什么有人会复制得负分的回答呢?好吧,我们从来不想以貌取人。

        看看这个回答。它是我们统计中被复制最多的负分回答,得分是-2,总共有288次复制。仔细看,它似乎是上面那个被采纳回答的一个更简洁的版本,上面回答的分数是29分,总共有493次复制。虽然我们的负分回答被复制的次数不算多,但它是简要回答的完美案例。

被复制最多的标签是什么?

        现在是我最想回答的问题是:哪个标签被复制得最多?但是由于数据的规模和可用的资源的限制,我无法解析出嵌套的标签。例如,html标签不会包括|html|css|标签分组下的问题和回答。

被复制最多的前十个标签

        不出我所料,发生最多复制的标签是Stack Overflow上最流行和最活跃的一些标签。有一件事让我印象深刻,那就是python在复制最多的前十个标签中出现了4次,其中有3个是数据分析的特定标签组:|python|pandas|、|python|pandas|dataframe|和|python|matplotlib|。作为一个数据相关的从业人员,我喜欢看到更多的人学习这些工具。

平均复制次数最多的十个标签

        除了查看发生最多复制次数的标签外,我还想看看哪些标签的平均复制次数更多。我们筛选出至少有十个不同帖子的标签,我们可以清楚地看到,随着标签变得更加具体,它们的平均复制次数会更多。

复制次数最多的帖子是什么样子?

        现在来回答我相信你们很多人都感兴趣的问题。什么样的帖子发生的复制次数最多?

回答中的代码块

        我很高兴地宣布:How to iterate over rows in a DataFrame in Pandas是复制次数最多的回答,它有11,829次复制,总计3,497分。这个问题是在2013年回答的,直到现在这篇回答每周还会继续帮助成千上万的人。(译者:这个回答中代码块复制次数最多)

回答中的纯文本

        纯文本被复制最多的回答:TypeError: this.getOptions is not a function [closed],回答得分218,总复制数1570。虽然我们无法确认这一点,但我怀疑`sass-loader@10.1.1`正在被复制。

问题中的代码块

        代码块被复制最多的问题:How to create an HTML button that acts like a link,问题得分2,147,总复制数3,665。

问题中的纯文本

        纯文本被复制最多的问题:Updates were rejected because the tip of your current branch is behind its remote counterpart,问题分数为322,复制次数共计261次。这个问题有点棘手,因为有少数不在代码块中的git命令,很容易成为问题的被复制部分。但由于我们没有捕捉到实际复制的文本,所以我们无法确认这一点。

评论

        重要的是,回答不是Stack Overflow上的全部。有时你只需要一条有用的评论。以下是被复制最多的评论!

        第一条评论是我们在整个网站上复制最多的评论,第二条评论是我们的 "无名英雄",因为它只有5分的得分,但却是我们整个网站复制最多的第6条评论。

        更新:有很多人对购买我们的恶作剧的现实版本感兴趣。好消息是,我们预计这真的可能会发生,我们一直在沿着这个方向努力。请继续关注更多信息!

        标签:四月愚人节,代码复制,数据科学

{测试窝原创译文,译者:lukeaxu 如有问题欢迎评论区交流}


声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
184°|1842 人阅读|0 条评论

登录 后发表评论