勾三股四:用技術追尋世界的確定答案
2015年,他發起阿里Weex專案,實現「一次編寫,三端執行」。他被稱為「Weex之父」。
2016年,阿里宣佈開源Weex專案,年底將其捐贈Apache基金會。2017年,他在微博宣佈退出Weex團隊。
外界對Weex的討論也好,爭議也罷,他淡出了大眾的視線。
下一次外界聽到他的訊息,是在2017年底,卻完全與技術無關。原來,他和幾個同事一起,組成了阿里996樂隊。大家才發現,原來程式設計師們不僅會寫程式碼,寫歌也蠻好聽。
他和Weex的故事是怎樣的?他是怎樣的一個人?今天,圖靈訪談帶你走近勾三股四,一位自稱「有點叛逆」的前端工程師。
移動端崛起
勾股2007年大學畢業。他大二學完基礎課程之後,就轉到了自己很著迷的軟體工程專業。畢業後,他去傲遊瀏覽器面試,筆試之後現場對方只問了三個問題:「HTML熟不熟?JavaScript熟不熟?CSS熟不熟?」他不怵,說了三個「熟」。面試官竟然沒多問,直接給了他offer。
那是中國網際網路風起雲湧的時代。當時瀏覽器才剛興起,大家用得最多的還是Office、QQ這種桌面傳統軟體。他們經歷了所謂的瀏覽器大戰。
傲遊做了大量革命性的創新,不僅推出免費版,支援多語言,用單視窗多標籤代替了多視窗,推出廣告過濾功能,而且它獨創瞭如今瀏覽器必備的線上收藏系統。2007年,傲遊霸佔了非常高的市場份額,市場佔有率僅次於IE瀏覽器。
勾股說:「在一個蓬勃發展的創業公司,每天都給你很多成就感。而且個人也在隨著公司一起發展,不僅是技術,而是能夠真正感受到整個行業的方方面面。」
然而,隨著移動端崛起,PC瀏覽器市場開始呈現疲態。2010年,傲遊的使用者大量流失。2012年,它在中國大陸的市場佔有率已經不足1%。
勾股坦言:「我們在PC端有非常狂熱的忠實使用者的支援,收入也比較穩定。公司其實也看到了移動網際網路的趨勢,但可能沒有抓住這個機會。」
與此同時,2013年,阿里的戰略是「All-in 無線」。
一方面,勾股看到移動網際網路的發展,很想參與和探索;另外,很多他認為很厲害或者關係很好的朋友在阿里,淘寶的居多。於是,在winter的推薦下,他加入了阿里。「winter打電話給我,說:‘有一個好訊息,有一個壞訊息。好訊息是我們發offer給你。壞訊息就是我們要996。’
「我當時的第一反應當然是比較興奮啊!反正我剛去那邊,也需要花比別人更多的時間熟悉工作。既然這樣的話,就有更多的人晚上陪我了。當時我是這麼想的。」
那段時間他印象深刻的就是每個人都很拼。
「從最上邊到最一線的員工,每個人都是在玩命。可能一方面是工作壓力,另外一方面,我看到很多人談到移動技術的發展這些東西時,真的是兩眼放光,有講不完的話想跟你分享。確實是有那股熱情在。」
2016年,手機淘寶和淘寶的合併標誌著一個時代——移動端的崛起。手淘的創業之路算是告一段落,無論從技術還是從業務,都和淘寶網的PC業務做了更深度的整合。
Weex的故事
2013年,阿里「All in 無線」戰略如火如荼地推進,大量資源向無線業務傾斜。當時,勾股所在團隊負責手機淘寶的前端業務,在快速向前的同時,他們面前也擺著大量的問題。
其中,iOS、安卓,還有Web,這三端的業務,可不可以只用一套程式碼解決?
iOS和安卓的釋出節奏有限制,比如iOS每月發一版。但淘寶每天都要做新促銷活動或者上新功能。有些東西這個月沒趕上,就只能趕下一個月。所以可不可以找到一種方式,能夠隨時釋出更新?
他們一直在尋找解決方案。
2015年初,React Native正式開源釋出了。其實,自從2014年底的一個技術會議對它有所介紹之後,大家就一直很期待,因為它看上去能夠解決這兩個問題。
但在嘗試之後,兩大困難讓他們無法忽視。
第一個困難是當時React Native的版本還很早,迭代非常快,並且每次都有大幅度的改動,團隊跟不上這個節奏。
第二個就是,很難在它上面加自己的東西。這個技術方案的定位並非解決他們面臨的動態性問題,導致很多細節用起來比較牽強。
歸根到底,他們還是繞不開面前的難題,外來的解決方案似乎並不合適。
乾脆還是靠自己吧!
Weex前端團隊
2015年夏天,勾股發起了Weex專案,一顆探路石,一個靈活的解決方案。
「可能我在這個過程當中扮演的角色,是在一個特定的階段,我同時看到很多資訊和知識,其他人未必同時看得到。然後我有機會想到把它們組合在一起。
「第一個東西是在阿里內部的專案,它可以接受一段JSON的資料,然後渲染成Native的介面。這個工程我2013年加入阿里的時候就已經在做了,為Weex提供了技術積累。
「另外,第二個東西是Vue.js,當時知道它的人並不多。我發現它能很好地優化前端開發體驗,以及處理前端框架中間JavaScript的這部分。2015年夏天深圳的JSConf上,剛好尤雨溪也一同參會,我們當面聊了幾句,交流了這個專案。他當時給了我很多鼓勵,也跟我分享了他對一些技術細節的看法。
「第三個當然就是Web standard,包括W3C,以及其他Web規範。首先,它可以解決很多通用的一些技術問題。而且,它的一些規範和API的設計是由很多厲害的科技公司沉澱下來的結論,非常經得起考驗。」
三大武器雖已備齊,現實遇到的困難卻比預估的更復雜。
「最大的困難,坦白講就是三端不一致。
「不光是從技術角度,就是API的設計不一樣。更困難的在於,因為大家的技術棧不一樣,整個思考問題的方式,甚至工作習慣都不一樣。所以,要讓整個團隊在一起工作,做出一個讓大家能夠信服的技術方案,這是真正具有挑戰的地方。」
這個難題,他們寫出了怎樣的答案呢?
2015年的雙十一Weex首秀,歷史上第一次把Native級別的體驗和穩定性帶到了天貓雙十一的移動會場。
如此驚喜的效果不僅讓Weex團隊感到興奮,也獲得了技術團隊負責人的認可,給了Weex專案更多的支援和信任。
2016年雙十一,Weex覆蓋了99.6%的會場頁面,頁面的開啟速度、滾動的流暢性都保證了良好的使用者體驗。
Weex的意義
目前為止,一切都很順利。
2016年初,阿里決定將Weex開源,年底宣佈將Weex專案捐贈給Apache基金會,並且宣佈了與Vue.js的官方合作。然而,這卻使Weex引來了巨大的爭議,外界對專案後續維護問題產生了質疑。
2017年初,專案發起人勾股發表了一份宣告:不再是Weex團隊的一員,離開淘寶,新的工作內容已與Weex無關。
事情的發展讓外界迷惑不已。
Weex專案以及手機淘寶內部,經歷了怎樣的變動?
起初,在移動端崛起的背景下,每個團隊都在摸索前進。移動端的開發形態和模式應該是怎樣的?Native工程師有自己的想法,前端工程師也有自己的想法。直到Weex出現,越來越多的業務團隊的技術棧逐漸地穩定下來。
這種變化,從技術角度來說,大家做事更有層次感了。有些人會維護Weex開源專案的核心的框架,有人做一些Weex外掛或者擴充套件,還有一些人會專注在最上層的業務開發。大家的分工和團隊協作方式變得更加清晰。
另一方面,人員結構也在逐漸地發生變化。有人適應,有人不適應,有人來有人走。每個人都在變化的程式裡,包括勾股。
他說,一面的確有被動的因素存在,另一方面自己在想,不如主動地去擁抱變化。
而今時隔兩年,他坦然分享了自己對這個問題的思考:Weex專案的意義是什麼?
「Weex專案是阿里巴巴第一個願意以官方的身份,並且主動地去擁抱開源社群的。
「其實阿里在Weex之前也開源了很多東西,都是以個人名義開源。當時在阿里內部,你想開源一個東西,流程很簡單,就是你自己做一個申請。公司只會做一件事情,就是看有沒有洩露公司的內部資訊。公司不是在主動地面對這個問題。名義上是阿里的,但其實就是個人的。
「其實我們也討論過這個問題,但擔心將它開源會給公司惹麻煩。
「後來,這個觀念在逐漸轉變。我們也在思索,能否通過開源的這個行為,爭取到更多開源社群的認同?甚至能不能招聘到更好的人?或者說能不能夠經營一個更好的開源社群生態?
「我很欣慰因為Weex專案讓阿里勇於做這個嘗試,主動地開源。而且阿里內部還重組了一個開源委員會,專門來思考這個問題。
「在這個背景下,我很早就清楚,這個專案是我發起的,但它不是個人的。如果想借助開源專案達到一些個人訴求,在Weex這個專案面前其實顯得有點自私了,因為更多的是要為公司考慮。而且我覺得這是一個很好的開始,未來更多的開源專案做下去,是需要站在公司的角度去思考的。這是一件雙贏的事情。」
面對Weex受到的質疑,他說:「Weex的開源,也是它意義的一部分。大家都需要一個過程去適應和感受,去了解開源文化以及一個國際化的技術交流社群,然後嘗試去解決問題。」
即使退出了Weex團隊,他也一直在思考它的命題。「我覺得這個問題還沒有結束,就是移動端的所謂UI技術或者是渲染技術,它將來會走向哪裡?
「其實相關的技術,我一直在關注或者在思考。剛好上個月,Swift UI也釋出了,它是iOS技術棧裡UI開發的一個新技術;包括去年的Flutter,我在Weex團隊的時候就知道這個專案,它當時剛開始,那應該是兩年前了。
「我覺得這些類似的技術一定是更靈活的。更靈活的意思是說,你可以更加快速,更加直接有效地去完成你的開發,完成你的釋出,然後讓使用者看到。這個很理想。
「還有,它是對開發體驗更友好的。無論是Flutter還是Swift UI,或者像React Native,Weex,都是在嘗試做一件事情,就是你程式碼寫完,能立刻在開發環境下看到渲染結果,或者看到一些友好的錯誤提示,除錯資訊,等等。當然另外一方面,很多東西也在逐漸地標準化和規範化,會進一步降低整個技術方案實施的門檻和大家接受的門檻。」
前端是什麼
到現在,勾股在前端已經有12年了。
從傲遊開始,他見證了整個HTML5技術從無到有的過程。「現在我們可能也不叫HTML5了。就叫前端或者Web。最早的Web前端只用來做一些簡單的頁面,到今天可以做複雜的應用。」
他剛加入淘寶時,前端是在UED團隊的,也就是設計團隊。過了一段時間,團隊結構變成了「UED團隊、前端團隊、技術團隊」。直到現在,他們已經完全歸屬於技術團隊。顯然,前端的技術含量在不斷地積累和提高。
勾股說,前端發展得非常快。「我舉兩個例子。一是今天越來越多前端框架嘗試著在編譯器上,以及從DSL,即所謂的語言層面去做文章了,甚至創造一種新的語言,這在早幾年是不敢想的。也許將來有一天你想做前端,你就要懂編譯原理。這個一點也不誇張。
「另一個例子是 WebAssembly,就是讓更多語言和更多技術參與到Web 這個生態當中。以前只是寫 JavaScript,將來有一天 Rust、Go、C++ 等,甚至整個軟體行業的積累都會進來,所以這是一個很開闊的空間。
「前端領域未來的可能非常多。渲染技術,比如3D渲染,包括AR,VR場景;還有比如工程化,這個也不是什麼新話題了;再有就是 Serverless,跟雲端計算有更多的契合。當然也包括剛才提到的更多的語言,更底層的技術棧,就像前端框架現在都深入到了編譯原理。
「所以最重要的就是開啟自己,就是沒有不可能。保持好奇心,不要主動向新的東西 say no。」
2012 年代表傲遊參加 W3C 會議時和 W3C CEO Jeff 的合影
他最近一段時間對一個東西比較著迷,叫資訊無障礙化,英文是accessibility。
「我也會把它翻譯成可訪問性,聽上去更符合Web語境,意思就是不管你用任何裝置,有任何輸入輸出環境(比如鍵盤或者滑鼠壞了)的情況下,都能正常訪問網站。
「它最早的受益群體可能是一些視障使用者,而隨著移動網際網路到來,適用群體以及場景也變得越來越豐富。
「比如說,工程師會高頻地使用電腦,所以習慣用各種快捷鍵,不喜歡把手離開鍵盤。那如果一款軟體只能用滑鼠操作,是不是就忽視了這個使用者群體?再比如,一個人在開車,只能通過語音使用軟體。而另一個人在開會,沒辦法講話。那他們倆能不能正常地交流?
「所以accessibility是在探索這些,它甚至可以讓我們更語義化地去理解今天的Web是什麼樣的東西。」
深度參與Vue.js
2016年9月,尤雨溪加入了Weex。同時,勾股也是Vue.js的核心開發成員,他很早就與Vue.js結緣了。
「2013年底,我們團隊當時在討論移動端的前端的框架,嘗試著做自己的東西。就在那個過程中我發現了Vue.js,它從裡到外都符合我們的期望,包括技術實現和API設計的想法,所以我就有種天然的親切感。
「每個人都想做屬於自己的東西,這個聽上去很酷,但你如果有機會跟別人合作,做一個1+1>2的東西呢?很多人可能沒有看到第二種可能性,而這就是我與Vue.js的開始。
「因為最早的程式碼都是小右自己寫的,完成度非常高,我很難直接參與到程式碼中,就從英文文件翻譯開始。」
因為翻譯需要他分析一字一句,甚至一些詞語的隱喻,不能錯過任何細節。這個過程讓他對Vue.js更瞭解。
Vue.js團隊
「Vue2.0釋出的時候,也是我們團隊在做Weex的時間點,我們一起探討了早期的一些想法。
「當時小右在做2.0的時候,是從一個private的倉庫開始做的,但其實那個階段他就已經把我邀請進去了。所以今天看提交記錄你會發現,最早的一兩百個commit都是小右的,中間有幾個是我的,後面才是整個社群參與進來,就是已經從private到public釋出了。」
勾股說,這段經歷對自己影響很深。他學會如何與國際化的團隊交流,相互碰撞想法。他們會聊技術,也會聊生活中好玩的話題。他深刻感受到了那些不一樣的文化,與世界的距離在一點點縮短。「它就是一點點在發生,如果說是從哪裡開始的話,應該就是我從參與Vuejs專案開始。」
技術還是管理
身處阿里,他也在思索個人應該如何發展。不同的是,他有一點叛逆,不想聽任周圍的慣性替自己做決定。
「有一個普遍的技術人員的困惑,是做到一定階段就會有人push你去做管理。
「在當時阿里的環境下,無論是專案管理還是團隊管理,很少有人不做管理而可以被大家認同,當然也包括內部晉升。
「在很多場合,大家覺得你工作經歷和能力到一定程度後,就需要做一些管理的工作,或者你需要把經驗傳遞給更多的人。所以我周圍的人幾乎清一色從技術轉向管理,繼續發展。
「我可能有點叛逆。這個行業有更多更難的技術問題等待著優秀的技術人才去解決,為什麼要把轉向管理變成一個傳統?我會問自己:我可不可以只專注在技術上,一樣可以發展得很好?」
這不是一種簡單的固執,他有自己理性的分析。「坦白講,我自己也是越來越平靜的,或者包容的心態去看待各種事情和想法。
「首先大家都是學技術專業出身的,這個毫無疑問,自己的內心所屬就是技術本身。管理對大家來講也許是第二專業,或者甚至不那麼專業,沒有那麼有歸屬感,所以你會困惑。但坦白講兩個都是機會,我覺得這個是因人而異的。
「第二就是說,管理更多的是跟人打交道,不同的人需要花的代價和精力是不一樣的。我也看很多社科研究的書,也看一些管理的書(推薦《合作的進化》,《精益企業》等),很多東西到今天還沒有定論,所以管理路線是一個不斷往前探索的過程,某種角度這也是管理有意思的地方。
「而技術的世界是小蔥拌豆腐,一清二白。像我這種性格,我希望所有東西都有確定答案,可以有方法有路徑,永遠去追求那些東西,心裡會有底。」
他說,自己之前也一直不確定,是Weex專案給了他走技術路線的信心。
「參與Weex的專案,我收到很多的鼓勵,更好的反饋,然後被周圍非常多的人認同。它讓我有信心,一直做技術做下去,可以探索出不一樣的工程師發展的可能。」
996的新意義
2017年1月21日,勾股、渚薰和完顏組成了996樂隊,在阿里巴巴西溪園區舉辦第一次新歌發表會。
其實,他們樂隊的成員最早在「All-in無線」的時候就認識了,但樂隊兩三年之後才成立。一是因為之前工作太忙,確實沒有時間。二是也沒有所謂的契機。
直到一次年會,同事子寬自己寫了一首歌,吉他彈唱。歌詞旋律都很簡單,唱的就是一些自己工作的感受和狀態,令人非常感同身受。
「有些人加班,有人在偷懶,有人今天沒活幹……」「你會寫程式碼,你會切頁面,你做出了淘寶網;身材走樣了,眼睛壞掉了,頭髮也快沒有了……」
於是,他們幾個會點樂器的人湊在一塊聊了聊,想給他伴奏,組了個樂隊,名字就叫996。
他們設計了一個簡單的logo。「logo裡面的99像一個引號,代表歌詞。6像一個音符,代表作曲,也就是旋律。」
他們想這樣賦予996一個新的意義,而非那個規定的工作時長,或用所謂「奮鬥」來鼓勵大家綁架自己的生活。
勾股說:「第一個9是早上9點,代表認真工作。第二個9是晚上9點,代表下班之後的個人生活。那個6呢,就是週末可以玩玩音樂,做點自己喜歡的事情。」
他們希望通過一種輕鬆的方式,傳遞一些想法,一些聲音給技術社群。讓大家知道,如果你在工作當中遇到了一些問題,即便不是純技術問題,也是可以拿來討論的。雖然技術交流會上不能講,我們可以把它寫成歌,以音樂這種輕鬆的方式,唱給別人聽。
前幾年,有人問勾股:「你怎麼能看那麼多東西?」他笑說:「因為比你晚睡幾個小時。」他習慣用更多的努力和時間去換一個更好的答案。
可是,工作生活怎麼平衡呢?這個問題,每個人的選擇不一樣。有些人是按小時計算,比如白天幾個小時工作,晚上幾個小時回家陪家人;有些人是按天計算,週一到週五玩命地工作,週六週日陪家人。
勾股說,他是屬於那種按年計算的。
前幾年他真的花很多精力在工作上,忽視了家人。直到兩年前,他的女兒出生。面對這份天賜的禮物,他才突然開始反思:自己這種透支身體的工作狀態,真的可持續嗎?
他意識到了家人對他的需要,並且開始做出行動上的改變。
今年,女兒兩歲了。他說:「我覺得自己逐漸地找到了一種既能很好地工作,又能夠很好地生活的狀態。我主動做了很多變化,能夠花更多的時間在家裡,這讓我很有成就感。」
他說等再過幾年,等寶寶長得比較大了,他可能再把一部分重心逐漸轉回工作當中,做更多事情,追求更多想法,這也未嘗不是一種選擇。
除此之外,他生活中還有一個非常狂熱的業餘愛好,就是足球。
「我不光看球賽,有機會我還會下場去踢球,平時也愛跟同事玩足球遊戲。如果以後不做前端的話,即使沒辦法做球員,也許做個足球教練?
「只要有足球相關的東西在我的眼前,我就永遠不覺得疲倦,這個還蠻神奇。有些興趣愛好,可能一時興起玩一玩,不會堅持很久,但是足球這麼多年就一直沒有離開我的生活。」
也許這就是工程師們或程式設計師們,就像996樂隊的歌詞所寫,他們拼命工作,在程式碼的世界like a hero. 但在工作之外,他們也對生活有著純粹的追求。
--End--
技術的世界沒有退縮的念頭
追尋生活中的小小需求
最好的技術成就最好你我
讓音樂來為自己加油
——《持續迭代》996樂隊
圖片來源:勾股
封面程式碼:勾股
文:李冰
採訪:樂馨,李冰
相關文章
- @勾三股四話Sass(譯者序)
- 四種會話追蹤技術會話
- 鏈路追蹤技術的應用及實踐
- 用眼控技術,讀懂“你的世界”
- 視覺技術的聖盃:光線追蹤如何再現真實世界?視覺
- 勾畫貿易技術:第四次工業革命中的貿易報告
- 從《使命召喚》到《我的世界》,光線追蹤技術如何改變遊戲?遊戲
- 機器學習-搜尋技術:從技術發展到應用實戰的全面指南機器學習
- 《我的世界》win10版將更新測試版本,首次支援光線追蹤技術Win10
- 風變,用技術改變與世界的相處方式
- 尋找技術男
- Java動態追蹤技術探究Java
- 淺談動態追蹤技術
- 分散式鏈路追蹤技術分散式
- 雲上的米開朗基羅:在不確定時代,尋找建築般的確定性
- RTX顯示卡實時光線追蹤技術解析 英偉達RTX顯示卡的光線追蹤技術是什麼?
- 線上文件這道技術競賽題:WPS文件或許有些正確答案
- 確定目標:利用web分析技術誘捕受害者Web
- 波士頓諮詢:追尋軟體定義的夢想汽車(上)
- 搜尋器robot技術
- 技術境界的二三四
- 索尼最新專利技術曝光:可用於VR領域的手部追蹤技術VR
- 追風者變引領者:Horwin的技術攀爬
- 【炒股技術】股票追漲抓漲停的操作技巧
- 技術乾貨:RabbitMQ面試題及答案MQ面試題
- 技術乾貨:ActiveMQ面試題及答案MQ面試題
- 直指要害用技術確保網站密碼安全網站密碼
- 用最新技術不斷完善影像世界 | Android 開發者故事Android
- Master Exam中答案不正確的題AST
- 尋找 iOS 上架技術iOS
- 尋找iOS上架技術iOS
- 搜尋排序技術簡介排序
- 阿里雲MVP:開發者的超能力,用技術創造更好世界阿里MVP
- “追蹤聖誕老人”— 每年最新API和應用開發技術的試驗田API
- 如何保證 Java 應用安全?標準答案來了 | 龍蜥技術Java
- 技術乾貨:Hadoop面試題及答案Hadoop面試題
- Android 面試題(附答案) | 掘金技術徵文Android面試題
- 用python搭建"百萬贏家"自動搜尋答案Python