当前位置: 首页 > 科技观察

绘制软件开发生态系统

时间:2023-03-21 17:40:00 科技观察

【.com快译】在StackOverflow数据团队中,我们花费大量时间和精力思考技术生态系统以及各种技术解决方案之间的相互关系。我们到处使用这些协会,目的是发布相关内容建议,帮助客户了解如何招募开发人员,并最终改善StackOverflow的用户体验。实现这种技术关联结论的方法之一是建立标签关联。标签之间的相关性负责测量每个标签的协同效应和独立效应频率之间的比率。协作和独立我们有大量的数据源可以用来衡量标签的相关性。例如,StackOverflow工程经理MattSherman开发了一种工具,可用于衡量标签在StackOverflow问题上的堆叠频率。我们还使用流量数据并查看用户访问每个代码对的频率。为了进行分析,我们使用了各种数据集,包括开发者故事中的“liketags”。类似的信号存在于其他开发者故事中,我们可以通过观察这些标签的分布及其相关性来了解技术之间的关系。值得一提的是,开发者故事标签具有出色的信噪比。我们注重技术之间的关联和协同,开发者自己提供的工作和职业描述可以很好地揭示这种效果。从这里开始,让我们看看最常用的标签。如您所见,今天我们主要关注开发人员最常用的编程语言。接下来,我们计算标签的共现次数,找出哪些标签通常同时出现。比如在开发者故事中,最常用的重要语言(如C#、C++、JavaScript、Python)的开发者故事标签有哪些?请注意,这里出现的仍然是我们在之前场景中看到的通用重要语言。Java和C这四种重要的语言在开发者故事中经常一起使用,但这只是反映了它们作为通用技术的特性。要探索标签相关性,我们需要提出新问题——哪些标签与这四种语言最相关?现在我们看到了不同的技术组合。这些标签与开发者故事中频率更高的四大语言相关联,现在我们开始通过分析StackOverflow上的整体开发者数据来了解各种技术之间的交互。例如,我们发现大多数开发人员使用Python和R、Pandas和NumPy语言来完成数据科学任务,而Django和Flask在Web应用程序开发中更为常见。通过计算标签相关性,我们能够发现这些技术之间的真实关系。相关网络我们不会一次只看一个标签。我们可以将这种相关性扩展到更多标签,并根据它们之间的关联构建一组标签网络。在此交互式Web视图中(您可以缩放、滚动和点击),每个圆圈的大小代表标签的使用频率;圆圈越大,标签的使用频率越高。圆是根据其在网络中的子组成员身份通过多次随机游走计算得出的。该网络包含的标签在开发者故事中有超过800次使用,相关性比其他标签高0.1以上。我们可以从这个网络中得出很多结论!可以注意到,网络中的各种分组显示了整个技术生态系统——其中一些彼此紧密相连。我们可以看到其中的一些分组包括:§从HTML到JavaScript再到Bootstrap的前端Web开发技术§微软相关的技术,包括C#、.NET和SQLServer§DevOps技术,例如AWS和Docker(Go也属于这个part)§Android和Objective-C等移动技术您使用的技术在哪里,与哪些技术相关?浏览网络并找出答案取决于您。网络数据结构在Kaggle数据集中公开可用。您还可以查看我创建的Kaggle内核,了解如何使用这些网络节点和链接来创建类似的网络图。另外需要注意的是,有些技术是不同技术生态系统之间的桥梁。Python是开发者故事中最具特色的语言之一,因为它涉及前端领域(通过Django),以及Linux/sysadmin领域,以及C/C++嵌入式领域甚至R和机器学习。除了Python,Java、git、JSON也属于这类“桥梁”技术。使用开发者故事中的“喜欢的标签”数据,我们能够构建这个丰富而复杂的技术网络。开发人员将我们视为真正关心他们需求的专家,这就是我们真正了解开发人员社区的方式。【翻译稿件,合作网站转载请注明原译者和出处.com】