百度FEX劉平川:做最專業的前端(圖靈訪談)

盼盼姐發表於2014-07-02

劉平川,百度前端基礎技術團隊FEX負責人。從“有啊”和“樂活”到如今的FEX,一種創業的熱情一直跟隨著他。FEX的關鍵詞包括開源,前端,全棧,和專業。雖然他們是基礎技術團隊,但是就像“內部創業一樣”,他們也需要時刻面對來自產品線的各種反饋。劉平川希望可以讓FEX的技術影響擴充套件到百度,乃至整個行業。但他也坦誠說,“我們需要很強的抗壓能力”。

百度FEX劉平川:做最專業的前端(圖靈訪談)

激情和責任

你從什麼時候開始程式設計的?

劉平川:真正開始程式設計是上大學之後和朋友去做了一個網路監控系統,接觸前端是當時工作關係寫了幾個指令碼的UI開源元件。後來2008年當時百度在做“有啊”的C2C,我對這個事情挺感興趣。當時我雖然學了計算機,但實際上並沒有真正從事這個行業,有些遺憾,於是我就來到了北京,真正開始了前端工作。

聽說在此之後您還有一些創業的經歷,能簡單介紹一下嗎?

劉平川:我在百度兩年半後從“有啊”拆分出去創業了,叫“樂活”。當時有很多“有啊”的同事也紛紛出去創業。大家做C2C的時候聚到一起是因為有一個理想:把“有啊”這件事做成。雖然“有啊”最後沒有做成,但是大家心裡面都萌生了一個想法:下次一定要做出點事來,這也是我願意拆分出去創業的原因之一。

我在樂活創業一年多遇到很多問題,最後創業算是失敗了,但是學了很多東西。最大的感觸是創業不是有想法就能做得成,大多數的創業其實是水到渠成的事,因為需要天時地利人和。

後來我回到百度,加入了FEX團隊。回去之前我就想,這個機會如果再晚一年可能我就不會考慮了,如果過了當時的年紀要真正再去花所有的時間和精力去做好技術是很難的。所以既然來了,我就希望能在FEX團隊安靜地把技術做好。

剛來到百度FEX時情況是什麼樣的?

劉平川:原來這個部門人還挺多的,整個百度所有的前端都在這個部門。在我回百度之前,前端已經拆分到每個垂直部門了,還剩下大約一個60人左右的團隊,支援公司很多產品線上前端基礎技術上的業務。之前對這個部門瞭解程度有限,只知道這個部門有些不一樣,也有很多技術牛人。但是怎麼樣去做好,其實說老實話我不知道。我當時的想法就是希望能讓這個團隊在這個行業裡面留下一些痕跡而已。

60個人已經是 3 個貼吧的規模了,如果有60個人,就不得不幹60個人的活。這個規模至少得把好幾個大產品線給接下來,我們暫時搞不來。人寧可少也不要多,人一多很多事情沒法做。我之後做了很大的調整,把一些方向,比如Flash拆分到垂直產品線去了,現在只有30人。這麼做的目的只有一個,就是為了個人和部門的長期利益。

我自己是很有激情去做好這個團隊的,但很多人可能覺得我是一時興起,也就幹3個月熱度吧。我希望給每個人一個舞臺,團隊平臺做到足夠大的影響力。一年過後,我可以告訴大家,今年團隊的狀態很好,已經不需要太多管理了。

你在這裡面的角色是什麼?

劉平川:我其實現在走的是M(管理),不是T(技術)。我的角色就是在各個負責人之間找我應該做的事情,為我們中長期的目標打算。比如我們團隊的技術影響力,部門技術更長遠的規劃,我們明年做什麼,怎麼把部門做得更好。

