推薦序
Visual Studio Code 已經迎來了5 周年的誕辰!在2015 年4 月29 日的微軟Build 開發者大會上,微軟宣佈推出Visual Studio Code。自從Visual Studio Code 第一個公開預覽版本發佈以來,這個輕量級的編輯器已經吸引了全球數以百萬計的開發者。在很短的時間內,Visual Studio Code 在全世界成了開發者們最喜愛的開發工具。如今,Visual Studio Code 已經有了超過1200 萬的月活使用者,並且保持著持續增長的趨勢。
從公司創立之初,微軟就有為開發者服務的基因。微軟創始人比爾· 蓋茲開發的第一款產品,就是執行在Altair 電腦上的BASIC 語言。歷經數十年,微軟一直致力於為廣大開發者與開發團隊打造最優秀和最具生產力的開發工具。微軟的使命和願景是幫助每一個人、每一個組織成就不凡。為了達成這一使命,我們希望幫助全球每一位開發者,用先進的工具與平台幫助創新者去實現他們的創意,改變世界。
回想2015 年, 我們非常幸運, 因為有Erich Gamma 來帶領Visual Studio Code 的開發團隊。Erich 是經典書《設計模式:可重複使用物件導向軟體的基礎》的作者之一。在加盟微軟之前,他主管開發了Eclipse 平台上的Java Development Tools(JDT) 專案。有Erich 和微軟Visual Studio 主管層之間的強強聯手,我們的團隊對開發者的需求有了深度的了解。同時,從Visual Studio 和Eclipse 數十年的開發經驗中,我們提煉了許多寶貴的經驗與教訓。
打造Visual Studio Code 的開發團隊不僅實力頂尖,還應用了現代化的開發模式。Visual Studio Code 基於開放原始碼且跨平台的理念,按照每月發佈的節奏來快速反覆運算產品開發,並且提供每日發佈的Insider 通道。它擁有上萬個外掛程式,生態極為活躍和豐富。
更重要的是,Visual Studio Code 是我們踐行微軟「顧客至上」文化的最佳榜樣。Erich 極佳地擁護了「開發團隊與使用者零距離」的格言。整個Visual Studio Code 開發團隊持續地與使用者溝通,基於他們的回饋來改進產品,並與社區緊密合作,在GitHub 上建立了月度工作專案。
透過韓駿的這本書,我希望讀者能學到更多Visual Studio Code 的使用技巧。我們很樂意看到Visual Studio Code 能繼續成為你工作與生活的一部分,也希望本書能幫助有意願學習程式設計的人成就不凡。
Happy Coding!
微軟開發平台事業部全球資深副總裁 潘正磊(Julia Liuson)
序
那些年,我們一起追的Visual Studio Code(VS Code)
2015 年,我25 歲。Visual Studio(VS)是微軟最重要的開發工具。開發者們還在期待Visual Studio 2015 的到來。
那些年,組裡的前端專案用的是AngularJS,組裡購買了WebStorm 的正版軟體授權,大家紛紛表示很好用。
那一年,那些年。
我叫韓駿,大學同學都叫我韓總。我高中念的是北虹進階中學,大學念的是上海交通大學。2013 年,我正式入職微軟上海。故事,由此開始。故事的另一位主角,是現居西雅圖的VS Code 團隊核心成員呂鵬老師。早在2012 年暑期,在微軟實習時,我們就相識了。那時,我們的交集並不多。有幸的是,我們雙雙拿到了微軟正式員工的Offer,便不再糾結於讀研還是工作。2013 年7 月8 日,我和呂老師,還有其他幾位夥伴一起入職了。剛接觸呂老師時,就覺他特別有靈性,常常具有超越常人的想法與見解。入職後,我們驚奇地發現,兩個人的住所相隔如此之近,只有5 分鐘的步行距離。
這,也許是天意。由此,我們開始了長達3 年的微軟10 號交通車之旅。我已經記不清10 號交通車換了多少位交通車司機,但不變的是,每天來回3 小時路上我們都在。無數個3 小時,我們都不會孤獨,一路上,從C#、.NET、AugularJS 再到後來的TypeScript、VS Code,我們無不討論。(嗯,在此,要對10 號交通車上的所有同事說聲抱歉,打擾到你們睡覺啦。)
2015 年,我們有一個CMS 系統的專案,而visualstudio.com 的內容也被放在這個系統上管理。某一天,我不經意間在測試網站上發現了一個VS Code 的頁面,描述裡赫然寫著它是一個跨平台的編輯器。當時已經臨近舉辦微軟最重要的開發者大會—Build 大會,我的第一反應就是,這是一個重量級產品!我馬上喊來呂老師一起看。呂老師仔細地看著那個頁面,不等我們交流,從他看網頁的那堅定的眼神中我就能知道,我們想的是一樣的,將會是一個Big News(大新聞)。果不其然,不久後的2015 年4 月29 日,在Build 大會上,微軟宣佈推出VS Code 的第一個預覽版本,許多開發者為之振奮,也有很多類似「VS 支援跨平台了」的標題黨出現。我當然第一時間下載下來並體驗了一下,第一印象是VS Code 的速度是如此之快,而且對Git 具有很好的支援。
從那時起,我的主力編輯器就逐漸轉向了VS Code。
在半年後的2015 年11 月18 日,VS Code 獲得MIT License(MIT 授權)並在GitHub 上開放原始碼,同時宣佈將支援擴充功能。在10 號交通車上,呂老師和我談到了VS Code 的發展前途,並有給VS Code 寫外掛程式的打算。到了2016 年春節後,呂老師在交通車上和我說,他正在寫Ruby 的外掛程式,詳細說了一下VS Code 的外掛程式機制。當時,VS Code 的外掛程式很少,很多語言的外掛程式都是缺失的,為其開發外掛程式可謂是一片真正的藍海。
大概過了一周,呂老師發佈了他的Ruby 外掛程式。我不禁感歎呂老師的效率之高,他可以算是最早一批抓住VS Code 機會的大佬之一。也正是憑藉這個Ruby 外掛程式作為試金石,呂老師在那年成功入職高手雲集的VS Code 團隊,開啟人生贏家之路。其實關於Ruby 外掛程式還有一個小故事,當時除了呂老師,還有一位老外也在寫Ruby 外掛程式。那時,那位老外被一個技術困難卡住了,還沒等他解決那個困難,呂老師就以迅雷不及掩耳之勢發佈了Ruby 外掛程式。後來,呂老師也說服了那位老外一起來寫這個已經發佈的外掛程式,避免重複工作。如果呂老師的Ruby 外掛程式再晚發佈幾天,也許就是另一種結果了。
到了2016 年6 月,呂老師已經開始準備去美國了。組裡的另一位大佬同事也發佈了REST Client 外掛程式,廣受好評。那月,Erich Gamma(VS Code 開發團隊的總負責人、《設計模式:可重複使用物件導向軟體的基礎》作者之一、JUnit 建立者之一)來到微軟上海,我也有幸親眼見到了他。我知道,我該行動了。這是一片即將變紅的藍海。以Fail Fast(快速失敗)為指導思想,我在短短一個月的時間裡接連發佈了4 款外掛程式。沒想到,這4 款外掛程式都廣受使用者的喜歡,特別是Code Runner,下載量從1 萬、10萬,一直上升到現在的1000 萬,是我開發的20 多個外掛程式中使用者最喜歡的外掛程式之一。
2016 年下半年,呂老師遠赴美國,而10 號交通車上只剩我「一個人」了。但是,我追逐VS Code 的步伐並沒有停止。正巧,部門那時開始做IoT 的Developer Tooling,我馬上想到要做一個VS Code 的外掛程式。可惜,當時做一個VS Code 的IoT 外掛程式並沒有被列為一個優先專案。但是,感謝微軟的開放態度,我利用自己的個人時間開發了Azure IoT Toolkit,由於反響良好,一年後我把外掛程式貢獻出來,使Azure IoT Toolkit 被升級為微軟的官方外掛程式。
到了2017 年,IoT 外掛程式開發被正式提上議程,組裡成立了專門的團隊來開發Arduino 外掛程式。我雖然沒有實際參與外掛程式的開發,但在整個過程中提出了很多建議,在兩次組內的Bug Bash 中勇奪冠軍。外掛程式發佈後受到了Arduino 社區的很多好評,因此,我們部門也開始了VS Code 外掛程式開發的旅程,自行開發或合作開發的外掛程式超過了20 個,這些外掛程式有關的領域包含IoT、Java、Ansible、Terraform 等。
2018 年,我有幸在微軟技術暨生態大會上做了一次演講,主題是「從零開始開發一款屬於你的Visual Studio Code 外掛程式」,把外掛程式開發的經驗帶給更多的開發者朋友。
2019 年,我對VS Code 外掛程式開發有了更深入的思考。僅憑我一個人寫外掛程式又能寫多少呢,新的外掛程式還比較好寫,最耗費成本的其實是外掛程式維護,現在的20 個外掛程式維護起來已經很累了,所以授人以魚不如授人以漁,我開通了「玩轉VS Code」微信公眾號及知乎專欄,就是希望把VS Code 的一些經驗分享給更多的人,也希望有更多志同道合的朋友一起來玩轉VS Code。整個2019 年,我也在多場大會(PyCon、JSConf、.NET Conf、Google Developer Group、GitHub 官方見面會、COSCon 等)上進行了公開演講,對VS Code 進行佈道。
2019 年11 月30 日,又是一個特別值得紀念的日子!經歷了長時間的籌備,VS Code 中文社區終於成立了!從一個普通的藍領程式設計師到VS Code 外掛程式的「產品設計師」,到VS Code 的佈道師,再到VS Code 中文社區的創始人,我與VS Code 一起成長。
不知道這些年來我對VS Code 的追逐到底產生了多大的影響。但是,至少,我看到了一些變化。曾經,人們會把VS Code 當成VS,以為VS 跨平台了。如今,會有95 後的同學反過來把VS 當作VS Code:原來除了VS Code,居然還有個VS ?曾經,面對新的專案,我們會問:為什麼要做一個VS Code 的外掛程式?如今,面對新的專案,我們會問:為什麼不做一個VS Code 的外掛程式?
微軟的10 號交通車還在,很多當年一起入職的夥伴卻分散到了不同的地方:上海、蘇州、無錫、西雅圖。我依稀記得,在某個早晨的交通車上,我和呂老師為了一個專案中的技術問題吵到面紅耳赤,而到了中午依舊是80 分遊戲的最佳拍檔;某天下班的路上,我們為了專案中的難以重現的Bug,在交通車上開啟筆記型電腦一起來偵錯;某個晚上,我為了Code Runner 中的Bug 奮戰到淩晨兩點。那時,在交通車上,我們還經常會拿著Surface RT,看Channel 9,看Design Spec,回郵件。微軟的10 號交通車還在,承載著我那時對技術的執著與熱情,繼續行駛在光明的大路上。
不忘初心,莫失初衷。不言放棄,追逐所愛。