領英如何通過改善開發工具提升員工生產力

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#000000","name":"user"}},{"type":"strong"}],"text":"本文最初發佈於領英技術博客,經領英中國授權由InfoQ中文站翻譯並分享。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在過去的一年中,我們一直在使用實時反饋來改進我們的工具鏈,併爲領英開發人員提供效率更高的體驗。在它的幫助下,我們將反饋的參與度提高了一倍,更重要的是我們可以由此做出更好的推薦和改進。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"對於希望改善開發體驗的工程組織來說,以下問題會是一個良好的研究起點:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"我們如何才能讓我們的開發人員更具生產力,獲得更愉悅的開發體驗?"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"作爲面向內部開發人員的工具負責人,我應該投入哪些領域來儘可能幫助我的用戶?"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"能否有一種方法可以在開發人員遇到問題或獲得良好體驗時立即獲得他們的反饋?"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"這篇文章分享了我們在實時反饋功能實現過程中的經驗教訓,我們希望它能幫助其他組織改進自己的流程,從而在開發人員和工具負責人之間建立一個自然的反饋循環。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"傳統調查面臨的挑戰"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在過去的幾年中,我們依靠一份開發人員季度調查來與工程師交流,並就他們所使用的工具徵求全面反饋。但是,我們發現這種方法遇到了許多挑戰:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"開發人員有時會對他們很久沒有使用的工具提出意見"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。在某些情況下,我們發現爲某款工具打分的反饋者中,有超過90%的人們在調查發佈前六個月中沒有使用過該工具。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"工具負責人對所提供的反饋幾乎沒有任何背景概念"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。開發人員是根據什麼評分的?他們指的是哪些具體工具或活動?這意味着大部分反饋內容實際上是無效的。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"很難衡量定期調查期間的情況"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。在兩次調查之間發佈功能和錯誤修復時,我們無法確定用戶評級適用於“之前”狀態還是“之後”狀態。此外,在兩次調查之間,我們完全無法掌握開發人員的想法。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"從宏觀層面來看,這些調查結果幫助我們瞭解了用戶對整個工具鏈生態系統的總體看法,並讓我們在工具鏈"},{"type":"link","attrs":{"href":"https:\/\/measuringu.com\/microsoft-nsat\/","title":null,"type":null},"content":[{"type":"text","text":"NSAT"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"方面取得了重大進展。但是,我們對痛點的具體內容缺乏深入瞭解,因此希望就內部用戶對他們手頭工具的感受獲得更準確的信息。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"解決方案:實時反饋"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"爲了克服這些挑戰,我們開發了一種稱爲實時反饋(Real-Time Feedback)的機制。實時反饋是一個系統,其首先收集關於開發人員在我們的工具鏈生態系統中所做行爲的信息,然後基於這些上下文信息來確定是否、何時以及如何向開發人員徵求反饋。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"例如,我們可能會注意到開發人員剛剛完成了部署,並且在過去的兩週內沒有被要求提供有關任何工具活動的反饋。在這種情況下,我們可以發送電子郵件以徵詢與特定部署相關的工具鏈體驗的反饋。將反饋請求無縫集成到日常工作流程中,意味着開發人員無需每季度坐下來一次,單憑記憶給出意見,而是可以在每次見到自動反饋提示時一點點積累看法。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"捕獲上下文"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"當我們向使用工具的開發人員提供反饋時,我們能夠在其中加入開發人員在提供反饋時所做特定活動的上下文。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"如上所述,定期調查的挑戰之一是從反饋中提取可採取行動的信息。提到“有時”的評論尤其難以理解。現在我們能確切地知道在特定時間發生了什麼並立即詢問(實時),因此我們傳遞的反饋會更加精確,同時還提供了關於特定會話和使用情況的更多細節。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"爲了捕獲這些上下文信息,我們創建了一個系統,其通過多種渠道記錄開發人員的操作:內部WebUI(使用"},{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/Matomo_(software)","title":null,"type":null},"content":[{"type":"text","text":"Matomo"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":")、命令行界面(CLI)和內部API(利用我們的內部日誌記錄和審覈機制,將信息發佈到Apache Kafka)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"上下文捕獲是我們策略的關鍵要素,它也不僅用於反饋機制。我們計劃將其用作一套新系統的基礎,這套新系統將幫助開發人員獲得工具方面的幫助。從理論上講,如果我們能夠全面瞭解開發人員在尋求幫助時所做的事情,那麼這類支持將更容易提供。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"參與率"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"對於任何調查流程來說,決定其有效性的一個主要因素就是用戶羣體的響應意願。實際上,當我們轉向實時反饋方法時,我們一直關注的一個主要問題就是持續的參與率。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"事實證明,就用戶覆蓋率而言,實時調研方法比我們的傳統調查更有效。我們得以將參與調查的用戶比例增加了一倍(從定期調查的大約15%增加到實時方法的30%以上)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"由於參與度的提高,我們現在能夠對開發人員羣體進行更好的市場細分。在領英有很多開發人員類型:UX開發人員、後端開發人員、站點可靠性工程師和機器學習專家等等。不同的開發人員類型(開發人員的分組\/羣組)具有不同的需求、使用模式和生產力訴求。更精確的定位和細分將帶來更好、更個性化的工具,以滿足每種開發人員類型的特定需求。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"我們也意識到不應該過多地要求開發人員徵詢反饋,否則參與度可能會急劇下降。因此我們實現了一種智能節流機制,以確保僅在開發人員完成其意圖後(即流程結束時)纔會被徵詢反饋。調研本身的重點在於他們的體驗,而不是具體的工具或技術棧的某一層。例如,我們可能會問他們整個部署流程的感受如何,而不是僅僅使用一種工具的體驗。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"我們還會特別尊重關於反饋調研的偏好。開發人員可以選擇要多久被徵詢一次反饋,以及希望通過哪些渠道(例如電子郵件、Web、Slack等)提交反饋。我們認爲,這種靈活性可以將反饋的交付內容納入每位開發人員的工作流程中,這也起到了增加參與度的作用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"開發人員可以選擇他們希望被詢問的頻率,以及他們想被詢問的渠道。這些渠道包括:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"電子郵件"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":":完全依靠電子郵件客戶端來捕獲反饋(單擊,基於"},{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/Mailto","title":null,"type":null},"content":[{"type":"text","text":"mailto鏈接"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":")。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"可插拔的UI小部件"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":":我們開發了一種產品內可插拔的UI小部件,可服務於各種請求機制,包括被動和主動的請求機制(例如在線、"},{"type":"link","attrs":{"href":"https:\/\/en.wiktionary.org\/wiki\/toast_notification","title":null,"type":null},"content":[{"type":"text","text":"吐司通知"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"和彈出窗口)。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"Slack"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":":通過與即時消息集成,我們還開發了一種通過Slack收集反饋的方法。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"Web門戶"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":":我們開發了一種Web門戶,開發人員可以通過它獨立提供反饋,並與其他用戶報告的內容互動(如投票、評論)。"}]}]}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"針對反饋採取行動"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"聆聽反饋是一個很好的起點,但是實現反饋機制後會發生的事情纔是促使我們創建實時反饋的動力。從各種渠道收集反饋後,我們便將其合成爲可共享的報告(文檔和其他產品,例如儀表板)。我們確保相關團隊能根據反饋採取行動,並且當他們選擇不這樣做時,我們會確保他們給出的理由能分享給提供反饋的開發人員。確保完成這一循環對於維持健康的反饋文化來說非常重要,這樣反饋的提供者就可以知道他們正在被傾聽,並繼續提供有價值的輸入。"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/1b\/1b54690b6b16ca44dd0237eddb169ec4.jpeg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"我們的“聆聽,行動和分享”框架"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"建立向內(面向工具開發人員)和向外(向整個公司的工程師)這兩種類型的關係後,我們就建立了一種共生關係。我們將深入瞭解如何讓開發人員變得更加高效和快樂的見解,並與工具開發人員交流以提出改進建議,從而更好地幫助他們所服務的受衆。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"從反饋中獲得的見解"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"我們想分享兩個例子,這些例子是從我們收集的主觀反饋中獲得的重要見解。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"我們的內部CI系統提供了管道預期運行時間的估算值。事實證明,這些估計有時不是很準確,導致開發人員對所討論工具鏈的可靠性問題產生了懷疑。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"當流量變化導致分析失敗時,我們的"},{"type":"link","attrs":{"href":"https:\/\/engineering.linkedin.com\/blog\/2015\/11\/monitoring-the-pulse-of-linkedin","title":null,"type":null},"content":[{"type":"text","text":"金絲雀部署監視系統"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"(EKG)添加了一個保護層,以確保開發人員意識到該分析是不可靠的,因爲控件可能已更改了其行爲。不幸的是,開發人員到頭來會認爲EKG本身不可靠,因此忽略了分析。通過獲得這種現象的相關反饋,我們改進了系統,現在正在以更好的方式處理這種情況。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"總而言之,認識到我們之前傳統調查方法的盲點有助於我們重新思考如何收集反饋。通過創建實時反饋這樣一種從開發人員那裏收集反饋的全渠道上下文方法,我們得以提升所獲反饋的數量和質量,從而使我們在如何更好地爲開發人員提供支持方面獲得了更具可行性的見解。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"致謝"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"我們要感謝Vineet Juneja,他根據以往的經驗幫助我們在這一領域提供了指導;管理團隊的Ben Lai、Awais Tariq、Narsi Nagampalli、Jeff Galdes和Jared Green;工程團隊的NamanJ ain、Troy Holsapple、Sahil Patwardhan、Sunting Sun、Aaron Dai、Barry Warsaw和MaxKanat-Alexander(特別感謝Max在本文中的幫助!);我們的UX合作伙伴Arun Yegappan、Kuan-Ying Chen和Kyle Smith;最後是我們的數據科學合作伙伴Yue Wu。領英上的許多團隊都參與了實時反饋的研發,我們感謝他們的支持。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"原文鏈接:"},{"type":"link","attrs":{"href":"https:\/\/engineering.linkedin.com\/blog\/2021\/real-time-feedback-for-developer-tooling","title":null,"type":null},"content":[{"type":"text","text":"How LinkedIn turned to real-time feedback for developer tooling"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章