Visual Studio Code 权威指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人


那些年,我们一起追的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号班车还在,承载着我那时对技术的执着与热情,继续行驶在光明的大路上。

不忘初心,莫失初衷。不言放弃,追逐所爱。