去年底我們規範了執行機制,整體所有方向上包括技術規劃和Review機制,還有各方向目標都公佈出來。週報上面會寫負責人是誰,衡量標準是什麼,需要多少人力,什麼Level,在什麼階段交付,這個事情對產品線的價值是什麼,都會寫在上面。今年很多事情都比較上正軌,後面才考慮做技術品牌和技術規劃。這件事情團隊其他同學,比如多益和牛堯付出很多,我只是做一些順水推舟的事。

今年我們的重點是線上化,包括很多內容:資源打包優化、全流程優化、資料監控,等等。也包括我們把PC端的一些複雜應用Web化,這也是今年的一個目標。在技術影響力上面,從我們的一些開源專案也好,跟業界的接觸也好,我希望通過外部的資源和資訊引入,推動內部更快地發展。

你們和產品線的關係如此緊密,你的壓力是不是很大?

劉平川:我們各技術方向負責人壓力確實會比較大,我們有機會可以接觸到產品線裡所有的人,產品線自然可以看到我們的每一個階段。每季度或每半年,他們要看到我們的產出是什麼,如果沒有很合適的交代的話,會受到產品線的質疑。我們也曾經遭遇過做了幾個技術專案都沒有得到認可的情況。可以想象這就像內部創業一樣,創業需要很多的嘗試。我們做得好了,每個產品線都會多給點資源。但如果我們做不好,就什麼都沒有。

無論是否做成我一直堅信的是,只有沒做好的事,沒有做不好的人,態度是首要的。一個團隊可以做很多事,一個人可能這個事情做不好,做另外一個事情就好了。一個人發光發熱需要時間,也需要一個巧合。

技術能解決什麼問題

你認為技術/工程師和產品的關係是什麼樣的?

劉平川:我曾和一個朋友討論技術,他的一套理論讓我啞口無言。他說,設計模式就是人想出來的,也是一種想法的抽象,你覺得設計模式做的就對了嗎,我的程式碼亂是錯的嗎,如果我把技術問題解決了,你為什麼要管我是怎麼解決的呢,是否是你們對技術的評判標準有問題呢?後來我想,是不是我們對程式碼優雅這個問題已經形成了一些思維定式,對於程式碼雜亂和提供問題快速解決方法的人有種不屑一顧呢?

我的一個朋友創業,他團隊中的某個工程師,一個人僅用了一個月的時間搭完產品上線了。雖然技術的可維護性幾乎沒有,那你說這個人的技術是好還是不好?這件事情沒有辦法用傳統的思維來評判。原來的標準其實都是一種大公司式的評判標準。雖然他的程式碼別人無法維護,但是他做的事是有價值的,創造的經濟價值比傳統科班出身的人多得多。後來其他工程師維護起來說程式碼太亂,用了3、4個月把程式碼改好。而這種能闖的人對創業公司其實更具有吸引力。

設計哲學這件事恐怕沒有人能講清楚。所以有些事不要太較真,要看這件事是為了什麼。如果過兩年這件事仍然對我們很重要,那就有價值,但是從大多數情況來看,一般過半年就不再重要了。

技術永遠是一種手段,而不是目的。產品最終結果不在乎你技術有多牛,只在乎你能把產品帶到什麼高度,在這過程當中能解決多少技術問題。

為什麼要工程師自己擔任產品經理?

劉平川:我們沒有產品經理,技術需求來源最主要從產品線來,我們需要了解工程師開發中的痛點,產品中的體驗問題,找到合適的切入點開發出靠譜的技術方案。

現在每個技術方案負責人都是方案的產品經理。我要求團隊的同學需要用這些做產品的思路來做技術,這樣思考才會技術專案做得全面,系統,也更具有說服力。

一些比較具有前瞻性的專案我們可以先做原型,原型做完後再給到產品線中去,如果不回到產品線裡去,我們肯定會做偏,技術會沒有宿主。每個人都會有很多技術想法,如果你最後沒有落實到產品線的話,就沒有意義,所以我們做技術需要用產品的視角來做。

