小公司的前端應該怎么做?

源自:http://www.cnblogs.com/yexiaochai/p/5311712.html
聲明:文章著作權歸作者所有,如有侵權,請聯(lián)系小編刪除。
前言
近期工作生活比較漂泊,從上海換到了成都,這個是以家庭為單位的重大決定,離開一線城市對于職業(yè)生涯和技術前沿來說是有一定問題的,但是出于房價考慮(主要是買不起房子)與生活舒適度來說,回蓉似乎是一個比較好的選擇,何況成都的互聯(lián)網(wǎng)也還行。
隨著能力的提升,負責的工作種類會逐漸增多,考慮的方向也會有所不同,這個時候不太會有太多單獨的知識點成為阻礙了,工作中碰到的問題要么太“大”,總結起來費力,要么太“小”,不適合單獨整理成文,這種現(xiàn)象反而造成了一段時期的博客空白期,總的來說就是又開始懶了,思維又開始懈怠,人又開始想待在安逸區(qū)了。
因為開始懶了,所以沒能學習到新知識,自然出不了新文;因為開始懶了不愿意再對工作中的問題一個個深入研究、深入挖掘自然出不了新文。
所以人還是得不停的鞭笞自己啊,不能讓自己陷入“瞎忙”的境地,得有效的利用時間,才能走的更遠!!!
現(xiàn)在我在一家小公司做前端,因為公司以及職位的變化,對于在小公司如何做前端有一些心得,拿出來與各位做個分享,希望對處于小公司的前端有一定用處,也鞭笞自己重新學習總結。
什么是優(yōu)秀的前端團隊?
團隊初期缺什么
在公司中,層級越高對業(yè)務關注比例越高,反而不太關注個人成長,所以評價一個leader是以團隊為單位,團隊成員比他強是應該的;對于個人來說的話,要多關注自身能力成長,然后能力匹配自己的職位,甚至超出自己的職位,這樣的團隊的話,戰(zhàn)斗力是比較強的。
主管(包括前端主管)設定目標必須可量化 ,比如你做一個業(yè)務,kpi是多少,那么技術就需要考慮如何才能達成,細化到研發(fā)甚至前端層級,就是所謂技術kpi了。
比如,今年H5站想達到單日平均出票量10000,那么這個就是業(yè)務目標,需要消化分到各個業(yè)務團隊,可以是:
① SEO優(yōu)化
② SEM優(yōu)化
③ 營銷廣告
④ 微信&支付寶&手機百度流量接入(微信錢包是十分優(yōu)秀的流量入口,可以極大程度的增加流量)
⑤ 實地推廣
……
以上當然只能解決部分問題,具體到前端,可能我們就要從頁面轉換率入手,建立訂單漏斗模型,做性能優(yōu)化,做交互優(yōu)化,每一個具體的層面都需要轉化目標。
這些都是直接可量化的東西,因為當前業(yè)務已經(jīng)到了一個瓶頸,或者公司已經(jīng)到了一個瓶頸,業(yè)務上就需要做不停的嘗試,對應到技術就是需要你快速迭代,低成本迭代,不斷的容錯試錯。
這個時候就會提出很多問題:
第一是你的團隊在類似高壓下會不會主動加班去實現(xiàn)公司的目標、個人的kpi。
第二是你的團隊在這輪高壓拼搏后有沒有留下什么東西?
根據(jù)之前經(jīng)驗,沒有團隊可以無休止的承受高壓加班的壓力
以之前攜程無線高壓迭代的經(jīng)歷來說,就算是那么優(yōu)秀的團隊事實上到后期也是疲憊不堪,疲憊的時候容易犯錯,亢龍有悔,盈不可久。
第三是如何幫助新人快速的融入團隊,如何讓1+1=2。
我們都清楚,好的項目絕不是堆人可以堆出來的,如何讓一個項目可以分解到各個人手中,如何讓良莠不齊的同事可以更好的協(xié)作,這個是我們需要考慮的。
要解決這些問題是要靠平時的積累,具體體現(xiàn)到前端是:
1 在不停的迭代中,你的業(yè)務流程是不是最優(yōu)(產(chǎn)品到設計到前端到最終上線流程)
2 在不停的迭代中,是否沉淀出來了公共服務與工具化服務
好的前端是什么樣的
首先,好的前端是一定愿意加班的,同時,好的前端是會找辦法讓團隊少加班的。
和一些朋友做過交流,很多好的點子,改善工作效率的點子都是幾個人討論后私下晚上搞出來,然后反復實踐用于生產(chǎn)的。
一般來說業(yè)務kpi對于能力強的朋友來說不會太難,所以對他們的期待也會更多:
有強烈的意識,能深刻了解到當前項目性能的缺陷,開發(fā)效率低下的原因,并會找尋處理辦法
很多團隊在快速迭代中會開始“欠賬”,時間久了就不愿意還,問題的存在擱置需要想辦法去解決,團隊成員是看得到問題的,沒人說,沒人做是因為知道那是坑,你如果能解決的話,一到二次便能提升自己在團隊中的位置。
好的前端應該有良好的架構設計能力
首先,好的前端能向人清晰有條理的描述自己的技術方案,并且讓人聽得懂!
然后架構設計能滿足長久的需求發(fā)展,就算業(yè)務頻道擴大了10倍,用戶量增加了100倍,也不會有根本的變動。
好的前端應該具有良好的交流能力
對內,好的前端需要了解團隊成員的性格與能力,做出適當?shù)娜蝿辗峙浞纸猓粚ν猓枰獡屨紭I(yè)務還不能產(chǎn)生利益沖突,這類人是項目推進的主力。
小公司的前端應該怎么做
不是所有的小公司都這樣,但是我見過的小公司的前端都在撲業(yè)務,并且疲于奔命,這個是個惡性循環(huán),第一次做業(yè)務:
加班趕業(yè)務-業(yè)務結束輕松一周-加班趕迭代-業(yè)務結束輕松一周-加班新業(yè)務-業(yè)務結束輕松下……
偶爾你會問這些朋友為什么沒有什么積累,得到的答案基本是一致的,忙啊!他們忙起來的時候是真的很忙,但是第二次如果依舊這么忙的話就有問題,第三次還這樣就是團隊不健康了,一個好的做法是:
① 完成前后分離,這步做不到,后面也不用做了
② 形成幾套UI庫
③ 根據(jù)業(yè)務形態(tài),形成公共業(yè)務
④ 前端重復工作工具化
⑤ 形成優(yōu)化體系
⑥ 形成統(tǒng)計體系
⑦ 建立頁面轉化漏斗模型
⑧ 做ABTesting方案
......
首先,無論出于什么考慮,前后一定要做分離,如果有SEO需求,那么再后續(xù)推進nodeJS方案,畢竟現(xiàn)在不給錢想排前面還是很難,SEO基本沒意義。
其實,小公司有很多坑可以占住,這個會幫助你建立團隊威望,下面我舉幾個細節(jié)點說一說。
UI庫
UI庫的形成與UI庫的多少將決定你后續(xù)項目重復工作量的多少,這個UI庫需要注意幾點:
① UI是否可重用
② UI是否可定制
比如讓很多朋友去做這個時間選擇器,做出來就真的是時間選擇器,如果讓他換成城市選擇器,就全傻眼了:

