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

唐門教主發表於2020-02-01

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

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

相關文章