淺談:前端如何賦能業務

嶽逢楽發表於2019-04-17

你是否頭疼於,每天做不完的需求和改不完的bug?

你是否發愁,每天擼業務程式碼,是否能獲得技術成長

而追求成就感的你是否想過,你所編寫的一行行程式碼,是在反覆的變化中迅速成為遺留程式碼,還是助公司插上騰飛的翅膀,在你死我活的戰場上脫穎而出?

因此本文會將業務和前端關聯起來討論,探討業務發展的不同時期,前端所能做的一些事情,既能解業務的困擾,也讓前端同學們擺脫碼工、切圖仔的定位。

千言萬語不如一張圖,全文完。

淺談:前端如何賦能業務

大誤,還是得詳細說說。

一、初始階段

在業務的初始階段,在市場定位、使用者訴求、產品邏輯已經明確的前提下,此時業務的核心訴求是 『儘快上線』,進行快速驗證和產品迭代,當然,質量還得能過得去。 所以此時技術同學的方案側重點是:

快、爽

先說『』,在這種情況下,什麼vue/react都見鬼去,老夫只用jQuery一把梭! 這是反面案例,這樣就只能重構火葬場了,專案上線完就打包行李滾蛋……

此時的,指的是 儘可能複用集團/業內成熟的方案、架構,按捺住自己重新造輪子的躁動不安的心情。 這又涉及到一個問題:如何選擇一個靠譜的方案?這是一個可以另開文章的話題,但先在此簡單說說 根據我個人的經驗,主要從穩定性、可擴充套件性、效能去考慮。

穩定性 如何去評估?如果一個專案能做到這幾項,我是比較放心的。

  1. 專案star數多
  2. 有單測,程式碼覆蓋率90%~95%以上
  3. 文件完備,有常見Q&A
  4. issue有較快的處理流程和週期,3天內響應、1~4周內關閉。
  5. 有穩定的版本控制,不進行不相容的升級,非要不相容升級的話,將遷移工具做到極致。

可擴充套件性 如何評估?主要是指能否根據業務or已有技術方案,自定義部分內容。

  1. 例如元件庫,是否能自定義主題、元件的事件回撥等,因為有的需求,元件除了完成預設的行為,還需要執行其他邏輯如埋點;
  2. 例如單測工具,能否配置白名單,因為有一些程式碼是相容特殊場景,編寫用例模擬場景的成本實在比較高。這個主要是根據技術訴求和經驗進行判斷。

效能問題,短期容易被人忽視,因為能跑就行,但一旦埋下隱患,日後有坑就極難解決。容易出現效能問題的地方有:程式碼構建、長列表/表格滾動、大資料圖表、複雜動畫、3D全景渲染等,如果所做的業務涉及到這幾個方面,選擇方案的時候就要特別注意效能。

如果實在圖省事兒,create-react-app、umi開箱即用來一套就完事兒了。

』 這個字我的理解是,一款新產品出現,一定需要在使用者體驗or互動上有絕對領先對手的地方。

一個我始終記憶猶新的例子,就是賈伯斯釋出第一款iPhone時,演示滑動列表時全場的驚呼,一個賈伯斯的哥們說:當你滑動頁面的時候我就溼了。

淺談:前端如何賦能業務
另一個前端領域的例子,就是Ant Design。AntD被廣泛使用,很大一部分原因是其出色的視覺設計和動效。至今為止,AntD的官網介紹上仍然說這是一個設計體系。

所以我覺得,一款新產品,除了提供剛需價值,最好在美觀和易用上領先對手一大步,雖然主要還是看設計師和產品的功底,但前端同學的實現上至少不能拖後腿,不能載入太慢、滾動太卡。

藍海市場、剛需產品也許不那麼看重這一點,但有的藍海門檻較低,很快就會轉變為紅海。

還值得一提的是,賬戶體系的建設,包括打通三方登入、免登等(客戶端登入態透傳到h5),網上不少資料,我實在沒這方面經驗,就不在此多嘴了。

二、快速擴張

OK,假設產品如期上線,資料蹭蹭上漲,看起來一切都很完美。 然後問題就來了,業務開始擴張,公司新招了100個運營和10個PD,你會發現需求突然就翻了10倍。這個時候我們怎麼辦?

答案只有一個:提(jia)效(ren)。所以這個時期的核心是:

快、穩

提效最簡單的辦法是加人,但問題是,100個運營好找,100個能寫出靠譜程式碼的前端不好找,有的時候改別人的程式碼,比重寫一遍更麻煩。看過《人月神話》的同學都知道,加人帶來的效率提升是有瓶頸的,人平均效率會隨著人數增加而下降。