③ UI是否可拆分,可聚合
還是以上面UI為例,這個組件事實上是一個聚合組件,由一個select組件與一個彈出層組件組成,你的UI是不是可拆分是評價他質量的一個很大考慮點。
……
公共服務
公共服務可以說成一個大一點的“UI組件”,但是他是與業(yè)務相關的,UI來說一般不會與業(yè)務產(chǎn)生耦合,以上面的日期選擇器來說,無論他裝的是日期還是區(qū)域都是可以的,并且不應該請求服務,他是純凈的UI組件。
而公共服務是不純凈的是一定與業(yè)務相關的,移動端比較常見的公共服務是:
passport
包含登錄注冊、個人資料管理,甚至包含一些認證相關的,與公司賬號相關的操作,登錄注冊是各種活動,各種業(yè)務頻道都可能會使用的業(yè)務,這種東西是必須服務化的,但是很多小公司都沒做。
因為公共的特點,頁面設計最好中性一點,其中幾個常用的頁面,比如登錄需要包含以下設計:
① 樣式可定制化(彈出層、獨立頁面什么的都是常事)
② 回退可定制,其實所有的公共服務回退按鈕都是需要定制的,登錄成功去哪個URL登錄失敗去哪個URL,點擊瀏覽器回退去哪個URL都得約定,少一個都不是公共服務
③ 單點登錄,事實上初期根本用不到什么單點登錄,甚至大家都不是跨域的,所以后續(xù)需要再支持即可
還有很多與passport一樣的公共業(yè)務,比如:
① 錢包服務,包括用戶支付訂單相關管理
② 城市列表,這個要考慮參數(shù)如何傳遞
③ 反饋系統(tǒng)
④ 公司介紹
除了面向C端的公共頁面服務,還會有面向B端的統(tǒng)計平臺相關。
前端工具化
靜態(tài)資源處理
評價一個前端團隊是否優(yōu)秀成熟的評判多以團隊工具化的程度,一個簡單的例子是:
① 你們前端靜態(tài)資源是如何組織的、如何打包的
② 你們前端靜態(tài)資源是如何解決緩存的(比較好的方案是MD5)
上面兩點可以使用grunt/gulp一類的構建工具輕松做到,如果有公共框架文件還會需要引入種子文件的概念
跨域問題
另外,所有前端團隊都會遇到跨域問題,特別是前后分離后,服務器端只提供API接口,前端代碼隨便在哪都能運行,那么這個時候你是怎么做呢?
① 使用fiddler&charles做代理
② 提供測試服務器
③ 支持jsonp跨域
④ 支持cors跨域
那么這些方案,哪種最適合團隊,哪種成本最低(一般來說是代理),是我們需要考慮的
tips:我之前使用fiddler,現(xiàn)在換mac了使用charles,兩款工具十分優(yōu)秀,正則一塊的處理很好,推薦使用
移動端適配
從后端轉到前端的同學一般在業(yè)務邏輯上有一些天生的優(yōu)勢,但是往往在CSS一塊比較弱,如何在開發(fā)人員無感的情況下引入rem,如何與現(xiàn)有機制無縫的使用less,如何處理單頁應用中css的污染,這個是框架底層需要考慮的。
模塊化&組件化開發(fā)
團隊上規(guī)模后,如何使用模塊化開發(fā)處理協(xié)作問題;業(yè)務代碼復雜度上升后,如何使用組件化編程思維簡單開發(fā)復雜度,這些需要應用到項目實踐中,并且路徑是可復制的;
一些優(yōu)化手段,也需要工具化,框架化,讓開發(fā)人員無感。
前后端協(xié)作
前端與服務器端,開發(fā)速度未必同步,事實上很多時候都不是同步的,在已經(jīng)約定了接口格式的情況下,接口還沒有寫好,但是前端依然能寫交互,團隊是如何寫這種假數(shù)據(jù),這個方面實現(xiàn)會大大的提升工作效率。
訂單下降分析
如果在某一個時間段,全站的流量或者全站的訂單量下降了,你如何跟蹤這次下降的原因,如何最大程度上避免下次出現(xiàn)類似的現(xiàn)象,這個時候數(shù)據(jù)統(tǒng)計會避免我們成為瞎子,所以得盡快建立統(tǒng)計平臺,轉換率模型。
快速迭代,通過迭代來優(yōu)化產(chǎn)品,但是如果每一個迭代都完全顛覆了之前的設計,很多時候公司就是原地踏步,每邁出一步你要清晰的知道前一個版本哪里出了問題,針對問題做優(yōu)化,而不是頻繁改版。
這次改版后,你如何知道這次優(yōu)化就比上一次的好,而不是其它因素造成,ABTesting方案應該是每一個成熟團隊必須的,持續(xù)優(yōu)化這些都是建立在有效的數(shù)據(jù)監(jiān)控與意見反饋機制上的,我們不能做完網(wǎng)站變成瞎子。
結語
因為很久沒有寫博客了,又因為最近剛好來到了小團隊,有一些想法以水文的形式發(fā)出來與各位討論,希望對各位有用。
誠然,對于一個前端來說,要推動上述工作還是有一點難度的,但并不是不可能,前端對自己的定位要變,從前端工程師到軟件工程師。
我常常聽到很多前端自己都在質疑自己,或者就是膨脹到覺得自己團隊沒有什么可以做了,那么這個時候可以考慮下:
你們團隊的自動化、安全性已經(jīng)到位了嗎,效率就真的完全沒有上升空間了?
前端的重視程度需要你我一并努力,在大公司做前端難,在小公司做前端更難,你我共勉,最后補充下為什么回成都,以及回來的一些感受。
從一線城市到二線城市
幾年前,懷著想學點新東西的想法,我來到了上海,在這邊也確實學到了很多東西,關于學習有幾個必要條件:
① 好的項目
② 好的團隊
③ 加班總結
很多時候不是一些朋友不努力,但是PV上億的項目國內真的不多,創(chuàng)業(yè)團隊這種機會就更少,所以根本沒有這種機會,這個時候看人家做的很多優(yōu)化就是看熱鬧,似乎懂得了什么,其實什么都沒懂。
就算是攜程最好的時光,依舊有很多團隊沒有跟上好時候,比如不在無線的團隊,那么無線團隊的經(jīng)驗包,如果不是真正好學的人是接收不了的,就算我處于無線團隊,native團隊中很多經(jīng)驗包都是遺漏狀態(tài),而且無論怎么打聽都是打聽不出來的,就比如native資源更新機制,我就前前后后關注了兩年,從各處零碎的得到了很多知識,現(xiàn)在看來依舊不夠系統(tǒng),不可謂不遺憾。
又比如有一次攜程全站出現(xiàn)了一個重大BUG,因為是server端的問題,自己當時目光短淺沒有去深入,到現(xiàn)在想深入都沒有案例了,只能說機會稍縱即逝啊!!
所以就算后來進入百度了解到了fis的好,但是真正想去深入的話怎么都摸不著門道,只能學習一些思想走;這個也是一個框架成型后如果后面的人來維護怎么都維護不好的原因,因為他們找不著精髓,后來的人甚至會噴框架的各種不好,自己卻找不出方案。
這個就是一線城市的一大好處:
一線城市,具有好項目(PV過億),好團隊的機會要好很多,只要你努力上進,就能收獲很大的經(jīng)驗包。
這就意味著,只要你愿意學,就一定可以收獲很大的經(jīng)驗禮包,這里有很多熱心的大神,愿意與你討論,愿意與你分享,而你的分享也會帶給你快樂與成就感。
另外,外面的薪酬包也要比二線城市大得多,就我而言,回成都薪酬包只有原來的70%不到,如果這次沒回成都的話,待遇應該會有長足的漲幅,但是最后還是選擇的歸蓉。
關于機會好的偽命題
很多人到一線城市打拼是覺得那里機會好,事實上這是一個偽命題(在我看來),不可否認沿海的機會很多,但真心說不上好。
職場這個東西真心不好說,你能力強需要人賞識你,你上去了還得你的老板上去,你老板上去了,還得你老板的老板也上去了,如果中間有一個老板失勢了,那么新的老板可能會洗牌,情況好的話你留下,并且依舊令人尊敬,但是更多的情況是可能你得卷鋪蓋走人,互聯(lián)網(wǎng)離職率高不是開玩笑的。
能力強不等于職位高,因為一般來說你的能力還沒有那么強,能玩轉公司的畢竟是少數(shù),搞技術的更多的情況還是比較實在,想安安靜靜寫代碼,很少搞政治斗爭,又心高氣傲,又比較脆弱,面對不合理的KPI,或者被產(chǎn)品無限制的坑,是非常容易離職的。
外面優(yōu)秀的人扎堆,所以真的機會只是相對的,你如果抱著學習收獲經(jīng)驗包的想法出來會收獲很大,如果你經(jīng)驗包已經(jīng)夠了,想更往上發(fā)展,那么這個是很難的,因為管理或者交流未必是開發(fā)擅長的。
再往上會關注業(yè)務發(fā)展,關注KPI,需要大量的產(chǎn)品知識,自己甚至會成為產(chǎn)品,這個時候搞技術的時間就會相對變少,但技術不好又很難讓技術員工服眾,光是技術好又上不去,竟然有點矛盾。
我身邊就有幾個人出去做CTO,結果團隊剛剛上軌道就被掃地出門了……
另外,就是外面leader很辛苦,特別是團隊上升期,好的leader會陪著團隊加班,會很晚,我們之前好的老板(35歲左右)都是陪著團隊加班的,總之錢不好賺,如果leader偷懶,幾年下來可能會廢掉,被淘汰掉,這個中年危機是不可忽視的。
雖然如此,一線城市的機會和成功的幾率依舊比二線城市好得多,而你愿意拼搏,善于思考,是可以發(fā)展的很好的,那么我們?yōu)槭裁匆ザ€城市呢?
為什么去二線
去二線城市主要原因就是房價貴,房價太貴,同樣的錢可以在成都買三套房子了,而且一線城市買的房子很偏遠,上班得一個多小時,下班又得一個多小時,這樣來說是相當令人疲憊的。
然后外面工作節(jié)奏太緊張,甚至已經(jīng)緊張到?jīng)]有生活了,有追求的人995是常態(tài),996也是有可能的,這個會不斷的透支你的身體,年輕點還好,稍微上點年紀,有了家庭的話就不行了,會考慮的更多了。
比如在一線城市落戶的條件比較苛刻,小孩教育問題、父母養(yǎng)老問題都是你需要考慮的,想著想著,就會有一個想法,要不回老家算了,又不是找不到工作,于是就回來了。。。。。。
回成都后的感覺
回成都后,第二天便出差去北京,整個清明節(jié)都在加班,完了回成都也一直在加班,尼瑪這邊的工作強度一點也不比一線城市低啊!!!
但是,周末可以過得很愜意,一個月老媽也會來一次做些好吃的給我們吃,這種幸福感和歸屬感是外面沒有的。
今天,我8點就下班,在軟件園區(qū)信步而走,走了10多分鐘,然后坐著公交車20分鐘回家了,這種感覺還是很不錯的。。。。。。
二線城市依舊會面臨外面的各種挑戰(zhàn),不想面對依舊上不去,在哪都是面對,那就回老家面對咯。。。。。。
專注分享當下最實用的前端技術。關注前端達人,與達人一起學習進步!
長按關注"前端達人"

