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