此時就需要考慮通過技術手段提效,沉澱基礎研發體系,包括:

  1. 基礎工具庫+ 業務工具庫,避免重複寫一些簡單但是容易出bug的業務邏輯。
  2. UI規範 + 元件體系。UI規範很重要,如果設計師不能達成一致,那出來的視覺稿必然是千差萬別的,你的公共元件也就難以沉澱了。
  3. 研發工具升級。主要有 構建效能優化、資料mock工具、環境切換工具、線上問題排查工具等。

除了技術手段,人員的技術成長也很重要,畢竟技術方案是由人來執行的,個人覺得常用的方式有:

  1. CodeReview,幫助新人快速成長到一定水平,保證新人開發程式碼的可維護性。
  2. 內部分享。分享好用工具以提升研發效率,分享底層原理避免踩更深的坑浪費大量時間,也可以分享一些編碼、除錯小技巧。

當然,還有一個提效的神技,就是——砍需求。

砍需求也是一門技術活兒,有的高階工程師用嘴就將需求解了。但不是每個團隊都採用放權式管理(此處感謝我的歷任老闆們),給你足夠的權力自己砍需求和排期; 有的公司採用的是集權式管理,只有前端leader能夠砍需求和進行任務分配,也使得不少同學這方面能力沒成長起來。

那麼需求到底怎麼砍?聽我簡單說一下,歡迎更好的套路。

  1. 首先,端正心態。 你砍需求不是為了自己偷懶要早下班,你砍需求是為了業務整體效率的提升。你要砍的是無效需求、重複需求,公司業務的核心需求不能砍。不然你把公司業務都砍死了,自己喝西北風去?公司如果運氣好IPO了,你不也爽一波?
  2. 其次,先問問需求解決的業務問題是什麼? 搞清楚這一點,就能判斷:這個需求的優先順序多高、是不是偽/重複需求、是否有其他方式替代解決。此處的偽需求,是指不能實際解決使用者問題的需求。
  3. 再其次,資料說話。 相關的資料是怎麼樣的?如何推匯出業務的問題所在?做完這個需求資料會變成什麼樣?
  4. 最後,這個需求可能需要哪些上下游合作。涉及其他環節的需求,一定要將上下游拉到一起,考慮到所有可能的問題,統一一個方案,才能客觀評估工作量。
  5. 最後的最後,也是最重要的,將共性的需求沉澱,構建元件體系or業務模組體系。有這個沉澱,才能更進一步,對需求做收斂,例如總不能說,已經有一個slider模組了,你還要再做一個類似的吧,對業務的提升到底在哪?

一般一個重要的、合理的需求都能比較好回答上面這些的問題。其中第三點,資料說話,也對公司的資料化能力提出了要求。

  1. 最基本的pv/uv、uv點選率、停留時長,這是和前端頁面相關的指標。
  2. 模組熱度、功能使用情況,這是用來和業務方撕逼的時候使用的。(上次做的功能你們又不用!)
  3. 還有業務指標,例如電商的gmv、售罄率,但這些和前端沒直接關係。
  4. 高階一點可以玩GrowthHack,全鏈路監控細分使用者群的使用情況,比較適合業務已經增長到一定體量,精細化運營的場景。
  5. 大資料分析+洞察+資料視覺化。會在第三部分講述。

另一個不能忽視的是,如何變得更『』,因為大家都很急,一急就容易出線上故障,然後時間都花在處理故障上了,然後時間就更急,一個快速腐化的死迴圈,然後你能怎麼辦呢?只能以猝死明志啊……常見的有以下幾種方法:

  1. 研發流程管控。不經測試不允許上線,這也是阿里的研發紅線,看起來是效率降低的,但其實只是把處理線上問題的時間用來測試了而已。
  2. 基礎庫、基礎元件 上單元測試,程式碼覆蓋率90%+
  3. 監控。線上404、頁面白屏、js/介面報錯等。
  4. 安全。最基本的xss、csrf做一下,再整體升一下https
  5. 問題覆盤、沉澱機制。避免再出同樣的問題。

以上這些問題解決了,前端同學也就算是又快又穩地幫業務度過了快速發展期,迎來業務的精耕細作期。

三、精耕細作

俗話說得好:攻城容易守成難,但現在攻城也不那麼容易了。現在新興的獨角獸,背後都有AT的影子,例如ofo和摩拜,雙方都極難一下子摁死對方。而是互拼內力,最後很可能落得兩敗俱傷。這個時候我們就需要穩中求快。

