写在前面

自 2018 年初,就与 VSCode 结下了不解之缘,从一份选型报告开始,一蹉跎就是 2 年多

期间反复思索着一个挥之不去的问题:定制化 IDE 产品的核心价值是什么?

事实上,答案并不唯一,从不同角度看就有不同的价值理解

一.解决问题的角度

首先,IDE(集成开发环境)是一种通用工具,能够解决两大块问题:

  • 开发体验:集项目管理、代码编辑、编译构建、调试等功能于一体,避免开发体验上的割裂感

  • 效率:将相关工具套件收纳到开发环境中,降低零碎工具的学习、使用成本

一气呵成、顺滑流畅的开发体验,嘬着咖啡、高效产出的工作效率是每个开发者都想拥有的。一款通用 IDE 好比一张书桌,文件夹、稿纸、铅笔、橡皮擦全都在手边,书籍文献、咖啡、台灯也陈列在侧,坐在这样一张书桌前创作,体验和效率一定不会太差

而定制化的专用 IDE 通常是为了满足特殊需要,解决特定问题的,例如:

  • 特殊技术方案(小程序、跨端技术等)的开发体验和效率问题:鼠绘创作需要更现代化的书桌,音乐创作可能需要完全不同的一些专业设备

  • 业务特定的具体效率问题(模板项目生成、可视化辅助开发、性能诊断等):针对水彩画创作,专用书桌上放着带有工作室印章的水彩纸

  • 上下游边界的协作效率问题(设计素材管理、发布流程接入等):将书桌连接到生产流水线,创作完成立即交付出去

  • 用户的专业性问题(拖拽搭建,运营投放等):智能书桌面向非专业开发者,只要填一些表格就能快速生成作品,摁下按钮就能自动交付

P.S.一些专用 IDE 同时解决了以上几方面的问题,比如支付宝小程序 IDE同时解决了前三项问题

因此,从解决问题的角度来看,定制化 IDE 的核心价值在于:

  • 专用:面向特定领域量身定制,在既定场景下能够提供顺畅、一致的开发体验和效率保障

  • 集大成:从头到尾提供一条龙服务,不仅能够很好地补足工程链路的前半段(开发、调试),还能与成熟的后半段衔接起来

  • 开箱即用:繁琐的、复杂度高的部分都被收进了 IDE 里,提供给用户的是一张整洁、简约的工作台

二.发展的角度

从一款产品发展的角度来看,定制化 IDE 要经历这些阶段:

  • 生死存亡

  • 兼容并包

  • 连接融合

  • 渠道生态

在不同阶段具有不同的核心价值

生死存亡

这个阶段的定制化 IDE 可能存在诸多不完善,比如:

  • 核心能力少:能吸引用户的卖点不多

  • 稳定性欠佳:使用中比较容易遇到问题

  • 易用性差:有些功能用起来不那么顺畅

价值方面几乎没有明显的体现,因此其核心价值是听话,即可塑性强

因为此时产品还只是初具雏形,既没有形成用户习惯,也不用担心历史包袱,只要不是非常不合理的需求,就都可以做,前期少量用户的需求得以快速满足,作为一种正向反馈传递给宝贵的早期尝鲜用户,同时保持快速迭代,尽一切努力赢得一些核心用户

P.S.听话,难道不会被用户带偏吗?事实上,早期问题一抓一大把,用户提出的大多是明显的功能、体验问题,本就应该优先解决,只是顺带附送积极的正反馈

兼容并包

生存下来之后,开始拥有了一少部分核心用户,如何吸引更多的用户从通用 IDE 转换过来是该阶段的首要目标,常用策略比如:

  • 细打磨:优先解决可用性、易用性问题,保证开箱即用

  • 强引导:新工具优先集成到定制化 IDE 中,不支持 CLI 等其它方式,引导用户使用

  • 接进来:现有工具/平台陆续接入定制化 IDE,逐步完善工作流

  • 推出去:每版都放出一两个小惊喜,给犹豫观望的用户多一些信心

定制化 IDE 贴合业务场景的定制程度越高(与通用 IDE 的区别越大),业务开发对定制化 IDE 的依赖程度就越高,因此这一阶段的核心价值在于连接开发人员与工具/平台,将关键工具/平台接入到开发工作流中,触手可及。接入越多,工作流越完备越顺畅,整合提效的价值就越大

