WebStorm訪談:咱們是如何構建 JavaScript IDE 的?

構建一個IDE是一個普遍而複雜的工程。這彷佛很明顯,對吧?但你有沒有想過,各類零碎的東西是如何組合成一個統一的環境的?引擎之下到底發生了什麼?這些都是一些最有趣的問題。web

我與WebStorm產品經理Ekaterina Prigara坐了下來,詳細討論了WebStorm自己,咱們如何構建它以及咱們的將來計劃。框架

嗨,Ekaterina!讓咱們從談論您在WebStorm團隊中的角色開始。您的職責是什麼?webstorm

我幫助團隊定義產品策略,管理產品路線圖。編輯器

我嘗試分析和驗證從各類渠道得到的想法和用例。而後,我將他們帶回團隊,以及對Web開發生態系統中發生的事情的一些看法。ide

在必要的時候,我幫助個人同事肯定功能和錯誤修復的優先級,爲用戶體驗提供建議,並與IntelliJ平臺團隊協調任務。工具

WebStorm團隊有多大?學習

WebStorm團隊共有18人。這個團隊是跨職能的,包括開發人員、QA、產品和產品營銷經理、技術寫手和開發者倡導者。事實上,說到開發者代言人,咱們如今就在找一個。測試

IntelliJ平臺,IntelliJ IDEA,WebStorm和其餘JetBrains IDE有什麼共同點?idea

WebStorm創建在JetBrains開發的開源IntelliJ平臺之上。WebStorm從IntelliJ平臺得到其UI和許多功能,例如核心編輯器和Git集成。JetBrains上有130多人在使用該平臺,而且WebStorm團隊與他們緊密合做。調試

同時,WebStorm的功能在其餘商業JetBrains IDE中也可使用,如IntelliJ IDEA Ultimate、PhpStorm和PyCharm Professional。從這個意義上說,WebStorm自己不只是一個獨立的產品,並且是全部JetBrains IDE的一部分。

與大多數JetBrains產品同樣,WebStorm每一年有3個版本。您如何提出有關新版本中包含哪些內容的想法?以及您如何肯定哪些功能沒法發揮做用?

對於路線圖中包含的內容,咱們有不少想法來源:

  • 用戶的反饋,來自於各類渠道,如問題跟蹤器、社交媒體、技術支持和用戶體驗研究訪談等。
  • 其餘IDE和編輯器,包括咱們本身的不一樣語言的IDE。
  • 產品團隊成員的親身體驗。
  • 咱們在開發生態系統中觀察到的變化,好比新的框架、工具、方法和最佳實踐的出現。

咱們的路線圖與咱們爲WebStorm和基於IntelliJ平臺的一系列產品設定的更高層次目標一致。然而,咱們沒有一個正式的方法來肯定優先級。咱們使用各類各樣的技術(例如,RICE)來幫助咱們對任務進行優先排序,咱們常常依靠咱們的直覺和經驗。

咱們的路線圖很是靈活。若是咱們以爲新特性尚未準備好,或者出現了更緊急的狀況(例如,新框架發佈時出現了中斷的變化),咱們會堅決果斷地推遲新特性的發佈。

您如何肯定發佈高質量的產品?

咱們擁有一整套的質量保證工程師,他們與開發人員緊密合做。通常而言,咱們有一個月左右的時間積極開發和測試新版本。QA工程師在開發新功能和變動時對其進行測試,並尋找可能的迴歸。他們還與團隊中的其餘人一塊兒評估新功能的可用性,並尋找遺漏的用例。

咱們還從參與「早期訪問計劃(Early Access Program)」的用戶那裏得到新功能的早期反饋,該計劃在每一個主要版本中都會實施。

繼續討論更困難的問題,JavaScript及其框架正在迅速發展,很難跟上嗎?

是的,在過去的幾年中,JavaScript生態系統中發生了不少事情。即便在WebStorm團隊工做了7年以後,我仍然對新技術的出現和模式的轉變感到很是興奮。JavaScript已經走了很長一段路,而且已經成爲一種真正強大的語言,更不用說TypeScript了。

對於咱們團隊來講,最大的挑戰是對框架很是務實。咱們和咱們的用戶都有理由對IDE中的框架支持水平抱有很高的指望,爲了達到這個水平,咱們須要投入數月甚至數年的開發資金。知道這一點,咱們常常嘗試不急於爲新框架提供支持。咱們須要根據咱們認爲會成爲下一個大事件的東西來作出選擇。有時它們不會成功,但咱們試圖從錯誤中學習。

在你看來,若是有的話,哪些新興的JavaScript相關框架和技術是最有前途或最有趣的?

哈哈,我對各類技術有不少見解,但在決定WebStorm是否支持某項技術時,我儘可能作到客觀,把數字帶到桌面上。

最近讓我興奮的一件事是Tailwind。一開始我有點懷疑,可是我能理解爲何它如此流行。

您認爲WebStorm在將來幾年會發生怎樣的變化?您有什麼新的探索方向嗎?

咱們目前的主要關注點之一是確保有經驗和經驗較少的開發人員在開始使用WebStorm時能得到良好的第一印象。咱們但願IDE可以對用戶友好,易於上手。同時,咱們也但願它能幫助用戶更好地理解他們的項目,成爲更好的開發者,不管他們使用什麼技術或擁有什麼水平的經驗。

咱們也但願IDE可以解釋如何運行和調試應用,提供關於代碼的可操做性的看法等等。在UI中平衡簡單性,可發現性和指導性是咱們面臨的最大挑戰之一。

您有什麼能夠與咱們分享有關您今年計劃的信息嗎?您最興奮的功能或改進是什麼?

不少不一樣的東西。與Code With Me合做開發,改進在Docker和遠程機器上運行和調試代碼的體驗,改進共享設置等等。