技術方案的推廣上原來我們大多是強推著產品線工程師在用,甚至變成他們的KPI,這是有問題的。強推還不成熟的技術反而會引起負面效果。後來我們分階段對待,不用行政手段。把技術方案的使用廣度作為一個階段性的衡量標準,比如當某項技術方案質量做得足夠好的時候,再去看一個週期內落地了多少產品線,這樣的評價才更會有意義。負責人需要每個階段都有相對明確的定義,讓每個工程師都能理解這個目標。

技術人員身兼經理的必要性在哪?

劉平川:基礎技術的團隊與產品業務團隊有很大的不同。以前我帶過幾個業務團隊,我個人的感覺是產品業務團隊的執行是由產品業務來驅動的,經理協調“人”的時間比較多。

而在基礎技術團隊,是技術驅動專案,用產品思路做事,沒有職能體系之間的協調會影響效率的問題。我們很少開會,每週固定的會議只有部門例會。團隊之間技術討論是最多的,所以我們會議基本都是在技術討論與評審,我也需要參加,還要拍板決策。

如果基礎技術團隊的經理只負責協調人而不管技術還會有一個問題。由於經理沒有辦法判斷技術的趨勢,缺乏技術創新,團隊的技術視野會逐漸受限。這樣的經理思維方式也不會跟一線工程師在一個頻率上面,溝通不了。所以我認為基礎技術團隊的經理應該和高工有同樣的職能,經理就是擁有行政權利的工程師。

您曾經提過技術的止盈止損這個概念,是指什麼?

劉平川:技術既需要止損也需要止盈。很多技術專案可能當你做到一定程度之後,會發現它的意義已經不是那麼大了,這個時候就應該果斷地止盈或止損。

比如說編輯器,我們的UEditor編輯器在行業裡面,至少在國內還算可以了,現在很多外部公司也都在用,我們每天都會收到問題反饋郵件。但我從去年就在考慮,我們這個組的方向不能只限於做編輯器,應該把這個組的視野拓寬一點。是不是可以將現有PC本地端有的東西,放在Web上面去試試,我們認為Web有這種能力,可以解決很多現有階段Web的複雜功能。在今年,原來的富文字方向也轉變成富應用方向,目前百度腦圖、向量視覺化公式編輯也都是這個方向的產出。

止盈止損是經濟學裡的一個概念,即是適可而止。放在技術上大概的意思就是像編輯器那樣的成熟專案,可以暫時減少人力放緩發展。把人力資源抽調配到目前更具有創新性的其他技術或雖不成熟但需要快速突破的方向上。我們可以一直抱著舊的東西不放,這塊技術可以讓我們活下去,但我一直認為,如果只做那一塊技術而不願意去擴充套件,其實就太小看我們自己了。

今年您參加了韓國舉辦的WWW年會,有什麼見聞?

劉平川:今年WWW大會在韓國首爾,主要的贊助公司是Naver,他們不僅有搜尋引擎,還有一個叫Line的App,就是微信的韓國版。在韓國Naver就是百度+騰迅的產品架構,國內很多大網際網路公司都“抄”過這個公司的產品。

我們國家的網際網路公司在國外的知名度還是不高,更談不到影響。與會場的一些參會人聊天時發現,他們不太清楚中國的網際網路情況,也不知道百度、淘寶。後來我們提到百度是本次贊助商之一,他們才知道百度。 在韓國找路線的時候沒法用百度地圖,只能用Google。用它可以通過中文搜尋酒店景點名字,包括公交路線也都能找到。如果沒有Google 地圖的話,我們幾個沒有一個人能在首爾出行,這給我觸動很大。真正做得好的技術可以利用到很多行業,影響到很多人。

FEX

您能簡要介紹一下FEX正在從事的開源專案嗎?

劉平川:開源在FEX是一種心態,接受review與check,接受反饋,希望用UGC思路把技術專案做得更好。目前我們也是這麼踐行的,從專案程式碼到面試題,以及部落格和style guide,都接受Pull Request和Issue。

