比較詳細的采訪 Vue 作者尤雨溪
原文鏈接: medium.freecodecamp.com

我采訪了尤雨溪,著名漸進式 JavaScript 框架 vuejs.org 的創造者。尤雨溪現通過 Patreon 平台眾籌全職開發 Vue 的資金。他還曾在 Google 和 Meteor 工作過。
這篇文章 最初 發布在 Between the Wires,這是一個采訪系列,專門采訪那些為程序員開發產品的人。
和我們講講你的童年和你的家鄉吧
好的,我出生在中國,我的家鄉叫無錫,一個中等規模的城市,離上海很近。然后我在上海念了三年高中,因此經常兩地來回跑。高中畢業后我去了美國念大學。我感覺我接觸電腦比較早,但是我當時並沒有真正開始編程。我對游戲更感興趣,我在高中時,就經常玩 Flash,因為我非常喜歡制作互動的效果來講述故事。

談一談你的第一次編程經歷?
「JavaScript 很吸引我,因為它能夠快速構建一些東西並分享給別人。把它放在網上,通過一個網址,任何有瀏覽器的人都可以看到。這就是吸引我開始 Web 開發和 JavaScript 編程的原因。」
當我在美國上大學的時候,老實說,我不知道我想要做什么,而且我的專業是室內藝術和藝術史。當我快畢業時,我感覺很難找到和專業相關的工作。
我盤算着或許我可以去一個適合我的碩士課程,學習更多的技能。我去了 Parsons,讀了一個美術設計和技術的碩士。這是一個非常好的專業,因為每個人都是既學習設計也學習編程。他們會教一些比如 openFrameworks,處理,動畫算法之類的課程,而且你也必須寫應用程序和交互界面。
Parsons 沒有真正涉及很多的 JavaScript,但是 JavaScript 很吸引我,因為它能夠快速構建一些東西並分享給別人。把它放在網上,通過一個網址,任何有瀏覽器的人都可以看到。這就是吸引我開始 Web 開發和 JavaScript 編程的原因。
當時 Chrome experiments 這個網站剛剛發布,我深深的被震撼了。我立即開始學習 JavaScript,並開始開發類似 Chrome experiments 的項目。我把這些項目放在我的簡歷上,然后被 Google 創意實驗室的招聘人員注意到了。我加入了Five program。每年創意實驗室會招五名應屆畢業生,組成一個小組,一個人寫文案,一個人搞技術,一個人做平面設計,一個人統籌安排和一個打雜的。
好的,什么時候或者是什么驅使你開發 Vue.js 的?
我在 Google 的工作需要在瀏覽器上進行大量原型設計,於是我想要盡快獲得有形的東西。當時有些項目使用了 Angular。Angular 提供了一些用數據綁定和數據驅動來處理 DOM 的方法,所以你不必自己碰 DOM。它也有一些副作用,就是按照它規定的方式來構建代碼。對於當時的場景而言實在是太重了。
我想,我可以只把我喜歡的部分從 Angular 中提出來,建立一個非常輕巧的庫,不需要那些額外的邏輯。我也很好奇 Angular 的源碼到底是怎么設計的。我最開始只是想着手提取 Angular 里面很小的功能,如聲明式數據綁定。Vue 大概就是這么開始的。
用過一段時間之后,我感覺我做的東西還有點前途,因為我自己就很喜歡用。於是我花了更多的時間把它封裝好,取了一個名字叫做 Vue.js,我記得那時還是 2013 年。后來我想『我花了這么多時間,不能只有我一個人用,我應該和別人分享,他們也會感覺到 Vue 的好處,他們也會喜歡上 Vue 的。』
2014 年 2 月,我第一次將它作為實際的項目發布在 Github 上,並把鏈接發送到了 Hacker News 上,它就被頂到了首頁,然后它在首頁待了好幾個小時。后來,我寫了一篇文章,分享了 Vue 第一周的使用數據以及我的感受。
那是我第一次看見這么多人在 Github 上為一個項目打星星。我當時一個星期收獲了好幾百個星星,整個人都激動壞了。
如果讓你列出幾個其它的框架和 Vue 的核心功能相比,那么你列舉哪些?
我認為在所有的框架中,Vue 可能與 React 最像,但從更廣泛的意義上說,在所有框架中,我自己創造了一個概念叫漸進的框架。因為 Vue 的核心組成只是數據綁定和組件,和 React 差不多。它只是解決了一小部分很重要的痛點。與 React 相比,Vue 可能更簡單易用,只知道一些 HTML,JavaScript 和 CSS 知識的人都可以很快入門 Vue。
在框架層面上,我是用一個非常精簡和盡可能小的的內核來構建的。但是當構建更復雜的應用的時候,有很多其他的問題需要解決。比如說路由,或者說怎么處理跨組件通信,怎么樣在大型應用程序中共享狀態,這樣的話我們就還需要更多的構建工具來模塊化我們的代碼庫。怎么樣來組織樣式和各種各樣的靜態資源?像 Ember 或 Angular 這些非常完整的框架,它們就想解決所有可能遇到的這些問題,並把這些功能全都集成到框架中。
這就叫有得必有失吧。對用戶使用情況的假設越多,框架最終的靈活性就越低。或者像 React 這樣把很多問題都留給社區。React 社區是非常非常活躍的,經常有很多牛 X 的想法跳出來,當然也有不少不完美的想法。Vue 就是比較折中,仍然保持一個很小的核心,只提供一些最重要的功能。但是我們還是在逐漸提供一些更多的獨立解決方案,比如說路由,狀態管理,構建工具鏈和 CLI。它們都是官方維護的,有很好的文檔,設計的也非常好,可以各種搭配使用,但重點是不需要的時候就可以不用。我認為這可能是 Vue 作為一個框架最大的特色。
你如何通過 Vue.js 來變現的?
「我為開發者們創造了價值,所以從理論上說,如果我能以某種方式得到接近於這些價值的錢,那么我應該能夠養活自己。」
我為開發者們創造了價值,所以從理論上說,如果我能以某種方式得到接近於這些價值的錢,那么我應該能夠養活自己。當然這也是比較復雜的事情,因為畢竟 JavaScript 生態大多是開源的,沒有一個好的方式讓開發者們支付和購買自己正在使用的框架。
Vue 的用戶群非常有活力。許多 Vue 用戶來自 Laravel 社區,他們非常熱情真誠,人很好。我就感覺眾籌可能是個不錯的想法。在 Patreon 上我只是想試試這個想法。實際上,React-Hot-Loader 和 Redux 的作者 Dan Abramov 也在 Patreon 上搞過一個小的眾籌,勾起了我的興趣。我粗略地估計了一下有多少人在使用 Vue。假如有一萬個人在用,其中百分之一的人願意每月給我 10 美元就差不多了。