淺談:前端如何賦能業務

前兩個階段的C端場景看起來和前端關係更加緊密,那麼這個階段和前端有什麼關係呢?我覺得能做的事情有:

  1. 中後臺系統的構建。 將運營們的工作線上化,同時減少部分手工操作,達到效率的提升。 雖然說運營們通常excel用得虎虎生風,但有容易出錯、貪腐較多的問題,想想ofo被曝貪腐嚴重的新聞。 在不少缺前端的公司,這部分通常也由後端用jQuery一把梭。但後端擼出來系統,通常都欠缺互動意識(無導航、報錯資訊等設計)、擼不出稍微複雜的佈局(見過被float和flex難住的)、缺少動效、SPA 等,做出來的系統真的差不少,都9012年了,還是讓專人來幹這活吧。記得加上水印,包括明水印和暗水印,便於公司時候追責,間接防止公司機密外洩。

  2. 大資料視覺化。 不僅僅是消費者端頁面的訪問資料,還有更深層次的公司運營資料。例如ofo可以實時跟蹤自行車的損壞率、監控車輛密集程度等,從而指揮排程車的排程,達到車輛投放和使用率的最佳匹配。雖然這事兒吧,核心還是資料同學產出資料的準確性,但前端同學的配合是不可或缺的。 常見的可以用來做這事兒的有Echarts、HighCharts、G2等等,雖然我們基本不可能再重複自研一套,但取其精華,快速賦能業務,就是業務前端的價值所在。

  3. 平臺化。 此處其實指的是大中臺、小前臺的概念。因為我們往往已經積累了一批中後臺系統,但如何使同一個系統更快支撐新的業務、砍掉/合併重複功能的中後臺系統,也是輔助業務的一種手段。

  4. ABTest。 根據之前的經驗,電商不同行業的不同人群,對於互動設計的偏好真的就不一樣,有的喜歡大圖,有的喜歡小圖。因此通過ABTest方案,對人群進行千人千面的細分展現,對業務也是可以稍微有一定的提升。

  5. 容器技術(hybrid & 核心)& 極致效能。 其實也就這麼提一下,因為對於大多數公司,真沒有深入追求瀏覽器核心提升的價值和可能性。 hybrid方案是有必要的,但應該在急劇擴張時期就做得差不多了。 極致效能也屬於比較炫技的東西了(已經做到1~2s頁面可互動的前提下),短期內沒有特別大的必要,但在追求極致效能的過程中,迫使相關同學深入瞭解容器技術、服務端、閘道器、cdn等底層,並推動相關方升級,經過長時間的積累,帶來人力儲備和技術儲備的提升。

四、新賽道、新增量時期

基本上做完上面那些東西,公司的業務進入一個穩定的時期,就是到處看看有什麼新的東西可以做了。(當然還是可能有各種各樣蛋碎的改版) 核心

  1. 端的擴充套件:
    1. 包括各類小程式。 名義上是便於管控第三方,提供更好的體驗,其實就是人為割裂出一個端,同時用流量把這個端喂起來。不過沒辦法,誰讓爸爸們有流量呢。但注意一點,擴充套件一個端是有維護成本的,且並不會直接帶來流量收益,需要配套的運營計劃。
    2. 3D、全景、VR / AR 。有可能帶來互動根本變化的東西,唯一的缺點是科技還不夠先進,做全景素材成本很高,VR/AR的應用場景也不夠多。
    3. Flutter。
  2. 智慧化:
    1. 業務的智慧化。例如活動介面的千人千面,根據演算法計算出最佳介面元素組合方式等。
    2. 研發的智慧化。例如FB的Aroma、之前業內的psd2html,但這個演算法和普通的電商推薦演算法相比,最大的區別在於容錯率極低,你推薦錯了一個商品大不了不買看下一個,但你自動生成錯了一句程式碼,整個系統就跑不起來。

實在不知道前端還有什麼新的東西好關注的了,硬掰不出來,就這樣吧,歡迎指點。

五、最後

讀完本文,相信你已經找到了前面三個問題的答案,能夠不再被一堆需求推著走,也能夠不再只擼業務程式碼,孕育出屬於你們團隊的技術方案而獲得技術上的提升,最重要的是找到自己的一身本領在這個商業世界中的價值,不忘極客夢,技術改變世界,rock the world。

免責免撕宣告:本文是個人的一些總結和思考,筆者的業務經驗有大流量產品、大型營銷活動、各類中後臺專案,基礎技術產品也搞過,但終究經驗有限,難免有錯漏,歡迎指正和補充。

淺談:前端如何賦能業務

相關文章