現在我們的開源技術專案大家熟知的有七八個,FIS、編輯器、腦圖、公式、HTML5上傳元件、移動元件。暫時都是工具和元件類偏多,目前star總量有近2000,fork也有大幾百。

KityMinder是我們最新推出的專案,它是一個線上腦圖編輯器,已經和百度雲盤打通了。從技術角度來看,是因為之前我們有一定的向量技術基礎,所以初期腦圖原型我們開發時間並不多,1個人不到1個月的時間開發完成上線,現在也在接受反饋,不斷迭代。

上線以後,從Web內容消費與創作的產品思路來看 ,雲盤解決了檔案儲存的問題。而檔案內容,例如辦公系列,教育圖形公式的一些內容創作,還有很大的可線上化空間。我們做的話,既能沉澱技術,還可以幫百度做很好的內容創作工具,落地到閱讀、貼吧、知道、百科或雲,甚至可以誕生出一個完整的創作平臺。從對腦圖的反饋來看,大家非常希望出現更多Web形式的全端線上檢視、編輯與分享的工具。

FEX上最受歡迎的專案FIS,現在的發展狀況怎麼樣?都有哪些公司在用?都有什麼人在貢獻程式碼?

劉平川: FIS 的使用人群可大致分成三類。

第一類是百度內的工程師,隨著產品線使用廣度的不斷擴寬,FIS已成為公司大多產品線前端開發的標準。我們把技術服務做好,有問題第一時間解決;一旦有新產品線使用,我們會有同學跟進到產品線裡進行培訓。公司內反饋最多,我們也最為關注,我們會將他們的反饋抽象放到FIS上,慢慢積累,使得FIS從量變到質變。公司內其他團隊為FIS貢獻不少,比如即將上線的NodeJS框架,是與文庫同學一同合作開發的,可以說FIS是在所有產品線的工程師幫助下才能走到今天。

第二類是從百度離開後將FIS轉而帶到其他公司的工程師,這是對FIS的認可。他們認為它可以為新的環境創造價值,解決新環境的問題。現在至少6家公司都是這樣,同時他們也會對FIS貢獻部分程式碼。

最後是通過國內外的技術雜誌、講座上看到對FIS技術的介紹,感興趣並使用的工程師。這些工程師從瞭解到使用的週期相對會比較長,目前貢獻的程式碼不多。但我們現在也很重視這樣的人群,所以對文件不斷維護,並持續更新,而官網最近也把FIS重新定位成前端工具和用工具及框架生成的解決方案,同時增加了使用解說視訊,幫助大家更快地瞭解和使用FIS。

FEX名字的由來?

劉平川: FE代表前端(front-end),X代表了每個人都能獨當一面,不僅所有事都瞭解一些,而且還有一個專長。就像X戰警一樣,每個人都有自己獨特的能力,但是作為團隊可以一起把事情做得更好。

在網站上可以看到FEX的口號是“Best or nothing”,這看起來是一個比較有野心,也比較有風險的情況。你們怎麼平衡跟現實之間的關係?

劉平川:最早我們自己也沒想清楚怎麼樣定位自己。無論是基礎技術組還是通用組,感覺都不能很好地體現我們的能力。去年經過半年時間,我們逐步精簡後把“專業”作為我們的定位,所有的技術專案、文章與踐行都圍繞“專業”來做。

與產品線合作,我對團隊同學有幾個要求:第一,我們一定要在這個方面做得比他們更專業更全面;第二,別人能做到的我們也要能做到;第三,我們也要去做業務,不要說只做基礎技術部分,業務基礎一樣要做專業。

你們團隊裡面的內部構成是什麼樣?