在二月份,我就在 Patreon 上掛出眾籌頁面。主要是向兩個目標群體,一個是針對使正在用 Vue 的個人開發者,當然他們肯定只會給一些小費,買買咖啡之類的。那么還有就是企業和公司,像初創公司或咨詢公司,他們用 Vue 做了一些東西。他們肯定希望 Vue 在很長一段時間是穩定維護的。如果他們知道他們對我經濟支持就可以讓 Vue 持續穩定維護下去,他們也會很有安全感。
我還在 Patreon 眾籌上加了一個附加獎勵。如果有公司願意贊助我,那么我可以把公司的標志放在 vuejs.org 的贊助商頁面上,就相當於在社區給公司打了廣告。Patreon 眾籌得到的金額里有一半是來自個人的,其中還有一個人每月贊助我 2000 美元。我其實最開始也並不知道眾籌可以成功,但目前為止還是不錯的。當時我說如果在 Patreon 每個月眾籌到 4000 美元我就全職開發 Vue,現在每月可以眾籌到 9800 美元。
說服他們贊助你是不是花了很長時間?他們會不會有疑慮,說畢竟只是個比較新的框架,甚至可能堅持不到六個月?
當我開始 Patreon 眾籌的時候,Vue 已經顯示出了強勁的生命力。在 2015 年初,Vue 可能還算是一個比較隨意的開源項目,但是 Laravel 社區已經開始全面使用 Vue。我覺得如果我不能通過 Vue 賺到一點點錢,這不太可能。
我要特別感謝 Strikingly,一家在上海的創業公司。他們在中國的 JavaScript 和 Ruby 社區非常活躍。他們實際上並沒有使用 Vue,但他們有個基金用來每個月贊助開源項目。他們是第一個連續 6 個月每月 2000 美元的贊助商,在早期階段真的幫了我很多。此外,Laravel 的作者 Taylor Otwell 也贊助了 Vue。他開始的時候是給的 100 美元,然后漲到了 200,有時會高到 500 美元。
你剛剛說之所以能夠得到贊助,是因為 Vue 成長很快。你有沒有做什么推廣和營銷?或者說就任其自然發展?
我其實沒有在營銷中投錢,也沒有買廣告之類的。主要是寫了一些博客文章。很多時候就是發發 Twitter。我感覺這就夠了。有時候我還會在 Medium 上寫些文章。
現在你在國際上有很大影響力,我們很想知道 Vue 是怎么開始國際化的,是什么吸引了美國以外的開發人員?

