獨家對話微軟頂級代碼女神潘正磊:Visual Studio 與 VS Code 的未來走向 | 人物誌

題圖、作者 | 唐小引
出品 | 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: 去討論關於哪些開源、哪些不開源,這其中的一個準則是什麼樣的?

潘正磊: 要具體情況具體看。其實有一些東西可以想象,我們要有一系列戰略規劃,如果全開源的話,比如我們另外一個雲廠商把我們開源的全部直接拿去變成它自己的服務怎麼辦?所以說這種東西還是要想清楚,哪些東西是要開源的,爲什麼要開源?我們跟社區一起想達到的目的是什麼?還是需要許多考慮的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章