2015年,那一年,我25岁。Visual Studio 还是微软最重要的开发工具。开发者们还在期待 VS 2015 的到来。
那年,组里的一个前端项目用的是 AngularJS,组里购买了 WebStorm 的 licence,大家纷纷表示很好用。
那一年,那些年。
我叫韩骏,本科同学们都叫我韩总。我高中念的是北虹高级中学,本科念的是上海交通大学。2013年,正式入职微软上海。故事,由此开始。
故事的另一位主要主角,是现居西雅图、VS Code 团队的核心成员吕老师。早在2012年在微软暑期实习时,我们就相识了。那时,我们的交集并不多。有幸的是,我们都拿到了微软正式员工的 Offer,也不再纠结于读研还是工作,都接受了微软的 Offer。2013年7月8日, 我和吕老师还有其他几位小伙伴一起入职了。刚接触吕老师时,就觉他特别有灵性,往往会有着超越寻常人的思路与见解。入职后,我们惊奇地发现,我们的住所是如此之近,只有五分钟的步行距离。这,也许是天意。由此,我们开始了长达三年的微软10号班车之旅。我已经记不清10号班车换了多少的班车师傅,但不变的是,每天来回三小时的路程上,我们都在。无数个三小时,我们都不会孤独,一路上,从 C#, .NET, AugularJS 再到后来的 TypeScript, VS Code,我们无不讨论。(嗯,在此,要对所有10号班车的同事说声抱歉,打扰到你们睡觉啦~)
2015年,我们当时有个项目是一个 CMS 系统,而 visualstudio.com 的内容也放在了这个系统上管理。某一天,我不经意间,在测试网站上突然发现了有个 "Visual Studio Code" 的页面,描述里赫然写着它是一个跨平台的编辑器。当时已经临近微软的最重要的开发者大会 -- Build 大会,我第一反应就是,这是一个重量级产品!我马上喊来了吕老师一起看。吕老师仔细地看着那个页面,不等我们交流,从他看网页的那坚定的眼神中,我就能知道,我们想的是一样的,这将会是一个 Big News。果不其然,在不久后的2015年4月29日的 Build 大会上,微软宣布了 Visual Studio Code 第一个预览版本,众多开发者为之振奋,也有很多类似“VS 支持跨平台了”的标题党出现。我当然也是第一时间下载下来体验下,第一印象是 VS Code 的速度是如此之快,而且对 Git 有着很好的支持。从那时起,我的主力编辑器就逐渐转向了 VS Code。
在半年后的2015年11月18日,VS Code 在 GitHub 上以 MIT License 开源,同时宣布将支持扩展功能。在10号班车上,吕老师就和我谈到了 VS Code 的发展前途,以及有给 VS Code 写插件的打算。到了16年春节后,吕老师在班车上和我说,他正在写 Ruby 的插件,详细说了说 VS Code 的插件机制。当时,VS Code 的插件很少,很多语言的插件都是缺失的,可谓是一个真正的蓝海。大概过了一周,吕老师发布了他的 Ruby 插件。我不禁感叹,吕老师的效率之高,可以算是最早一批抓住 VS Code 蓝海机会的大佬之一了。也正是凭借着这 Ruby 插件作为敲门砖,吕老师在那年成功入职高手云集的 VS Code 团队,开启人生赢家之路。其实关于 Ruby 插件还有个小故事,当时除了吕老师,还有位老外也正在写 Ruby 插件。那时,那位老外被一个技术难点卡住了,还没等他踩完坑,没想到吕老师以迅雷不及掩耳盗铃之势就发布了 Ruby 插件。后来,吕老师也说服了那位老外一起来写这个已经发布的插件,避免重复工作。如果吕老师的 Ruby 插件再晚发布几天,也许,就是另一种结果了。
到了2016年6月份,吕老师已经开始各种准备去美帝了。组里的另一位大佬同事也发布了 REST Client 插件,广受好评。那一月,也有幸亲眼见到了 Erich Gamma (VS Code 的老大,《设计模式》作者之一,JUnit 创建者之一 )。
![cfb6adb2e7a9bf64a71cad08edb0c7e3.png](https://i-blog.csdnimg.cn/blog_migrate/a1891658e7b7fb5a8b07aa0d9920a438.jpeg)
我知道,我该行动了。这是一片即将变为红海的蓝海。以 Fail Fast 为指导思想,我在短短一个月时间里,接连发布了四款插件。没想到,四个插件都广受用户的喜欢,特别是 Code Runner,下载量从1万,10万,一直到现在的500万,是我20多个插件中,用户最喜欢的插件之一。
2016年下半年,吕老师远赴美帝。而10号班车,只剩我“一个人”了。但是,我追逐 VS Code 的步伐并没有停止。正巧那时,部门开始做 IoT 的 Developer Tooling。我马上想到的就是做一个 VS Code 的插件。可惜,在那时,做一个 VS Code 的 IoT 插件并没有被列为一个优先项目。幸而,感谢微软的开放态度,我利用自己的个人时间,开发了 Azure IoT Toolkit,由于反响良好,在一年后,我把插件贡献出来,Azure IoT Toolkit 被升级成为微软的官方插件。
到了2017年,IoT 插件被正式提上议程。组里成立了专门的团队来开发 Arduino 插件。虽然我没有实际参与插件的开发中,但在整个过程中,我也提出了很多建议,在两次组内的 BugBash 中勇夺冠军~ 插件发布后,也受到了 Arduino 社区的很多好评。由此,我们部门也开始了 VS Code 的旅程,IoT、Java 以及 Ansible、Terraform 等,部门开发或者合作开发的插件超过了20个。
到了 2018 年,我有幸在微软技术暨生态大会上做了个演讲,主题是“从零开始开发一款属于你的 Visual Studio Code 插件”,把插件开发的经验带给更多的开发者朋友们。
2019年,我对 VS Code 插件开发有了更深入的思考。单靠我一个人写插件又能写多少呢,新的插件好写,但是成本最大的其实是插件维护,现在20个插件维护起来已经是很累了~ 所以,授人以鱼不如授人以渔,我开通了“玩转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号班车还在,我已经记不清换了多少的班车师傅,却依然记得那时对技术的执着与热情。
不忘初心,莫失初衷。不言放弃,追逐所爱。