融合互补

关键工具/平台接进来之后,定制化 IDE 的专用功能已经相对完整,并且积累了一定规模的用户量,接下来更进一步的价值要通过融合互补来发掘:

  • 融合:实现工具的无缝融合,进而产生 1 + 1 > 2 的组合效果

  • 互补:对于在单一环节难以解决的问题,可以沿流程向上/向下追溯,通过工具链互补解决

工具链与集成开发环境(或者叫工作台)最大的区别在于,前者只是承接,而后者能够实现融合。此时定制化 IDE 的价值已经不仅限于解决特定环节的开发体验和效率问题了,而是着眼于整个工作流,集全工程链路之力解决之前难以解决的问题

渠道生态

融合互补的下一阶段是渠道生态,进入该阶段的标志是定制化 IDE 服务了 80%以上的目标用户,用户量增速变缓,平台属性凸显出来,此时可能的价值方向有:

  • 渠道推广:定制化 IDE 连接着大量用户,新功能入驻即有机会获得大量用户,放大价值

  • 孵化生态:孵化面向业务场景的差异化能力,如调试、测试

这一阶段,大要发挥大的优势,定制化 IDE 的能力支持从大场景转入小场景,从封闭走向开放,开启更多可能性,对应的核心价值是孵化生态,持续产生价值

三.布局未来的角度

前端工程化历经了这样几个阶段:

  • CLI 工具:脚手架、构建工具、调试服务等等

  • GUI 客户端:GUI 化的 CLI 工具,除交互方式外区别不大

  • 定制化端 IDE:基于 IDE 扩展脚手架、构建、调试、发布、监控等工程链路能力

  • 云 IDE:基于 Web IDE 扩展一系列工程链路能力,进入云研发时代

从百花齐放的 CLI 工具时代进入短暂的 GUI 客户端时期,接着掀起定制化端 IDE 的浪潮,或许最后将归于云 IDE 的巨幕之下

开源端 IDE 的日趋成熟,大幅降低了定制成本,贴合业务场景定制专用 IDE 成为可能,以源码为中心的开发环节被正式纳入了前端工程化体系,作为提升工程效率的下一个突破点

时至今日,以云 IDE 为中心的全云研发模式已经依稀可见:

基于 FaaS 的端云一体化开发是 IDE 上云的主要推力,伴随着 FaaS 带来的 BFF、SSR 技术升级、研发模式变化,云 IDE 作为云研发工作台,核心价值是让前端工程化体系更进一步,提供需求-开发-测试-运维的完整链路支持

什么才是定制化IDE的核心价值?的更多相关文章

  1. Oceanus:美团HTTP流量定制化路由的实践

    背景简述 Oceanus是美团基础架构部研发的统一HTTP服务治理框架,基于Nginx和ngx_lua扩展,主要提供服务注册与发现.动态负载均衡.可视化管理.定制化路由.安全反扒.session ID ...

  2. 使用beanstalkd实现定制化持续集成过程中pipeline

    持续集成是一种项目管理和流程模型,依赖于团队中各个角色的配合.各个角色的意识和配合不是一朝一夕能练就的,我们的工作只是提供一种方案和能力,这就是持续集成能力的服务化.而在做持续集成能力服务化的过程中, ...

  3. 网易云基于 Kubernetes 的深度定制化实践

    本文由  网易云发布. 2017 年,Kubernetes 超越 Mesos 和 Docker Swarm成为最受欢迎的容器编排技术.网易云从 2015 下半年开始向 Kubernetes 社区贡献代 ...

  4. 定制化移动办公APP:打造企业专属的“钉钉”“纷享销客”,实现企业办公管理一体化

    一.项目背景 随着信息化社会的高速发展,市场竞争日益激烈,传统的管理和办公系统多且复杂,用户需要使用多个系统才可完成一项工作,而且各个系统的界面和风格存在差异,造成了信息查找不便,大大降低了用户的工作 ...

  5. 定制Eclipse IDE之插件篇(二)

    上文回顾:定制Eclipse IDE之插件篇(一) 延续上一篇的插件篇,这一篇将会讲到一个最关键的插件aptana. 一.aptana插件 官方的解释我就不说了,从下面图可以看到插件提供了什么功能,列 ...

  6. 定制Eclipse IDE之插件篇(一)

    上文回顾:定制Eclipse IDE之功能篇(二) 在这篇文章中,我会将我定制eclipse用到的其他插件罗列出来. 一.汉化插件 Eclipse本身是英文显示的,我们能够通过插件汉化.  1. 选择 ...

  7. 定制Eclipse IDE之界面篇

    为什么要定制IDE?      在工作时候,当公司有了自己的框架,给自己开放人员用,甚至是可以卖的时候,我们可以做成一个产品,而这个产品将包括框架本身.文档.工具.教程等等.工具之中最重要的莫过于开发 ...

  8. python+robot framework实现测报告定制化和邮件发送

    前面已经介绍了python+robot framework自动化框架和基本原理的实现,详情请看 python+robot framework接口自动化测试 本章主要讲解报告已经产生那如何以自动化的方式 ...

  9. 初探机器学习之使用百度EasyDL定制化模型

    一.Why 定制化模型 一般来说,各大云服务厂商只会提供一些最常见通用的AI服务,针对具体场景的AI应用则需要在云服务厂商提供的服务之上进行定制.例如,通常的图像识别只能做到分析照片的主题内容,而我的 ...

