构建一个IDE是一个广泛而复杂的工程。这似乎很明显,对吧?但你有没有想过,各种零碎的东西是如何组合成一个统一的环境的?引擎之下到底发生了什么?这些都是一些最有趣的问题。
我与WebStorm产品经理Ekaterina Prigara坐了下来,详细讨论了WebStorm本身,我们如何构建它以及我们的未来计划。
嗨,Ekaterina!让我们从谈论您在WebStorm团队中的角色开始。您的职责是什么?
我帮助团队定义产品策略,管理产品路线图。
我尝试分析和验证从各种渠道获得的想法和用例。然后,我将他们带回团队,以及对Web开发生态系统中发生的事情的一些见解。
在必要的时候,我帮助我的同事确定功能和错误修复的优先级,为用户体验提供建议,并与IntelliJ平台团队协调任务。
WebStorm团队有多大?
WebStorm团队共有18人。这个团队是跨职能的,包括开发人员、QA、产品和产品营销经理、技术写手和开发者倡导者。事实上,说到开发者代言人,我们现在就在找一个。
IntelliJ平台,IntelliJ IDEA,WebStorm和其他JetBrains IDE有什么共同点?
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和远程机器上运行和调试代码的体验,改进共享设置等等。