浅谈IDE插件在研发体验中的关系

echosoar 原创发表于 2020/05/25 10:38:20

为什么要插件?

1、IDE无法提供框架能力的研发体验支持

    在本地的研发体系中,IDE是距离所有开发者最近的地方,开发者每天的工作有大部分时间在和IDE打交道,而在项目的开发与排错过程中,开发者总会对所使用的框架和工具有不熟悉的地方,而IDE又不会针对于每一个框架做特殊的定制,那么久只能由框架和工具的研发者通过插件对IDE进行扩展,把开发者通常很难去记忆、很难去看清楚的东西展示出来。
    比如在Midway体系内,IoC的相互依赖关系、调用过程中的链路拓扑都是开发者无法通过代码去感受的,这就需要由插件来提供这些能力。

2、用户至上

    让开发者在IDE的各处都能体会到我们为他提供的无微不至的关怀,而让开发者感受最深的关怀就是降低使用难度,在不知所措时提示他可以做什么;清晰的框架结构分析,在遇到问题时帮助他定位到问题的发生链路;提升效率,在辛苦编码的时候自动地帮他生成很多代码。另外在研发的过程中通常需要打开一些平台进行配置等操作,而把这个配置的能力也都在IDE中进行集成,让开发的全流程都在IDE里面,带来不中断完整的开发体验。
    可以想象一下,如果一个开发者在研发的链路里面大部分时间只需要通过键盘的↑↓就可以完成大部分工作,这让研发工作变得何比轻松,也许有一天一个不熟悉编码的人也可以在代码编辑器中快速学会如何开发。部分人的力量总是有限的,也只有让开发者感受到关怀,让他感受到在开发的过程中他就是上帝,有无数的工具人在为他服务,那么他才会爱上使用我们的产品,才会把他富有想象力的点子贡献给产品,推断我们的产品进一步发展。
    

插件最关心的人是谁/最需要插件的人是谁?

    我觉得应该分为两个角度,插件提供的能力有两部分,一部分是帮助新手,如前文所述,越是新手越需要有人能手把手的教他如何开发,越需要被关怀,如果插件能在他不知所措时一步步地提示他,这就会让一个新手逐渐的学会如何去开发,如何去调试,如何去发布,会让他逐渐爱上开发。另外一部分是辅助解决开发过程中遇到的问题,帮助老用户提升开发体验,这会将固有的传统框架体系的拥护者仅仅绑在我们的阵营之中。
    这两部分用户的需求时不同的,所以对他们宣传推广策略的侧重点也要不同,在社区中大部分都是新用户,那么久应该着重宣传怎样帮他一步步地开发一个项目;在产品交流群内对老用户着重宣传高级的辅助开发能力。

插件应该是什么样子?

在从零开始的项目创建阶段,一般的开发者会选择使用一些脚手架去创建项目,而脚手架如何去安装,如何使用这都是需要研发人员去查阅文档学习的,如果在IDE中可以检测到用户目前没有任何项目文件,那么就可以提示他通过可视化的形式点击一下来创建项目。

那么为什么是可视化的形式而不是命令行呢?

首先,可视化是计算机在进步的过程中自然发展出来的,从DOS的黑窗口到Windows的桌面,而这个自然的发展过程是为了让更多对于计算机陌生的人不需要去学习命令就知道如何操作,也就是为了拓展更多不那么专业的用户,也可以说是为了让更多的用户不需要记忆那么多。

其次,效率问题,虽然很多开发者都说在开发的过程中直接在命令行中输入命令会很有效率,但是也只有部分熟悉命令的开发者才有可能有这种错觉。UI上面的一个按钮就会对应很多命令行的输入,这个点击的过程是远比输入有效率的,而且很多参数都可以直接复用曾经选择过的配置,几乎无需任何改动就可以完成一次命令的执行。

同时,在编辑配置等情况下,可视化的配置让用户的大部分操作变为选择,让用户不需要去记忆每一个选项可以有哪些可以更换的值,这也会让用户开发的负担变得更小。VSCode的Setting从1.27版本开始也从json配置变成了可视化配置界面。

在创建完项目后,很多人其实会有短暂的懵逼阶段,我该做什么?而这个时候插件应该默认帮他打开 README.md ,并定位到其中的快速开始部分,让他了解如何进行开发。

更高级的快速开始就是自动提取出来readme里面的quick start部分,或者是代码中的某种配置文件,结合代码目录结构的检查,就能自动的一步步引导开发者该做什么事情,例如:
image.png
当开发者逐步学会了如何进行开发之后,那么IDE插件在他开发的生命周期中所处的位置应该从一个引导者变为一个辅助者,主要的功能就是帮助开发者少写代码。
让开发者少写代码意味着什么?
所谓的少些代码并不是说让代码量减少,而是能自动生成的代码都自动生成,能少配置的就尽量少配置,例如在日常开发中经常会需要引入一个npm包,我个人认为一个好的IDE会自动侦听用户写了什么代码,然后自动的将一些配置性的工作自动完成,当用户写import/require的时候,就自动添加package.json并自动进行安装,当然这个过程也需要在IDE的状态栏或其他位置给予用户一些提升。当用户在写代码的时候不用切换编辑页面,不会打断思路了,那么开发的效率自然就会上升了。