随机推荐

  1. python 面向对象专题(七):异常处理

    目录 python面向对象07/异常处理 1. 异常错误分类 2. 什么是异常? 3. 异常处理 4. 为什么要有异常处理 5. 异常处理的两种方式 1.if判断 2.try 6. 常见异常种类 1. ...

  2. bzoj3858Number Transformation*

    bzoj3858Number Transformation 题意: 给一个数n,对其进行k次变换,第i次变换是将当前的n变成大于等于n的最小的i的倍数.求k次变换后n为多少.n≤10^10,k≤10^ ...

  3. C#/VB.NET 在Word中添加条码、二维码

    本文介绍如何通过C# 和VB.NET代码实现在Word文档中添加条码和二维码.代码中将分为在Word正文段落中.页眉页脚中等情况来添加. 使用工具:Free Spire.Office for .NET ...

  4. P1469 找筷子

    摘要:有n根(n为奇数)长短不一的筷子,里面可以凑成(n-1)/2双筷子,只剩下一根不能凑对,问那根不能凑对的筷子有多长. 乍听起来好像不难,桶是一个好东西,可是一看数据:对于100%的数据,N< ...

  5. C++语法小记---类型检测

    类型检测 C++使用typeid关键字进行类型检查 不同的编译器使用typeid返回的类型名称不严格一致,需要特别注意 也可以使用虚函数,返回各自的类型名 如果typeid的操作数不是类类型(类指针也 ...

  6. java基础知识--环境变量配置

    说到java,大家应该都了解:J2SE基础.J2ME嵌入式.J2EE延伸的内容,而我们平时接触和所谈大部分都是J2EE企业级应用开发. 作为开发者,使用java之前,必须安装java开发环境,配置ja ...

  7. 题解 洛谷 P3298 【[SDOI2013]泉】

    考虑到年份数很小,只有 \(6\),所以可以 \(2^6\) 来枚举子集,确定流量指数对应相同的位置,然后通过哈希和排序来计算相同的方案数. 但是这样计算出的是大于等于子集元素个数的方案数,所以还需要 ...

  8. django-rest-framework-源码解析002-序列化/请求模块/响应模块/异常处理模块/渲染模块/十大接口

    简介 当我们使用django-rest-framework框架时, 项目必定是前后端分离的, 那么前后端进行数据交互时, 常见的数据类型就是xml和json(现在主流的是json), 这里就需要我们d ...

  9. Docker 概念-1

    阅读本文大概需要15分钟,通过阅读本文你将知道一下概念: 容器 什么是Docker? Docker思想.特点 Docker容器主要解决什么问题 容器 VS 虚拟机 Docker基本概念: 镜像(Ima ...

  10. 32,初探c++标准库

    1. 有趣的重载 (1)操作符<<:原义是按位左移,重载“<<”可将变量或常量左移到对象中 重载左移操作符(仿cout类) #include<stdio.h> co ...