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

jopen 10年前發布 | 25K 次閱讀 百度

        劉平川,百度前端基礎技術團隊 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 個最高創新獎。其實大家心里面都希望未來能拿一個公司的最佳團隊獎。我覺得既然大家都能這樣想,那我也不怕有什么事情做不成了。

                    <span id="shareA4" class="fl">                            
                        </span>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!