构建一个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个版本。您如何提出有关新版本中包含哪些内容的想法?以及您如何肯定哪些功能没法发挥做用?
对于路线图中包含的内容,咱们有不少想法来源:
咱们的路线图与咱们为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和远程机器上运行和调试代码的体验,改进共享设置等等。