軟件開發生態系統圖譜
譯文【51CTO.com快譯】在Stack Overflow數據團隊當中,我們投入了大量時間與精力考量技術生態系統,以及各類技術方案間的相互關聯。我們隨處運用這些關聯,旨在發布相關內容建議以幫助客戶了解如何招聘開發人員,最終提升Stack Overflow的用戶體驗。實現這種技術關聯結論的方式之一在于建立標簽相關性。標簽間的相關性負責衡量各標簽協同起效與獨立起效頻度間的比例。
協同與獨立
我們掌握大量可用于衡量標簽相關性的數據源。例如,Stack Overflow工程技術經理Matt Sherman開發出一款工具,可用于衡量Stack Overflow問題之上標簽的疊加頻率。我們還使用流量數據并查看用戶對各代碼對的訪問頻率。為了實現分析,我們使用多種數據集,包括在開發者故事中使用“喜歡的標簽”。其它開發者故事中也存在類似的信號,我們可以觀察這些標簽的分布及其相關性,從而了解技術間如何彼此關聯。值得一提的是,開發者故事標簽擁有出色的信噪比。我們關注技術間的關聯起協同效應,而開發者自身提供的工作與職業描述能夠很好地揭示出這種效應。
從這里開始,我們先看看使用頻率***的標簽。可以看到,今天我們關注的是開發者最常用的編程語言。
接下來,我們計算標簽的共同出現次數,并找出哪些標簽通常一同出現。例如在開發者故事中,最常使用的幾種重要語言(例如C#、C++、JavaScript以及Python)的開發者故事標簽是什么?
請注意,這里出現的仍然是我們在上一場景下看到的常見重要語言。Java、C這四種重要語言在開發者故事中被頻繁共同使用,但這只能體現其作為常見技術的特性。要探索標簽相關性,我們需要提出新的問題——哪些標簽與這四種語言相關度***?
現在我們看到了不同的技術組合。這些標簽在開發者故事當中以更高頻度同四大重要語言關聯起來,現在我們開始對Stack Overflow上的開發者總體數據以深入了解各項技術間的交互。例如,我們發現多數開發者使用Python與R、Pandas以及NumPy語言處理數據科學任務,而配合Django與Flask則更多見于Web應用開發。通過計算標簽相關性,我們得以發現這些技術間的真實關系。
相關性網絡
我們并非只能一次查看一個標簽。我們可以將這種相關性擴展到更多標簽,并根據其彼此關聯建立起一套標簽網絡。
在這套交互網絡視圖中(您可以縮放、滾動以及點擊),各個圓圈的大小代表著標簽的使用頻率; 圈子越大,標簽使用頻度越高。基于其在網絡中的子組成員身份,圓圈會通過大量隨機游走進行計算。此網絡包含的標簽皆在開發者故事中擁有超過800次使用次數,且相關性較其它標簽高0.1以上。
我們可以通過這套網絡獲得大量結論!可以注意到,網絡中的各個分組展示了整體技術生態系統——其中一些彼此緊密相連。我們可以看到其中一部分分組包含:
§ 從HTML到JavaScript再到Bootstrap的前端Web開發技術
§ 包括C#、.NET以及SQL Server在內的微軟相關技術
§ AWS與Docker等DevOps技術(Go亦屬于這部分)
§ 包括Android與Objective-C的移動技術
您使用的技術在哪里,其與哪些技術存在關聯?大家可以自行探索這套網絡并找到答案。該網絡數據結構公開于Kaggle數據集內。大家也可以查看我創建的Kaggle內核以了解如何使用這些網絡節點及鏈接以創建類似的網絡圖形。
另外需要注意的是,一部分技術屬于不同技術生態系統間的橋梁。Python是開發者故事中出鏡率***的語言之一,其與前端范圍相關(通過Django),亦與Linux/系統管理范疇相關,同樣與C/C++嵌入式范疇乃至R與機器學習相關。除了Python之外,Java、git以及JSON也屬于這類“橋梁”技術。
利用開發者故事中“喜歡的標簽”數據,我們得以構建起這套豐富且復雜的技術網絡。開發者將我們視為真正關注其需求的專家,而我們則可借此真正了解開發者社區。
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】