中國市場是非常重要和特殊的。我是中國人,我在中文 JavaScript 社區就很活躍。很多人知道 Vue,因為他們認識我。他們將 Vue 文檔全部都翻譯成了中文,讓 Vue 在中國更具有影響力。很多中國開發者看了說「喔唷,這個框架的作者是中國人」他們當然就傾向於使用 Vue 了,我感覺這在早期對 Vue 的幫助是很大的。越來越多的中國公司也開始使用 Vue,像阿里巴巴,騰訊和百度的團隊。這些都是中國的巨頭公司。當然 React 在中國也很有影響力。
在中國有一個類似於 Quora 的網站叫 知乎,網友在那里可以提各種問題,我在那里回答了很多 JavaScript 和 Vue.js 的問題。
對那些在不善於和國際社區交流的公司或開源項目有沒有什么建議?
我感覺語言障礙可能是最難跨越的。如果你不努力把自己的產品推向中國,那么沒有人會注意到,除非你和 React 一樣牛。你需要一個可以說中文的人或者說一個中國人來做這件事。
還有一點很有意思,還有很多來其他地區的用戶,像意大利,西班牙,葡萄牙和日本。尤其是日本的開發者非常的積極,他們真的非常認真地翻譯文檔。
寫 Vue 的時候你是否有比較后悔的失誤?
『我必須換個思路徹底重新思考這個問題,但是我認為這是每一個軟件在開發過程中都不可避免的,因為很難第一次嘗試就完美無瑕。』
確實有一些問題。目前為止 Vue 已經從頭寫了兩次了。顯然是因為之前的實現方式有問題不能通過局部的修改或者打補丁的方式改善,我才會去重寫它。就像每次我看自己六個月之前寫的代碼庫,我就會想,卧槽,這樣都行?
我必須換個思路徹底重新思考這些問題,但是我認為這是每一個軟件在開發過程中都不可避免的,因為很難第一次嘗試就完美無瑕。
寫 Vue 的過程也是我作為開發者不斷成長的過程,因為隨着時間的推移,我需要添加新的功能,維護它,修復 bug 並確保整個生態系統的正常發展。作為一個軟件工程師遇到這些問題是很正常的,這只是一個不斷學習的過程。
寫 Vue 的時候有沒有心情上的不順或者是其它非技術上的障礙?
『沒有哪一個真正的框架可以滿足每一個開發者。更重要的是讓喜歡並使用我的框架的人,能夠繼續保持對這個框架的喜愛。我會專心做我認為最有價值的事情,並且努力去做好,不用擔心別人拿我的框架和別的相比。』
當然有了,畢竟競爭壓力也是很大的。當 Vue 還是比較小眾的時候,沒什么壓力,任何方面的討論對我來說都很好,因為人們不會對我的框架抱很高的期望。但是,隨着 Vue 越來越流行,人們開始把 Vue 與 Angular 或 React 進行比較,他們有時會說,「React 在這方面做的更好,Angular 在那方面做得更好。」
這時就給我帶來很大鴨梨了,和那些巨頭競爭壓力顯然很大。特別是現在我全職開發 Vue。Vue 在前端圈的生存能力基本上和我的工作有很大的關系。
但是最近我剛剛看過 Elm 的作者 Evan Czaplicki 的演講,他在演講里說到了他開發 Elm 時的壓力。因為有用在 React 上的 ClojureScript 界面 Om,還有可以編譯為 JavaScript 的強類型語言 PureScript,他也擔心 Elm 怎么和那些庫競爭。
后來他和 Python 的作者 Guido 交流,Guido 給了他一些建議,說『認真干自己的就可以了』,他言外之意是 Python 也有這個問題,Python 和許多動態語言,像 Ruby,JavaScript,Perl 這些語言也都有相互競爭的領域。結果所有這些語言都是成功的,他們有自己的社區和自己的用戶群,有很多開發者喜歡和使用這些語言。
人們喜歡不同的語言,原因各不相同。對 JavaScript 框架而言也是一樣,人們喜歡不同的框架,原因也各不相同。沒有哪一個真正的框架可以滿足每一個開發者。更重要的是讓喜歡並使用我的框架的人,能夠繼續保持對這個框架的喜愛。我會專心做我認為最有價值的事情,並且努力去做好,不用擔心別人拿我的框架和別的相比。
你認為 Vue.js 的成功給我們帶了什么?
這個問題很難回答啊,因為 Vue.js 的影響范圍隨着時間的推移會不斷增大。我們現在有整個基於 Vue 框架的生態系統,而且我們還在探索 Weex 這樣的東西,可以把 Vue 用在寫原生應用上。
我也非常注重 Vue 的簡單和易用性,因為我堅信技術應該是能讓更多的人可以開發自己想要的東西。
接下來的幾個都是編程之外的問題,也很有趣。請問編程之外還有沒有其它的興趣?
動漫,我看了很多日本的動漫。不知道你有沒有注意到,Vue 的發行版都是以動漫命名的。從 .09 開始,每個大的發行版的名稱的首字母都按字母表的順序遞增。2.0 是 Ghost in the Shell。F 實際上是為 1.1 保留的。1.0 是 Evangelion。


我也很喜歡卡拉OK。
你最感興趣的前沿技術或趨勢是什么?
我比較感興趣實用的技術。這可能比較奇怪,因為我對 AR 或 VR 現在還不是很動心。我更想談談和普通開發人員更近的事。像 Guillermo 開發的 Now。 開發人員為開發人員寫工具,開發人員用這些工具的體驗,同樣也是用戶體驗。
在編程界有沒有偶像?
那肯定是 TJ Holowaychuck 和 Guillermo Rauch。因為我不是計算機專業的。我基本上通過看網上的資源和書來學習編程,還有一個重要的學習方法就是看別人的代碼。我看 TJ 的代碼時,就總是感覺寫得非常優雅。優雅是當時蹦到我腦海中的第一個詞,並且對我的影響很大。TJ 絕對是我的偶像。
作者:Threeki水機
鏈接:https://www.jianshu.com/p/3092b382ee80
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。