劉平川:目前一共是4個大的方向:

  • 工程架構和流程優化,能力上可以理解為“全棧”。包括百度幾乎所有產品線在用的FIS、靜態資源自動優化打包優化、持續整合、全流程優化等,同時也在一定程度上承載我們其他方向元件與工具的輸出。

  • 監控評估,包括現在幾乎所有的前端資料的收集與監控,比如前端效能的監控,瀏覽器新特性的檢測,異常的監控,XSS檢測。這其中還包括評估,也就是針對監控和產品核心指標的關係,以及我們自己的技術專案應用到產品線裡的價值評估情況。

  • Web富應用,有編輯器,個性化的視覺化展現,百度腦圖,視覺化的向量公式編輯等。

  • 還有就是全端技術,比如WebUploader的快速上傳元件、移動端的元件庫GMU和之前在做的輕應用中的輕元件。

輕元件是怎麼回事?

劉平川:原來的元件要麼是原生客戶端的一套元件,要麼是Web的一套元件,我們認為輕元件就是這兩套的綜合。比如一個滑動的影像展示,如果你要在目前的Web上展示的話,它的流暢度不高,用原生的話就會很快。所以如果你用JS在我們提供的API上寫程式碼,它會在不同的執行情況下用不同的方案。這就像PC時代Flash外掛的思路,沒有Flash外掛就變成最原始的顯示,有Flash執行時體驗會更好。這就是一種輕元件的思維。

為什麼你們需要的人是全棧工程師?

劉平川:我們在FEX部落格上招聘要求全棧/全端工程師,還要求充分的自驅。在公司內部我們團隊會維護自己的伺服器和知識庫的系統與機器。這些搭建都是我們自己完成的。雖然前端資料系統的Hadoop不是我們自己搭的,但是MapReduce的指令碼都要自己寫。

因為我們的工作不是狹隘的前端領域,也不侷限於語言,需要涉及前後端。Web伺服器以前就叫前端,開發流程優化這些工作我們都做。而流程的優化像持續整合與前端的運維就涉及到傳統的前端和後端,這就要求我們在技術上也要掌握這個方向。

基礎團隊對於整個公司的價值是什麼?

劉平川:我們現在想得比較清楚,是因為也經歷過迷茫。去年各方向的負責人曾坐在一起討論過我們應該做什麼業務,我們做的業務應該有什麼樣的特性,我們應該怎麼樣跟產品線合作,整個前端和後端怎麼合作。討論過後我們發現,基礎團隊做的事應該是業務團隊“重要而不緊急”的事。

我們認為對於業務團隊來說,基礎技術可要,也可不要。沒有我們業務團隊也能招人做,但業務團隊需要我們,是因為有我們他們能做得更快更好更專業。如果業務團隊使用了你的技術,那麼基礎技術團隊的水平就決定了業務團隊開發的技術架構的平均水平,這體現在開發效率、開發質量、頻寬利用與人力成本上。

帶領FEX團隊的過程中,你有什麼感觸?

劉平川:很多的觸動都是這個團隊的同學給我的。我認為他們很多人比我優秀,我在團隊中的作用就是讓大家同心協力,有一個目標感,一起把一個事情做好。

比如團隊的多益,技術非常好,之前我一直覺得應當給他技術上挑戰很大的事情去做。後來他主動去搭團隊的blog,把原來分散的程式碼倉庫轉移過來。而且他在部落格上也發表了很多文章,也主動寫了我們的開源面試題。我問他,你會不會期望做更多技術上有挑戰的事,他回答說,他很希望能做這些幫團隊擴充套件技術影響力的事情。很多技術能人可能比較喜歡獨善其身,不願意把個人與團隊放在一起。我很幸運的是團隊裡都是既追求技術理想,也願意配合團隊目標的能人。團隊有共同的價值觀,每位工程師都希望把各自方向的技術做到極致。

百度最佳員工我們部門就有5個。我們還拿到公司級別的 2個平臺工具獎,1個最高創新獎。其實大家心裡面都希望未來能拿一個公司的最佳團隊獎。我覺得既然大家都能這樣想,那我也不怕有什麼事情做不成了。


更多精彩,加入圖靈訪談微信!

相關文章