不管是身處什麼行業什麼領域,數據分析愈來愈成爲一貫必不可少的技能, 而運用數據思惟進行決策更能產生造成高質量的決策結果。前端
隨着互聯網的不斷髮展和物聯網設備的不斷普及,咱們平常生活中的各類數據被存儲下來,讓咱們能夠經過定量分析數據,利用數據實現更好的決策制定。node
如今愈來愈多的公司開始注重這一塊,一方面自建數據體系,一方面去買一些數據。而對於咱們我的彷佛尚未意識到或者開始挖掘數據對咱們的價值。git
筆者最近的工做大都是作一些基礎設施搭建和流程優化相關的工做。 這部分工做對不少人來講都是「隱形」的,對上層使用者來講很難有很大的感知。 對於領導來講,若是你只是悶頭去作事情,他們也是很難知道你乾的怎麼樣,若是這之間再加上 你沒有什麼反饋,就會給同事和領導一種「不靠譜」的感受。程序員
所以給予反饋和直觀展現本身勞動成果的能力就顯得很是重要。 然而若是你能很好展現本身的勞動成果,那麼只須要將這個給老闆看就是一種很好很直觀的反饋。github
這篇文章,咱們來談一下,如何量化咱們的工做,如何將咱們的工做成果展現出來。 如何讓同事,讓領導體會到咱們工做的成果。我會經過幾個例子來幫助你們快速理解,以及掌握這門「技術」 。面試
《讓數據開口說話》是我給這篇文章的標題,讓數據開口說話,你就能夠少說一點,而且擺數據就是擺事實, 數據帶來的說服力要比你說的話強不少。前端工程化
我是一個對技術充滿興趣的程序員, 擅長前端工程化,前端性能優化,前端標準化等。api
作過.net, 搞過Java,如今是一名前端工程師。瀏覽器
除了個人本職工做外,我會在開源社區進行一些輸出和分享,GitHub 共計得到1.5W star。比較受歡迎的項目有leetcode題解 , 宇宙最強的前端面試指南 和 個人第一本小書性能優化
若是讓數據開頭說話,那麼首先第一步你要有數據。
所以咱們的第一步就是收集數據,那麼在這以前你須要知道你須要什麼數據。 這部分的內容隨着每一個人任務不一樣確定是不同的。所以有着很大的靈活性,
有一個指導思想就是對關鍵指標分解。 好比我如今要作打包時間進行優化,那麼打包時間由哪些時間決定。
打包時間 = 階段1 時間 + 階段2 時間 + 階段3 時間
複製代碼
咱們減小打包時間確定要減小其中一個或多個。
有時候咱們沒法找到這種簡單的分解,那就教你們另一個技巧:運用對比。
一方面能夠基於時間進行對比,好比環比增加,同比增加等數據都是這麼來的。
另外一方面咱們能夠基於用戶屬性進行對比,好比用戶年齡,性別,偏好,操做系統類型, 地域屬性等。
下面我舉幾個例子。
假如你被分配了一個任務。讓你對項目的打包過程進行優化。
你須要對打包時間進行優化,減小打包的時間
你須要對打包的最終產物進行優化,減小打出的包的包體大小。
將打包變得儘量的簡單,也就說盡可能減小人爲的操做過程。
你接到了這樣一個任務,你會如何去作?
這裏咱們不考慮具體的具體思路和細節。 假設你的架構思路,方案規劃,各類fallback已經想好了。 咱們如何經過上面提到的讓數聽說話的角度來收集數據呢? 換句話說,咱們須要收集哪些數據?
對於打包時間的數據,最簡單的咱們計算一下整體的打包時間。
最後咱們只須要對比優化先後的整體打包時間差別便可。
這對於老闆來講可能已經夠了,可是這缺少一些精確性,咱們沒法知道經過優化了哪一個環節進行 減小了打包時間。 所以一種簡單的改進是將打包劃分爲多個階段,每一個階段分別進行統計計時⌛️ 。
包的大小的數據其實和上面講的打包時間思路相似。
咱們固然能夠只統計整體包大小。
可是爲了得到更加靈活的定製和更加精確的範圍咱們能夠對包進行必定的劃分。 這個劃分能夠是業務緯度,也能夠是純技術緯度。
這部分比較簡單,咱們只須要簡單地統計手動操做的次數便可。
經過收集以上的數據,咱們就能夠用數據來表示咱們的成果,讓數聽說話,關於如何 使用這些數據,咱們稍後討論。
假如你被分配了一個任務。讓你對項目的頁面加載速度進行優化。 你會怎麼作?
這個任務有點太寬泛了,更多的時候會有一些更精確的指標, 好比將網絡狀態爲fast 3G
的中端機型
的白屏時間下降到3s之內
。
性能優化的第一步就是測量,沒有測量就沒有優化。咱們不能爲了優化而優化, 而是看到了某些點須要優化纔去優化的。 而發現這個點一個重要的方式就是要靠測量。
說到測量,廣泛接受的方式是,在瀏覽器中進行打點,將瀏覽器打開網頁的過程看做是一個旅行。 那麼咱們每到一個地方就拍張帶有時間的照片(事件),最後咱們對這些照片按照時間進行排列, 而後分析哪部分是咱們的瓶頸點等。
有了這些timing 咱們能夠很方便的計算各項性能指標。咱們還能夠自定義一些咱們關心的指標,好比請求時間(成功和失敗分開統計),較長js操做時間,或者比較重要的功能等。
總之收集到這些數據以後,咱們只須要根據咱們的需求去定製一些指標便可。
這樣咱們就很容易展現出這樣的畫面:
假如你是一個項目的管理者,上級分配給你一個任務,要在將來幾個季度去作「研發效率提高」, 也就是提升「交付速度」。 你會怎麼作這件事?
這個事情是比較主觀的了,所以咱們切實須要一些能夠量化的東西來輔助咱們。
咱們考慮將需求進行拆分,變成一個個任務。一個需求可能有多個任務。
咱們考慮對每個任務進行計時,而不是需求,由於需求有太大的差別。 咱們能夠針對任務進行分類,而後咱們的目標就能夠變成「減小同類任務的交付時長」。
可是這種粒度彷佛仍是有點大。咱們能夠採起標籤的形式,對任務進行交叉分類。
任務緯度可能仍是有點太大,咱們能夠採起更小的粒度劃分,好比模塊和組件。
這樣咱們的統計緯度就豐富起來了,咱們不只能夠整體進行統計分析,咱們還能夠根據tag和tag的組合進行彙總。
好比一個典型的統計結果大概是:
- task1 (tagA)
- module1 (tagA)
- component1 (tagB)
- component2 (tagA)
- module2 (tagB)
- module3 (tagB)
- task2 (tagA)
- task3 (tagC)
複製代碼
好比這裏有一種tag叫「是否複用了之前的代碼」, 那麼咱們就很容易統計出組件複用率,也就很容易很直觀地知道先後的差距了。
再好比咱們須要作「用戶拉新和留存」,咱們應該怎麼作?
這個留作思考題,你們能夠思考一下。
我這裏拋磚引玉一下,好比咱們的統計緯度能夠是:
- 用戶訪問時長 (tagA)
- 跳出率 (tagB)
- 新用戶 (tagA)
- 流失的老用戶 (tagB)
- 地址位置 (tagA)
複製代碼
假如個人tag有兩個分別是 用戶id和時間, 咱們就能夠方便地統計每一個用戶的活動數據趨勢。
有了數據,咱們如何經過數據來加強表現力呢?
一種很是有效的措施是可視化。如今的可視化引擎和工具備不少,功能也很是複雜。
可是我發現我我的須要的就那麼幾個,可能你們每一個人須要的種類不大同樣, 可是我相信做爲我的,你須要的種類不會不少。所以本身根據自身的實際狀況, 挑選適合本身的幾種類型,作到迎刃有餘就足夠了。
對於我而言,我經常使用的是餅圖,用來表示分佈關係。 曲線圖用來表示趨勢。 用柱狀圖表示對比+趨勢。用熱度圖表示離散的數據分佈等等。
咱們可使用一些現有的成熟的產品來幫助咱們將剛纔咱們收集到的數據轉化爲各類圖表, 好比 畫布
這個網站能作的圖表種類比較少。
固然做爲一名前端咱們也能夠本身寫代碼去更靈活地展現咱們的數據,好比D3 或者百度的echarts
任何類型的圖表均可以作,只有你想不到,沒有它作不到。
相對摺中一點,咱們能夠選擇支持代碼定製的一些產品,在特殊狀況咱們能夠自定義。
有了這些數據圖表,是時候寫一份PPT來秀一下了。
一種方式是使用你電腦的辦公軟件或者一些在線的幻燈片製做工具作, 好比slides 。
另外一種方式經過寫代碼的方式實現,做爲程序員我推薦使用第二種。 這裏推薦一款nodejs cli 工具
nodeppt, 還有另一個JS 框架
reveal.js 。 上面提到的slides背後的原理就是它。
這篇文章我主要講述瞭如何量化咱們的工做,並將咱們的工做成果展現出來。 從而擺脫「幹了不少事情,卻說不出來,甚至功勞被人無情拿走的尷尬局面」。
首先咱們將瞭如何收集數據,收集數據的一些技巧,這裏經過幾個實際工做的例子,分別是「打包優化」,「性能優化」,「人效提高」, 「用戶留存」 ,來幫助你們理解這個 過程,掌握這個技巧。
有了數據以後,咱們須要經過一些手段將其數據展現出來,給人直觀的感覺,最好有視覺衝擊感。 這裏我推薦了幾個工具和平臺,你們能夠根據本身的狀況選擇。
最後結合咱們實際狀況,PPT是一個很好的展現本身的東西,無論是晉升仍是宣傳都是很好的方式, 這裏我也推薦了幾個產品,幫助你們更快更好地將圖表展現出來。
讓數據開口說話,你就能夠少說一點,而且擺數據就是擺事實, 數據帶來的說服力要比你說的話強不少。
最近我從新整理了下本身的公衆號,而且我還給他換了一個名字《腦洞前端》,它是一個幫助你打開大前端新世界大門的鑰匙 🔑,在這裏你能夠聽到新奇的觀點,看到一些技術嘗新,還會收到系統性總結和思考。
我會盡可能經過圖的形式來闡述一些概念和邏輯,幫助你們快速理解,圖解前端是個人目標。
以後個人文章同步到微信公衆號 腦洞前端 ,您能夠關注獲取最新的文章,或者和我進行交流。
如今仍是初級階段,須要你們的意見和反饋,爲了減小溝通成本,我組建了交流羣。你們能夠掃碼進入
(因爲微信的限制,100 我的以上只能邀請加入, 你能夠添加個人機器人回覆「大前端」拉你進羣)