题图、作者 | 唐小引
出品 | CSDN(ID:CSDNnews)
Visual Studio 到今天,已经有 22 年的光景,因为它强大的功能和支持几乎大部分语言的开发、丰富的扩展插件等,中国开发者们喜欢冠之以「宇宙第一 IDE」的称号。但每一个使用 Visual Studio 的开发者,总会困扰于一个问题,那便是 Visual Studio 太大太重了,并且还有至关重要的一点是,曾经 Visual Studio 只能跑在 Windows 平台上。
但现在都已经发生了变化。
Visual Studio 不仅支持了所有平台,在 Visual Studio 20 周年时,17 版即从性能上进行了大量改进,使得安装速度更快、系统影响更小以及可完全卸载。同时,开源的轻量级代码编辑器 Visual Studio Code 自诞生开始便迅速地赢得了全球开发者的热爱。并且,通过 Visual Studio Live Share,能够将 VS Code 的 Java 等开发环境共享给 Visual Studio,而不需要安装任何的 Java JDK 运行环境,Visual Studio IntelliCode 能够运用机器学习帮助开发者编写代码, Visual Studio Online 可以连接远程环境,Power Platform 可以实现低代码、无代码等等。
这一切的变化均来自于微软开发平台掌舵人 —— 微软全球资深副总裁潘正磊(Julia Liuson)的决策与主导,自 1992 年加入微软至今,Julia 主导着 Visual Studio 系列产品、.Net 的功能演进及开源开放,她不仅是微软顶级代码女神,也是杰出的技术领袖,Eclipse 之父、《设计模式》作者、VS Code 负责人、现微软技术院士 Erich Gamma,与 C#、Delphi、TypeScript 之父 Anders Hejlsberg 均在其麾下。在 Microsoft Ignite 前夕,笔者再次见到了 Julia,深入聊起了 Visual Studio 及 VS Code 的未来走向,以及中国开发者颇为关心的诸多问题。
潘正磊(作者摄于微软)
重点速览:
关于 Visual Studio 体量大:以前大家的使用习惯是 install all,下载所有的东西,而现在,微软从前几年开始一直跟开发人员所倡导的使用习惯是只安装你需要的。
谈 Java 开发常用的 Eclipse、IntelliJ IDEA:我认为那是非常好的 Java IDE,也不希望他们来用 Visual Studio,因为开发者可能不会收获一个好的体验,而 Visual Studio 本身也不支持 Java,但是 Visual Studio Code 会不太一样。
VS Code 的初心:对于同时使用几种不同编程语言的开发者而言,会非常希望有一个一致性的工具,这个时候 VS Code 就是一个非常好的工具。
谈 Visual Studio 是否会被 VS Code 取代:使用场景不一样,Visual Studio 具有着非常典型的 IDE 功能,并将所有功能串联起来,而 VS Code 用户要做很多手工步骤。这就是 IDE 和 Code Editor 的不同,如果我把 Visual Studio Code 做得跟 Visual Studio 一样,你们就不会喜欢它了,因为它就不是一个轻量级的,这么快捷、便用的,它变成了一个重量级的 IDE,就失去了它最本质的特性。
谈低代码、无代码开发:低代码、无代码一定要基于现有的平台,如果脱离了平台来做低代码、无代码,那就非常难做。
重磅发布:Visual Studio Online 公开预览版来了!
从开源开放到解放生产力:前几年我们工作重点更多是开放型的支持,现在相对做得非常不错了,接下来支持生产力将成为第一优先。
谈开源:对于整个开源社区来说,如果分流,对谁都不是一个好事情,微软开源的项目没有国界。
评 C#、Delphi、TypeScript 之父 Anders Hejlsberg:Anders 大概是在过去二十年里最有影响的编程语言设计师,之前的 Delphi,到后面的 C#,到现在的 TypeScript,三个语言都是上百万的全球用户,你找不出第二个语言设计师有这种成就。
技术大神如何修炼:像 Anders 和 Erich,他们之所以是技术大神。因为他能够看到这个技术以后的需求方向和总的趋势,他的眼光是非常精准的。
以下为对话实录(万字长文,可收藏阅读):
CSDN:我记得使用 Visual Studio 时主流还是 2012 版,现在这么多年过去了,昨晚又试了一下安装最新版本的 Visual Studio,结果因为网络问题两次都失败了,我就想起了 Visual Studio 对于许多开发者的普遍痛点,就是体量太大、太重型了。
Julia 您从 1992 年开始加入微软,起于 Access,这个我也曾使用过,后来在 Visual Studio 上度过了大部分的光阴。您怎么评价 Visual Studio?以及它现在所面临的挑战是怎样?毕竟在过去二十多年里,它主要的演进其实都是您所主导的。
潘正磊:二十多年前有点儿久远了,我们先讲讲最近吧。Visual Studio 和 Visual Studio Code 这两个产品在全球所有开发人员里使用和反馈都是非常强烈的。它们的月活用户现在都超过了 900 万,而且用户量增长是非常迅猛的。
关于 Visual Studio,原来 2012 版本还只能做 Windows 开发。现在因为微软的战略,你要是看微软 2019 的产品,包括 Visual Studio 里面 C++ 的开发,我们会支持 CMake,支持在 Linux 上面 Debug,广受好评。包括之后我们 .Net 全部做开源,然后跨平台。在今年 9 月份刚刚发布的 .Net Core 3.0,全球的反响是非常好的。Visual Studio 作为 .Net 开发人员最经常用的产品,二者相辅相成。根据我们的战略,Visual Studio 现在的产品是支持所有平台、所有开发语言的,里面包括 Python、C++,有 Unity 可以做游戏开发,也包括 Unreal Engine 虚幻引擎,可以做 .Net,可以做不同版本的 .Net 等等,还可以做 iOS、Android。
我们现在的开发包,希望用户用哪一个 workload 就只装那个 workload。可能以前在 2012 年时,大家的使用习惯是 install all,下载所有的东西。因为 Visual Studio 是支持所有平台的,不知道哪一个用户是会既做 Python,也做 Xamarin,我们还可以用 C++ 开发 iOS,包括我们的 C++ 里有 64-bit 或 ARM 64-bit 等非常多的不同版本,开发者要将它打包全安装下来,那个安装包就大得不得了,非常痛苦。而现在微软从前几年开始一直跟开发人员所倡导的使用习惯是只安装你需要的。你要再重新安装另外一个 workload 是非常容易的,所以大概从 2015 年开始一直在推这个理念,因为我们面向所有的平台。只装开发者自身所需要的,当需要另外一个时再去安装它,否则在机器上占了很多位置,但开发者却没有用到的话,占了地方也没有起到作用。
我看你在用 Mac,我们有 Visual Studio for Mac,最近也推出了很多更新。
CSDN:我昨天试的就是 Mac 版本。
潘正磊:中国使用 Visual Studio for Mac 还真挺少的。
CSDN:其实 Visual Studio 能支持各种各样的功能语言,能够去实现很多。可是到一个专门去做像 Java、Python 等的开发者,会想为什么我不用专门的 IDE,而要去使用 Visual Studio 呢?
潘正磊:如果是 Java 的话,做 Java 的用户一向使用专用的 IDE,我们没有推荐 Visual Studio 给他,这也不是合适的。大多数 Java 开发者现在要么使用 Eclipse,或 IntelliJ IDEA 的产品,我认为那是非常好的 Java IDE,也不希望他们来用 Visual Studio,因为开发者可能不会收获一个好的体验,而 Visual Studio 本身也不支持 Java,但是 Visual Studio Code 会不太一样。在 VS Code 里我们可以看到用户很多使用习惯并不是传统的 Java Server,它现在用 Java 来进行云原生开发,然后用 Kubernetes、容器。
在这个情况下,Visual Studio Code 上的 Java 配置,对这些用户来说就相对非常合适。而且我们上面有非常好的 Kubernetes、容器支持。所以在这个情况下,我们希望开发者能够来试一下 Visual Studio Code 上面的 Java 配置。
关于 Python,现在也有现成的 IDE,PyCharm 也是非常好的一个产品,我们对 JetBrains 公司非常尊敬。
同时,在 Visual Studio Code 里对 Python 怎么做有很多自己的想法,我们做了很多插件。因为我们现在看到 Python 用户尤为显著的特点,跟很多 .Net 不太一样,许多 Python 开发者是同时使用好几种编程语言的。一般来说,不只是 Python,还会有 C++ 等。对于这些同时使用几个不同编程语言的用户而言,会非常希望有一个一致性的工具,这个时候 Visual Studio Code 对他就是一个非常好的工具,我们看到很多用 Python 的人也在用 Java,或者是 Python 再加上 C++,使用的语言不止一个。
我们针对的是这一类用户,现在 Python 的用户在 Visual Studio Code 上增长非常快,刚才说的月活量已经差不多达到了 150 万。
CSDN:所以很多开发者会关心微软自家非常强的 Visual Studio,会不会被 VS Code 所取代,这是在我们中国开发者圈子里讨论很多的一个话题。
潘正磊:我觉得使用场景不一样,比如说像 .Net 里做桌面开发或移动应用开发,Visual Studio 里最有名的就是做完以后 F5,按下那个键。但那一个键下面都有什么功能在里面?先把你编写的代码存起来,再编译一下,编译把二进制源码部署到你的目标程序上,你可以设置断点调试,整个一套都连在一起。
这就是一个非常典型的 IDE 功能,就是它将这些功能都给你串起来了,所以你的工作流就已经给你规定好了。你要是遵照这个 IDE 给你的工作流是非常简单,像 F5 可以做到一键生成。我们前一阵在 NVP 大会的时候有几个 NVP,跟我说:我在 Visual Studio 调试 .Net Core,在容器里很容易但在 VS Code 为什么这么难?因为在 Visual Studio 里,你改了东西,我们知道你前面一次编译的是什么,后面一次编译的是什么,我们只把它中间变更的那部分打到容器里去,帮你把这些重新设置好,所以开发者用起来觉得非常顺。
Visual Studio 2019 演示
Visual Studio Code 中间这一段一段都是用户自定义的,Visual Studio Code 是不管的,用户要做好多手工的步骤。我说这就是 IDE 和 Code Editor 的不同,如果我把 Visual Studio Code 做得跟 Visual Studio 一样,你们就不会喜欢它了,因为它就不是一个轻量级的,这么快捷、便用的,它变成了一个重量级的 IDE,就失去了它最本质的特性。我觉得,根据不同的场景,用户会使用不同的工具,我从来没有觉得一个工具就走遍世界了。
VS Code
CSDN:我记得之前开复博士谈过,您在时间管理上以效率著称。您最开始也在微软内部设置了回答问题的时间。您现在比之前更忙碌了,时间管理上是怎么做的,以及如何体现在 Visual Studio 系列产品的演进上呢?
潘正磊:在时间管理上,我现在最主要抓的是战略,最主要的体现就是什么应该做,什么不应该做。再接下来就是文化,怎么来改进我们的文化,帮助这个团队做的事情是应该自然而然的,它做的是我们应该做的事情。如果每件事情我都要自己去管就太累了,等于是怎样将它划分优先级,抓最重要的事情。这体现在几方面,第一是我们在做产品时,其实有一个很大的产品策略,像我们更新战略时,比如做 .Net Core,我们为什么要将它全部开源放到 GitHub 上做成跨平台,后面还有很多很多工作,但这个一定是最优先的。
我们接着做的,即从效率上对 .Net Core 第一个要求就是性能,性能一定要做到最好。比如前不久我们在发布 .Net Core 3.0 时,大家都知道 Stack Overflow 是开发人员都经常去的地方,它原本只是用 .Net 开发,但现在已经全部迁移至 .Net Core 上了,性能等各方面都有了显著的提高。
在优先级上,从云原生到性能,这是我们要做的最核心、最重要的一部分。这部分在我们很多用户反馈上都得到了体现,包括微软内部的,比如去年 .Net Core 2.0 发布时,必应(Bing)团队用完后就发现吞吐量和性能都有了特别大的提升,还非常高兴地写了一篇 Blog。现在微软内部有更多的团队都在使用,有许多类似的反馈。
第二个就是体现在 Timing,我们一开始做的是云原生那一端,现在又将 WinForm 跟 WPF 也做到 .Net Core 3.0 里,帮助有很大的桌面产品的用户,比如 National Instruments 等。用户是需要一直与时俱进的,微软为其提供了一个全新、可控的平台。所以我们的聚焦点第一就是将这些平台移到了新的运行平台上,而且我们做的是非常针对客户需求的产品。
这也就直接关系到,我该关注什么?
我关注很多的是我们自己的企业文化、团队的文化,我觉得团队文化很重要的一部分,就是和客户沟通,真的是花很多时间跟客户沟通,跟客户交流,真正能够知道客户需要的是什么,他为什么需要这些东西。这样我们在开发的时候才能够特别地有的放矢,这也是我自己从效率来说花了时间去建设企业文化。
原则对了,这样的话,这个团队做出来的东西大多数的时候就是对的。或者团队问「为什么我们要做这个」时能够讲清楚,微软有一套自己的原则在里面。这个原则也体现在微软所有的产品里,譬如拿编程语言 C++ 来说,微软前几年很大的一个关注点,就叫 Conformance 和 Performance,适应性和性能。Conformance 就是我们要怎样支持 C++ 语言的标准,Performance 就是编译器本身的性能。当这个团队关注点在这两方面时,你会发现它们会有非常快的进步,我认为团队的目标同时也体现了能够怎样给用户价值。
CSDN:在去年我见您的时候,当时还没有想到在 Visual Studio 包括 VS Code 去使用 AI 辅助开发的功能(IntelliCode),很多开发者到现在终于看到了像在微软的 IDE,包括编辑器的开发里,能够见到像 Java 和 Python 等的 AI 辅助开发。
从 IntelliCode、Visual Studio Online 到 Power Platform,微软似乎正在着力提升效率、解决生产力的问题。还有一个是跟 AI 相关的,我们看到的微软在做 AI 辅助开发,是不是说后面所有的代码开发和代码托管都能够跟 AI 进行深度的融合?
潘正磊:特别好!其实这也是我想谈的一个话题。第一个是我们当时演示 IntelliCode 时只做了 C#、Java,现在 Python、TypeScript,连 WPF 的 XAML、C++ 等等都有支持。
第二方面就是做得更完善了,有一些内部正在测试的模型。原来只是一个点,现在开始给你一个范围的参数,可以做更完整的一个句子,不是一个碎片了,是一整个句子的结果,我们现在可以进化到这一方面。很多都在内测中,在 Ignite 上应该可以看到一些新的演示。
再有就是,跟 Source Code Control 的结合会越来越多,比如前一阵已经推出 Custom Model Training,拿 C# 举例,现在 C# 的基础模型是在 GitHub 上训练的。这个尤其明显的问题是在 C++ 里基础类型非常少,但是如果去看的 C++ 的工程文件,字节里面有好多类型,你不给我看,我看不见,也没有办法知道。
现在我们将它可以做到和 Build、CI process 集成,在开发者一边在持续集成 Build 时,可以同时帮助进行 Custom Model Training。这样训练出来的模型,就可以给整个团队使用,而且这个 Model 是集成在 Source Code Control 里的,会有一个非常简单的体验。这个部分我们已经逐渐在做,整个端对端的产品应该在 Ignite 上就可以出来,就是你刚才说的怎么把它跟 Source Code 深度集成。
对于 AI,我们认为在开发流程中的每一步,AI 其实都可以让所有开发人员的生产力有很大提升。比如说在开始写代码时,在提交 Pull Request 之前,可能会有安全性警告,有可能从前人犯的错误中学到的经验,我们可以在你写代码的时候就进行提示,这也是一部分。
在你写 Test Case 时,怎么可以让 AI 帮你进行 Test Case?首先是你写的 Test Case 跟你的代码运行时所用到的有关系。尤其是在做 CI 的时候,常常会运行测试。怎样才能知道到底是测试的问题还是代码问题?我们叫 Auto Healing,这里有很多新的想法可以去做。我认为 AI 在开发流程中的每一步,其实都可以帮助到团队来提高生产力的。
CSDN:您之前曾说在三十年前大家对于数据库都是一个全新的概念,放到现在 AI 对于大家来说也是一样。在未来五到十年,微软会如何做来实现让 AI 像今天的数据库一样被大家认知?
潘正磊:这个问题非常好,我们从场景来说,比较笼统地是分为三大场景。第一个场景是我们把很多 AI 能力变成一个 API 提供给你,比方说现在很多的语言翻译,你放一段声音进去,后面的文本就出来了,直接调用 API,不需要做任何东西,后面的模型都帮你训练好了。这也是开发人员能够非常好地利用 AI 的场景。
第二个场景,数据模型一定要做一些 Custom Train,需要强化学习技术,就是说我们有一个基本的模型,用户可以在上面用自己的数据,将它调试得更匹配于你的场景,怎么让它做得非常简单、快捷,我们现在在这方面也给予了很大关注,包括在 Ignite 上会有一些 Business Application 的发布会跟它有关。这是我们第二大场景,用现有的模型,和自己的数据再训练。
第三个场景,很多时候还是要自己开发。现在大家做 AI,说来说去就是语言和视觉,但实际上 AI 有非常广泛的场景。像我们做 AI 时就在想编程语言跟传统意义上的语言还不一样。现在,医药、石油、金融等各行各业都在使用 AI,一定会需要对各自领域非常熟悉的人来开发自己适用的模型。我们在这方面,现在也在研究对这些领域要开发自己需要的模型,这些模型和语言、图像有哪些不同?应该不是一样的,并且会碰到的挑战是什么?在这上面会有很多不同的场景我们想支持,包括如果你是一个大的保险公司,你说我开发出来一个模型可以计算保险费是多少。人家会想知道你用的是什么数据来产生了这个模型?为什么我的就比你的贵?
如果有这种问题提出的话,你要能够解释清楚。这也是现在的很多模型,你不知道它为什么,这个我们叫做模型解释性,就是你怎么解释,怎么保证这个数据里没有很严重的偏见,你要知道偏见怎么影响了这个模型的提供情况。
比如,用语音对 AI 翻译说 ta 是医生,ta 是护士,AI 翻译可能在把「ta」变成英文时,直接翻译成「He is a doctor,she is a nurse」,这就是非常明显的 男性、女性的偏见。你要教 AI 怎么合理地更正,以免更正后的 AI 虽然会全部翻译成「He is a doctor,he is a nurse」来避免性别歧视,却又把「她是妈妈」也翻译成了「He is a mother」,这样的 AI 并不是真的根据语境来选择语言。
这也就说明,你在做模型训练时,其实有很多的偏见,怎么调这个偏见其实也是一个非常难的技术问题需要解决。像我们在语言训练时,这个问题其实是贯穿我刚才说的三个场景里的,不管是提供 API,还是自己做强化学习,或自己开发模型,都会有这些问题,所以有些平台式的问题需要解决。这个 Data Lineage,Data 原来是哪儿来的,这一次跟上一次用的是不是同样的数据,同样的数据训练出来的结果是不是一样等等。这就像软件开发一样有一个过程,离成熟还差得很远。
CSDN:Visual Studio 现在跟哪些行业有深度的合作?刚才听您讲,很多涉及到的像石油这些行业正在着力做数字化转型,我跟很多在工业领域的人聊,他们在做数字化转型时,普遍面临的痛点就是,我们互联网行业计算机专业人才大量聚集,而工业领域则……
潘正磊:你说得太对了,他没有软件人才。
CSDN:所以会想到你有软件人才,同时懂一点工业的知识,工业现在非常稀缺的就是这种人才。微软现在属于去致力于解决工业领域哪些问题?我看到像 Power Platform 应该就是属于主要面对向数字化转型的一些企业。
潘正磊:应该说微软所有的产品都是针对数字化转型的企业,我们所有的产品,不管是我们的 Power Platform、Azure、Visual Studio、GitHub 等等,其实都是为所有的数字化转型的企业提供了一个非常好的平台,包括新兴企业都是一个非常好的平台。
从微软的使命来说,我们“予力全球每一人、每一组织,成就不凡”,所以我们是一个平台化的公司。具体的话,微软在每一个垂直产业,全球的销售团队和技术支持团队,还有技术团队是针对每一个垂直行业都确实是有懂那个行业的人,也懂软件的人,一起和那些企业服务的。
而我所做的则更基于平台化,以 ML.Net 举例,有很多不同的企业开始使用。我们看到这些企业真的是五花八门,我觉得眼界大开。比如体育机构会用来计算运动员的得分率,食品行业会运用其支持的 IoT 解决方案来精准处理大批量的原食材,控制干湿度等条件,甚至加油站用我们 ML.Net 去看有没有人偷油,律所会用来精确查找文件等等,非常有趣。
因为客户来问技术问题时,我们都会问他,你做的解决方案是什么?就会有各式各样的答案。我觉得很欣慰的是,一个产品做得好,体现在能够被各行各业都用起来,从来没有想到过还有这么好玩的应用。
你身处这个行业,会知道对于行业以及自己公司里需要的是什么、缺的是什么,实际上我们提供的都是平台技术,帮他们能够搭出来自己要的解决方案。
CSDN:这么多应用案例,能够应用到 Visual Studio 整个的演进中吗?
潘正磊:对于整个演进来说,我们看到继续提供更好用的平台解决方案,可以帮助不同的企业。另外就是像您刚才说的,现在我们在全球看到这些数字化转型的公司数量是非常大的,数量远远超过互联网公司。他们的挑战,很多是缺乏软件开发能力,所以微软现在的思路,是将很多东西能够更多地以平台化的方式提供给他们。他们一开始就在一个比较高的平台上,有很多非常类似的底层部分微软可以帮他开发完成。
Power Platform 实际上就是一个非常好的例子,包括 Business Application 里有很多针对零售业做的解决方案。在这上面我们跟 Power Platform 有一个集成,你在 Power Platform 方面尤其是用 PowerApps,你不能开发的东西可以到 Visual Studio 上开发一个插件,开发成一个 API,又可以跟 Power Platform 连在一起。这也是一个解决方案,既可以非常快地将自己所需的工作流写出来,在写不出来的时候又可以用平台变成一个 API、插件、扩展的方式,能够把这个功能提供给客户,这也是我们做的非常多的。
还有一方面是跟很多的伙伴合作,全球数字化经济中有许多提供现代软件服务的伙伴,微软也希望帮助这些合作伙伴转型,通过他们来帮助这些公司转型。不是说仅有微软,而是微软和合作伙伴在一起。当然还有很多公司现在也认定这种数字开发能力是核心的能力,所以当前我们在全球看到的情况是,从招聘开发人员的百分比增长速度来说,这些传统企业招人的增长速度比微软这种软件企业速度增长快多了,并且是大批的。
但是,全球非常缺少程序开发人员。为什么我们会将提高开发人员生产力放在非常至关重要的位置?因为本来就招不到人,我们希望能够让现有的人做出更多的东西,让他把时间都花在刀刃上,真正将问题解决。
CSDN:像 Power Platform 是不是属于低代码或者无代码开发的方式?
潘正磊:是的。
CSDN:我记得低代码、无代码开发差不多已经有几十年的讨论了,我很早的时候就看到过。包括在移动互联网时代,App 开始盛行的时候,大家就会想能不能直接把 App 的开发实现特别简易的操作方式。其实现在大家并没有看到低代码或无代码很好的落地。现在我们已经到了 AI 和 5G 演进的阶段,低代码和无代码是什么样的需求状态,以及微软会具体怎么做?
潘正磊:微软在低代码和无代码也是尝试了很多年,包括我刚加入微软时做的 Access 产品就可以说是低代码、无代码的产品,Access 现在使用的人依然非常多。在 SharePoint、Office 上做定制,用户是非常多的。其实里面有非常重要的一点,低代码、无代码一定要基于现有的平台,如果脱离了平台来做低代码、无代码,那就非常难做。低代码、无代码最好的是在一个大的产品上做扩展。以前像 Access 还是有较多代码的,但像 VBA 或 SharePoint 上的定制,是基于现有底层非常大量的功能,所以在上面做一些扩展,就是将自己要的东西搭出来。这是一个非常好的模式,所以现在微软 Power Platform 是基于 Business Application 和 Office,我们还在逐渐将它引到 Azure,就是把我们这些大的平台作为底层。
做低代码、无代码,一般做任何的产品第一个问题是数据库在哪儿?你一说数据库,好像就变成了怎么低代码、无代码的话。你的数据在哪儿?你的 API 在哪儿?如果下面有一个 Business Application 这样一个大的平台,你的数据就在这里,而且低代码、无代码本身对数据有一定的认识,才可以把这个场景做的非常端对端。如果是空去考虑……
CSDN:空中楼阁。
潘正磊:对。所以我们的 PowerApps 也是有移动客户端,但同时说你的数据在哪儿?在 Business Application 里面,或者数据在 Azure 里面。不是说上来就给别人一张白纸而凭空去创造一个无代码、低代码的 App,这个 App 要做的事情多了。但是如果在下面有一个很大的框架,有很多的功能已经开发好了,在上面做一个扩展。其实从解决方案来说,第一也合乎情理,很多客户开发的是只针对于自己公司所需要的,很多时候对于这一个小组里面这一组人,这是经常用的东西,我可以把它很快地变成一个产品,可能明年他们就不需要了。因为明年整个工作的工作流又改掉了,就可以重新再开发一个,这就是非常适应。就是说多种工具,没有一个工具。我觉得有人说一个工具可以开发所有东西?我认为是不可能的。
CSDN:大家在谈宇宙第一 IDE ,Visual Studio 会不会成为这样一个工具。
潘正磊:这不是我们的设想,不合乎情理,我们不会做这个。所以我们跟 PowerApps 现在集成得非常好,开发一个新的 API,做完以后作为插件给 PowerApps,这才是一个好的工作方式。
CSDN:中国已经开始了 5G 商用元年,各大运营商都开始去做 5G 的各个套餐了。同时,国内很多开发者开始讨论一个问题,在 5G 时代是不是像云原生、云开发会变得盛行起来。在 Build 大会上发布 Private Preview 的 Visual Studio Online 能够方便开发者连接到远程环境,在浏览器中体验许多 VS Code 的强大功能。很多的开发者看到这个的第一反应,是不是能够实现手机在线编程了?在这一块微软是怎么考量的?当 5G 尤其是出现了很多像 IoT 设备的时候。
潘正磊:这里面有好多问题,我先讲一下 Visual Studio Online,在 Ignite 大会上会发布公开预览(Public Preview)。微软 Visual Studio Online 的初衷,还是提升生产力。因为看到很多较大的团队,一个非常重要的问题就是当新的开发人员加入,一般来说需要花费两天时间,来将工作环境创建好,真正开始编第一行代码。
其实想一下,你从另外一个机器上创建有一套规章制度,很多很多条,现在在 GitHub 上可以看到很多项目。一开始起步都是十几行,如果有一个方法能够把它自动实现在一个模板上面,新的组员进来后再仿照一个就可以了,这个事情多么简单。我们叫 Developer onboarding,这是一个非常重要的步骤。其实还有很多应用场景,比如说我们有一些大型产品,在自己的机器上编写可能会写上 45 分钟的时间,这个时候有一个同事,为此去 Azure 上开了一个非常大的机器。本来需要花费 45 分钟,到 Azure 上 10 分钟就编完了,因为是一个很大的机器!
有人问说那得花多少钱?他说我这才 10 分钟,这一个小时才花了 2 块钱,就用它做这么一个东西,这太值得了!微软怎样能够非常简单地帮助开发人员,当有这种情况的时候马上就可以有辅助的虚拟机,帮助你把很多工作做完。包括现在很多开发者会发现,我们以前谈过一个叫「Shift」、「left」,很多东西以前在你编完代码之后,再 CI 等等,现在很多时候用户希望提交之前就把这些做完。那拿什么机器做?都拿这台机器做吗?你做了这个东西的话,这台机器还能用吗?我们就希望能够有很多辅助的机器,你开了之后就把这些测试外包出去。等做完后有问题告诉你,没有问题就可以了。
同样你的这台机器,原来可以干什么,还是可以干什么,它不会变慢,这样类似的场景其实有非常多的,包括还有很多不同的版本。像现在用 Python x.x,你要去试一个新的版本。我可以保证当你在机器上装两个版本之后,会出来各种各样奇奇怪怪的问题,这时候你就很希望「我再开一台机器换个版本试试看好不好,不要都装在一台机器上面」。这一类的问题非常多,微软 Visual Studio Online 对于个人开发者,就可以帮助你非常容易地解决这些问题。
对于一个团队来说,Visual Studio Online 不仅可以很快地帮助一个团队的 onboarding,还有很常见的场景。就是做开发的时候,使用者以前可能一个问题做到一半,调试的时候有问题了,需要请另外一个人来帮你,这时候可以 LiveShare。其实很多时候开发者会说,你的 VM 都装好了,你就把 VM 给我,他就可以接着调试下去。
现在这些东西都是分歧,没有什么特别简单的解决方案,尤其是国内很多企业,对它的产品的封闭性也有一些考量,不像代码下来。如果都是在一个公司可以管控的网络情况下,像这种情况对这一类的团队合作,Visual Studio Online 都提供非常好的帮助,都是在云托管的情况下,对所有的管控都会有很多的,会逐渐加各种各样的企业访问控制,可以帮助用户又可以快捷方便地分享,又有企业把控在上面。微软常常说的就是”Loved by developer,trusted by enterprises”,确实是这样。
这个是微软对 Visual Studio Online 想要做的,它作为一个平台服务,其实适用很多不同的场景。我自己对 5G 很兴奋,不仅有工业的 IoT 应用,这个对大量的数据上传会有非常好的作用。实际上我们看很多的教育的场景也是一个应用场景,我上次来中国,跟中国很多教育机构有聊过。
刚才我们谈到程序员短缺,现在作为一个老师想远程教育编程,这是相对来说比较痛苦的事情,这个在全球都一样。因为你一开始编程的时候,你是希望所有的学生运行的机器是一模一样的。最后就能够看见他在上面跑什么,而他有什么问题可以实时跟你说。最怕版本不一致,每个人出的问题都不一样,老师会非常累。
Visual Studio Online 作为这样一个教育平台的提供,也是有非常先天的优势。再加上现在 5G,不论在哪里运行,运行速度会有大量地提升。对这个产品,尤其是更加偏远的地区,可能我们在北京、上海不太觉得,如果在比较远的二线城市、山区等等,它的体验就会完全不一样。如果真的 5G 能够提供到这种覆盖率的话,这种体验会好很多。现在的问题就是我不能用网上提供,因为它会慢,它一定要本地,本地就会有很多问题,就会有这种冲突,如果在 5G 情况下这种就会统一起来。大家都是 5G,可以随便上网看视频,可以随便上网学习编程,这对我来说是一个比较令人兴奋的场景。
CSDN:Visual Studio 代码量有多大规模了?有上亿?
潘正磊:没有,微软还在使用很多第三方 SDK,像我们用 Android 的 SDK,我也没看过 Android 的 SDK 有多少代码量,为什么会关心代码量的问题?
CSDN:中国开发者极其关注代码量,如果说做一个事情比如说用 Python,只需要一百行代码或者两百行代码就能实现什么?中国的开发者喜欢关心效率方面,如何用更少的代码去实现比较好的功能。
潘正磊:这个很合乎情理,但 Visual Studio 的代码量对于使用者来说其实没有太多关系,比如说我里面有 C++ 代码,我有好几套,因为我有一套给 32 的,一套给 64,还有一套给 Arm 64 的,这是三套,它有很多类似性,但是每一个不一样。但对于开发者自身而言,长期来说,当然代码量少的话容易维护,容易懂,这个是非常有意义的。
CSDN:这其实就是我们常常会面临的一个问题,在做实际研发时,面临一个非常头疼的问题,很多历史代码。于是重构的时候就会很担心,我解决了一个问题会不会引发其他的一些问题。像 Visual Studio 已经有二十多年的历史,积累了非常多的代码,到现在是如何保持精进去迭代的?
潘正磊:测试,一定要有自动化测试。我觉得微软 Visual Studio 里面几点做得比较好,虽然迭代非常快,但是产品质量一直是非常高的。第一里面有大量的自动化测试,迭代快速了一定要自动化测试,没有自动化测试没有办法迭代起来。
第二个,以前一直说微软有自己的 Doc foot,我的代码有预览频道,还有发布渠道。实际上这里面还有两层,一层就是团队人自己用,一般来说昨天晚上编的,今天就开始用了,这是我们最里层的 Doc foot。还有给微软所有的员工,像 Office 团队等等会帮我们一起 Doc foot。
这样再去预览频道,预览完了以后再发布,里面有一些坑自己第一时间会踩,这个机制实际上是非常重要的,一定要有大量的测试,还有很多内部的使用。
CSDN:其实近两年,不管是 AI 辅助开发,还是 Live Share,以及 Power Platform,还有 Visual Studio Online,其实有一个共性是都在解决生产力的问题。是不是像 Visual Studio 的一个战略规划,在近两年,提升生产力是一个非常重要的地位?还有其他哪些战略规划?
潘正磊:Visual Studio 提升生产力是我们一向的追求,但是我觉得最近这几年,前几年做得更多的是把它变成一个更开放的平台。不是只做 .Net 或其他,而是把它变成支持所有,Visual Studio 包括 VS Code 加在一起,支持所有的产品。前几年我们工作重点更多是开放性的支持。当然了从支持生产力上也有提升,但是我觉得排名第一、第二,可能开放性是第一,支持生产力是第二。
现在我觉得开放已经做得相对来说非常不错了,接下来我们支持生产力一定会变成第一。不管是用 AI,各种用其他的方式,还有其他功能的,这都是一种实现。但是从总的来说是对生产力的极大提升,而且看到全球的不仅开发人员的短缺,如果一个数字化产业没有快速迭代,那都不能称之为数字化。所以本身对开发团队的要求也会越来越高。
CSDN:还有一个关于开源的问题,上次见到您的时候,那个时候大家还在关心微软收购 GitHub 的事情,现在过去了差不多有一年的时间里,在开源方面也发生了非常多的事情,受国际环境的影响,中国开发者开始关心是不是在中国需要做一个自己的开源平台?但是 GitHub 包括微软所倡导的其实是无国界的开源开放,对于中国的开发者,在开源方面您有哪些建议?
潘正磊:我上次来中国实际上是陪 GitHub 一起,我们现在非常关注于提升中国开发人员在使用 GitHub 上面的体验。所以这个 GitHub 团队专门有一个,也是他们的关注点之一。我觉得对整个开源社区来说,如果分流,这对谁都不是一个好事情。因为大家都有一个使用习惯,开源项目去哪儿看呢?还是怎么看?我觉得这不是一个好事情。
像你说的,微软推的是开源无国界,微软开源的项目确实是没有国界的。
CSDN:还有一个是已经好几年非常关心的一个问题,关于技术领导力的问题。我记得最早的时候,见到 VS Code 的 Erich Gamma,包括C# 之父 Anders Hejlsberg,其实都是在您的麾下,我记得 Erich 是管理着二十多人的团队,Anders 只有自己一个人。
潘正磊:是,现在还是。近期 Anders 对 C# 的关注相对来说少一些,他主要都在做 TypeScript。现在 TypeScript 在全球来说也是增长非常快的一个语言,一般来说做 JavaScript 的产品,只要稍微代码 base 大一点都在用 TypeScript。
我觉得 Anders 大概是在过去二十年里最有影响的编程语言设计师,之前的 Delphi,到后面的 C#,到现在的 TypeScript,三个语言都是上百万的全球用户,你找不出第二个语言设计师有这种成就。
从 C# 来说,在最近的 .Net Core 3.0 里也发布了很多新的功能。尤其是在支持机器学习方面还发布了相应的 ML.Net 等等,之后语言针对这一类会有更好的支持。
C#、Delphi、TypeScript 之父 Anders Hejlsberg 的 GitHub 主页
CSDN:您在技术管理这块,包括这些技术大神,是采用什么样的管理方式?
潘正磊:具体就是说,像 Anders 和 Erich,他们之所以是技术大神。因为他能够看到这个技术以后的需求方向和总的趋势,他的眼光是非常精准的。所以我觉得作为企业领导,我对 Erich,有一些事情他要做的东西,我完全知道他。他具体怎么做肯定是 Erich 的事情,我不会去参与。但是有一些问题我们会讨论,比如有三样东西可以做,从技术的角度非常有趣,但是从商业角度来说不是我们现在所追求的。我要做的是这几件事情,希望他的精力能够专注在这几件事情上面。
我们还有一些讨论,比如具体哪些东西开源,哪些东西不开源,因为我们还有商业模式的考量。这中间具体怎么实现?我们有很多这种讨论,跟 Anders 非常类似的,都是一个交流。他们有他们的意见,我也有我的看法,经过一番讨论以后就可以决定团队哪些东西要做,哪些不要做。产品不是单独存在的,是在一个大的框架下面的。
CSDN:去讨论关于哪些开源、哪些不开源,这其中的一个准则是什么样的?
潘正磊:要具体情况具体看。其实有一些东西可以想象,我们要有一系列战略规划,如果全开源的话,比如我们另外一个云厂商把我们开源的全部直接拿去变成它自己的服务怎么办?所以说这种东西还是要想清楚,哪些东西是要开源的,为什么要开源?我们跟社区一起想达到的目的是什么?还是需要许多考虑的。
【END】