- Visual Studio Code 權(quán)威指南
- 韓駿
- 2578字
- 2020-08-06 15:43:36
序
那些年,我們一起追的Visual Studio Code(VS Code)
2015年,我25歲。Visual Studio(VS)是微軟最重要的開(kāi)發(fā)工具。開(kāi)發(fā)者們還在期待Visual Studio 2015的到來(lái)。
那些年,組里的一個(gè)前端項(xiàng)目用的是AngularJS,組里購(gòu)買了WebStorm的正版軟件授權(quán),大家紛紛表示很好用。
那一年,那些年。
我叫韓駿,本科同學(xué)都叫我韓總。我高中念的是北虹高級(jí)中學(xué),本科念的是上海交通大學(xué)。2013年,我正式入職微軟上海。故事,由此開(kāi)始。
故事的另一位主角,是現(xiàn)居西雅圖的VS Code團(tuán)隊(duì)核心成員呂鵬老師。早在2012年暑期,在微軟實(shí)習(xí)時(shí),我們就相識(shí)了。那時(shí),我們的交集并不多。有幸的是,我們雙雙拿到了微軟正式員工的Offer,便不再糾結(jié)于讀研還是工作。2013年7月8日,我和呂老師,還有其他幾位小伙伴一起入職了。剛接觸呂老師時(shí),就覺(jué)他特別有靈性,往往有著超越常人的思路與見(jiàn)解。入職后,我們驚奇地發(fā)現(xiàn),兩個(gè)人的住所相隔如此之近,只有5分鐘的步行距離。這,也許是天意。由此,我們開(kāi)始了長(zhǎng)達(dá)3年的微軟10號(hào)班車之旅。我已經(jīng)記不清10號(hào)班車換了多少位班車師傅,但不變的是,每天來(lái)回3小時(shí)路上我們都在。無(wú)數(shù)個(gè)3小時(shí),我們都不會(huì)孤獨(dú),一路上,從C#、.NET、AugularJS再到后來(lái)的TypeScript、VS Code,我們無(wú)不討論。(嗯,在此,要對(duì)10號(hào)班車上的所有同事說(shuō)聲抱歉,打擾到你們睡覺(jué)啦。)
2015年,我們有一個(gè)CMS系統(tǒng)的項(xiàng)目,而visualstudio.com的內(nèi)容也被放在這個(gè)系統(tǒng)上管理。某一天,我不經(jīng)意間在測(cè)試網(wǎng)站上發(fā)現(xiàn)了一個(gè)VS Code的頁(yè)面,描述里赫然寫著它是一個(gè)跨平臺(tái)的編輯器。當(dāng)時(shí)已經(jīng)臨近舉辦微軟最重要的開(kāi)發(fā)者大會(huì)——Build大會(huì),我的第一反應(yīng)就是,這是一個(gè)重量級(jí)產(chǎn)品!我馬上喊來(lái)呂老師一起看。呂老師仔細(xì)地看著那個(gè)頁(yè)面,不等我們交流,從他看網(wǎng)頁(yè)的那堅(jiān)定的眼神中我就能知道,我們想的是一樣的,這將會(huì)是一個(gè)Big News(大新聞)。果不其然,不久后的2015年4月29日,在Build大會(huì)上,微軟宣布推出VS Code的第一個(gè)預(yù)覽版本,眾多開(kāi)發(fā)者為之振奮,也有很多類似“VS支持跨平臺(tái)了”的標(biāo)題黨出現(xiàn)。我當(dāng)然第一時(shí)間下載下來(lái)并體驗(yàn)了一下,第一印象是VS Code的速度是如此之快,而且對(duì)Git有著很好的支持。從那時(shí)起,我的主力編輯器就逐漸轉(zhuǎn)向了VS Code。
在半年后的2015年11月18日,VS Code獲得MIT License(MIT許可證)并在GitHub上開(kāi)源,同時(shí)宣布將支持?jǐn)U展功能。在10號(hào)班車上,呂老師和我談到了VS Code的發(fā)展前途,并有給VS Code寫插件的打算。到了2016年春節(jié)后,呂老師在班車上和我說(shuō),他正在寫Ruby的插件,詳細(xì)說(shuō)了一下VS Code的插件機(jī)制。當(dāng)時(shí),VS Code的插件很少,很多語(yǔ)言的插件都是缺失的,為其開(kāi)發(fā)插件可謂是一片真正的藍(lán)海。大概過(guò)了一周,呂老師發(fā)布了他的Ruby插件。我不禁感嘆呂老師的效率之高,他可以算是最早一批抓住VS Code機(jī)會(huì)的大佬之一。也正是憑借這個(gè)Ruby插件作為敲門磚,呂老師在那年成功入職高手云集的VS Code團(tuán)隊(duì),開(kāi)啟人生贏家之路。其實(shí)關(guān)于Ruby插件還有一個(gè)小故事,當(dāng)時(shí)除了呂老師,還有一位老外也在寫Ruby插件。那時(shí),那位老外被一個(gè)技術(shù)難點(diǎn)卡住了,還沒(méi)等他解決那個(gè)難點(diǎn),呂老師就以迅雷不及掩耳之勢(shì)發(fā)布了Ruby插件。后來(lái),呂老師也說(shuō)服了那位老外一起來(lái)寫這個(gè)已經(jīng)發(fā)布的插件,避免重復(fù)工作。如果呂老師的Ruby插件再晚發(fā)布幾天,也許就是另一種結(jié)果了。
到了2016年6月,呂老師已經(jīng)開(kāi)始準(zhǔn)備去美國(guó)了。組里的另一位大佬同事也發(fā)布了REST Client插件,廣受好評(píng)。那月,Erich Gamma(VS Code開(kāi)發(fā)團(tuán)隊(duì)的總負(fù)責(zé)人、《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》作者之一、JUnit創(chuàng)建者之一)來(lái)到微軟上海,我也有幸親眼見(jiàn)到了他。
我知道,我該行動(dòng)了。這是一片即將變紅的藍(lán)海。以Fail Fast(快速失敗)為指導(dǎo)思想,我在短短一個(gè)月的時(shí)間里接連發(fā)布了4款插件。沒(méi)想到,這4款插件都廣受用戶的喜歡,特別是Code Runner,下載量從1萬(wàn)、10萬(wàn),一直上升到現(xiàn)在的1000萬(wàn),是我開(kāi)發(fā)的20多個(gè)插件中用戶最喜歡的插件之一。
2016年下半年,呂老師遠(yuǎn)赴美國(guó),而10號(hào)班車上只剩我“一個(gè)人”了。但是,我追逐VS Code的步伐并沒(méi)有停止。正巧,部門那時(shí)開(kāi)始做IoT的Developer Tooling,我馬上想到要做一個(gè)VS Code的插件。可惜,當(dāng)時(shí)做一個(gè)VS Code的IoT插件并沒(méi)有被列為一個(gè)優(yōu)先項(xiàng)目。但是,感謝微軟的開(kāi)放態(tài)度,我利用自己的個(gè)人時(shí)間開(kāi)發(fā)了Azure IoT Toolkit,由于反響良好,一年后我把插件貢獻(xiàn)出來(lái),使Azure IoT Toolkit被升級(jí)為微軟的官方插件。
到了2017年,IoT插件開(kāi)發(fā)被正式提上議程,組里成立了專門的團(tuán)隊(duì)來(lái)開(kāi)發(fā)Arduino插件。我雖然沒(méi)有實(shí)際參與插件的開(kāi)發(fā),但在整個(gè)過(guò)程中提出了很多建議,在兩次組內(nèi)的Bug Bash中勇奪冠軍。插件發(fā)布后受到了Arduino社區(qū)的很多好評(píng),因此,我們部門也開(kāi)始了VS Code插件開(kāi)發(fā)的旅程,自行開(kāi)發(fā)或合作開(kāi)發(fā)的插件超過(guò)了20個(gè),這些插件涉及的領(lǐng)域包括IoT、Java、Ansible、Terraform等。
2018年,我有幸在微軟技術(shù)暨生態(tài)大會(huì)上做了一次演講,主題是“從零開(kāi)始開(kāi)發(fā)一款屬于你的Visual Studio Code插件”,把插件開(kāi)發(fā)的經(jīng)驗(yàn)帶給更多的開(kāi)發(fā)者朋友。
2019年,我對(duì)VS Code插件開(kāi)發(fā)有了更深入的思考。僅憑我一個(gè)人寫插件又能寫多少呢,新的插件還比較好寫,最耗費(fèi)成本的其實(shí)是插件維護(hù),現(xiàn)在的20個(gè)插件維護(hù)起來(lái)已經(jīng)很累了,所以授人以魚不如授人以漁,我開(kāi)通了“玩轉(zhuǎn)VS Code”微信公眾號(hào)及知乎專欄,就是希望把VS Code的一些經(jīng)驗(yàn)分享給更多的人,也希望有更多志同道合的朋友一起來(lái)玩轉(zhuǎn)VS Code。整個(gè)2019年,我也在多場(chǎng)大會(huì)(PyCon、JSConf、.NET Conf、Google Developer Group、GitHub官方見(jiàn)面會(huì)、COSCon等)上進(jìn)行了公開(kāi)演講,對(duì)VS Code進(jìn)行布道。
2019年11月30日,又是一個(gè)特別值得紀(jì)念的日子!經(jīng)歷了長(zhǎng)時(shí)間的籌備,VS Code中文社區(qū)終于成立了!
從一個(gè)普通的碼農(nóng)到VS Code插件的“產(chǎn)品設(shè)計(jì)師”,到VS Code的布道師,再到VS Code中文社區(qū)的創(chuàng)始人,我與VS Code一起成長(zhǎng)。
不知道這些年來(lái)我對(duì)VS Code的追逐到底產(chǎn)生了多大的影響。但是,至少,我看到了一些變化。曾經(jīng),人們會(huì)把VS Code當(dāng)成VS,以為VS跨平臺(tái)了。如今,會(huì)有95后的同學(xué)反過(guò)來(lái)把VS當(dāng)作VS Code:原來(lái)除了VS Code,居然還有個(gè)VS?曾經(jīng),面對(duì)新的項(xiàng)目,我們會(huì)問(wèn):為什么要做一個(gè)VS Code的插件?如今,面對(duì)新的項(xiàng)目,我們會(huì)問(wèn):為什么不做一個(gè)VS Code的插件?
微軟的10號(hào)班車還在,很多當(dāng)年一起入職的小伙伴卻分散到了不同的地方:上海、蘇州、無(wú)錫、西雅圖。我依稀記得,在某個(gè)早晨的班車上,我和呂老師為了一個(gè)項(xiàng)目中的技術(shù)問(wèn)題吵到面紅耳赤,而到了中午依舊是80分游戲的最佳拍檔;某天下班的路上,我們?yōu)榱隧?xiàng)目中的一個(gè)難以重現(xiàn)的Bug,在班車上打開(kāi)筆記本一起來(lái)調(diào)試;某個(gè)晚上,我為了Code Runner中的一個(gè)Bug奮戰(zhàn)到凌晨?jī)牲c(diǎn)。那時(shí),在班車上,我們還經(jīng)常會(huì)拿著Surface RT,看Channel 9,看Design Spec,回郵件。
微軟的10號(hào)班車還在,承載著我那時(shí)對(duì)技術(shù)的執(zhí)著與熱情,繼續(xù)行駛在光明的大路上。
不忘初心,莫失初衷。不言放棄,追逐所愛(ài)。
- C語(yǔ)言程序設(shè)計(jì)案例教程(第2版)
- Java完全自學(xué)教程
- Practical UX Design
- Mastering Spring MVC 4
- R語(yǔ)言數(shù)據(jù)可視化實(shí)戰(zhàn)
- 機(jī)器人Python青少年編程開(kāi)發(fā)實(shí)例
- Python應(yīng)用輕松入門
- Web Development with MongoDB and Node(Third Edition)
- Serverless computing in Azure with .NET
- Scala Reactive Programming
- OpenCV 4計(jì)算機(jī)視覺(jué)項(xiàng)目實(shí)戰(zhàn)(原書第2版)
- ArcGIS for Desktop Cookbook
- Go語(yǔ)言開(kāi)發(fā)實(shí)戰(zhàn)(慕課版)
- 創(chuàng)意UI:Photoshop玩轉(zhuǎn)APP設(shè)計(jì)
- R的極客理想:量化投資篇