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