编程猫「kitten源码编辑器」0到1的关键点设计(编程猫源码编辑器教程视频)
当前关于产品分析类文章有两大主流分析视角,一类是着重宏观视角,不做过多产品细节分析;另一类是较为模板化的产品分析,从行业分析到功能点体验拆分基本全部囊括,功能点拆分较为全面细致。
而今天笔者从另外一个视角进行一次产品分析,老话说打蛇打七寸,做事抓关键,今天我们尝试做一次产品设计关键点分析,推演一下一款工具类产品0到1过程当中的几个关键点应当如何思考与规划。
在17、18年,编程猫还被称为少儿编程教育行业当中的一匹黑马,短短两年时间,它已经成长为了这个行业当中的佼佼者。从融资角度来看,15年成立至今,一年一轮融资,5年时间就融到了C轮,累计近9亿的融资资金;从运营数据上来看,截止到19年底,学员用户总数3000万 ,合作学校10000 ,19年全年总营收10亿人民币。
我们今天不从宏观角度来分析行业格局以及编程猫的发展历程,我将站在产品视角上,从头拆解编程猫的第一款产品 ——「kitten源码编辑器」,试图回答这样一个问题:这样一款面向少儿用户的工具类产品,面对产品0到1过程中的关键环节,如果是我会怎样思考和规划?
关键点1:为什么要花巨大的成本来开发少儿编程工具?
要想拆解产品,首先我们要理解为什么这个产品有存在的价值。在少儿编程工具(与其说是编程语言,我更愿意理解为编程工具)领域,有从06年便开始发布迭代的老大哥Scratch,Scratch由麻省理工学院媒体实验室的终身幼儿园小组设计和维护,是一个免费并且功能强大的少儿编程工具,有着庞大的用户基础和全球范围的在线社区,它基本上奠定了少儿编程工具的设计规范;也有后来出现的将工具与教学体系强关联的少儿编程平台Tynker。
现如今国内的少儿编程教育品牌大部分都已经将Scratch当作少儿编程的入门必学课程之一,将Scratch作为少儿编程的标准编程工具,比如童程童美,核桃编程等。
那么编程猫为什么不和他们一样使用Scratch来作为标准的编程工具而要自己开发一套呢?
从15年到17年这套工具打磨了近两年,17年,18年又相继推出代码岛以及海龟python编辑器,在工具开发和打磨上越行越远,SO,我们不禁要问的是,在编程猫成立之初资源相对匮乏的阶段为什么决定花两年来开发一套已有解决方案的编程工具?
分析任何一个商业决策的原因都需要将它代入到本身的商业模式当作,我认为衡量一个商业模式好坏的三个重要要素是:核心竞争力,持久性,以及扩展性。我们从这三个方面入手进行综合分析。
在K12在线教育行业,教师是流动的,教学方案是可抄袭的,客户的品牌忠诚度不高,行业玩家同质化严重,如果没有核心竞争力,随着行业进入洗牌阶段,将势必陷入以拼家底为主的恶性竞争当中,砸钱抢用户,抢学校,铺广告,打价格战,创业团队在早期阶段陷入这种纯粹靠资本博弈的粗暴竞争环境中很容易被洗掉,因此开发属于自己的编程工具有利于建立技术壁垒,塑造以产品为主的核心竞争力,在行业洗牌阶段建立自己的护城河,更容易吸引资本的青睐,拥有后期争夺行业Top的家底。
大家要知道少儿编程工具和标准的编程语言是有本质的差异的,编程语言有着很强的标准化和开放性,有着很成熟的发展生态。
而少儿编程工具正处于发展初期,很多需求和功能存在很大的扩展性,但是并没有一个开放环境推动它前进,Scratch已经是一个成熟期的产品,产品迭代相对较慢,并且由于国内少儿编程这几年爆发性增长,挖掘了相当多的本土化需求,你没有办法根据你的教学体系来给Scratch提需求让他改动功能,你的教学体系会受制于Scratch,只能在它的开源基础上进行优化,因此Scratch也有很大的局限性。
这时候打造一个本土化的少儿编程平台就显得很必要了,根据以上分析,我们总结一下开发自己的少儿编程工具的必要性:
- 可以随时可以根据教学规划调整产品功能来满足本土化用户需求,提供更多差异化功能,进而提升产品方面的核心竞争力;
- 可以作为行业标杆引领行业发展,提升公司在行业里的权威性,品牌效应同样是核心竞争力;
- 自家的编译器能增加用户与品牌的接触频度,增强用户粘性和忠诚度,从而使用户可以持续留存下去,有利于维持商业模式的持续性;
- 编译器带来了更多的教学内容扩展和自定义的空间,进而可以做更细化的用户运营,为不同年龄阶段,不同学习目的的用户带来不同的产品,进而可以更好的辅助做横向和纵向的用户扩展,以及盈利模式的扩展,有利于提升商业模式的扩展性。
关键点2:核心用户界定与研究
2.1界定核心用户与核心客户
产品的0 – 1阶段,我们一定要清楚的界定出核心用户,目标用户以及潜在用户,核心用户是目标用户中最重要的那部分群体,而产品的种子用户一定是符合核心用户的相关属性的。编程猫官网上指明“专注为7-16岁孩子提供趣味教学”,这是当前产品矩阵的目标用户,如果反推产品0-1逻辑的话,这显然不是源码编辑器的核心用户。
在这张图中我们可以看到编程猫对源码编辑器的目标用户的界定是6到12岁左右的小朋友,也就是从幼儿园大班到五年级的时间,而考虑到这个年龄跨度也是比较大,孩子的智力发育水平和知识储备量也有比较大的差异,加上幼儿阶段有另一款产品作为承接,因此我们可以把源码编辑器的核心用户界定到1年级到3年级这个阶段的小朋友,也就是7-10岁之间。
由于少儿教育行业的特殊性,核心用户并不是付费客户,因此,我们需要对这个阶段小朋友的家长再做细分研究,这就好比是做一款玩具,要让小朋友玩的开心,有所收获,让家长觉得买的值,达到了自己培养孩子的目的。
对于家长,我们可以按照编程行业相关性和资金充裕度两个维度进行分析,因为行业相关性的高低决定了客户目标的清晰程度,而资金充足性确定了客户的付费意愿和付费能力。
针对上图划分出来的核心用户我也在撰文之前挑选了8个身边具有相似属性的个体进行了小规模的访谈来验证下文描述的用户需求的合理性。
行业相关性指的是客户与编程关联性较高的职业,最典型的就是互联网行业从业者,这部分人让孩子学习幼儿编程相对来说会有比较强的目的性,由于他们对于编程有一定理解,所以对于让孩子接触幼儿学习希望得到什么有清晰的认知.
比如,有的家长就是希望孩子以后能走编程这条路,所以希望让孩子提前接触游戏化编程激发孩子的学习兴趣,并且学习一些基本知识概念,为以后学习正式编程打些基础。
有些家长虽然没有希望孩子以后从事这方面的职业,但是清楚少儿编程对于逻辑思维和创造性思维训练有很大的帮助,因此为了锻炼孩子的这些能力也会让孩子来学习编程。
这部分客户也是我们的目标用户,但是由于他有自己相对清晰的认知,相当于专家型客户,用户容量较小,如果将他们作为前期核心客户进行研究的话,会导致决策者对于大众群体的普适性需求有理解性偏差,因此不适合作为最初的核心用户。
从潜在用户容量来讲,随着市场渗透率的提升,二三线城市的家长互联网行业相关程度会越来越低,这部分人群是产品的主要客户,所以一开始进行产品设计的时候就需要挑选这部分人群作为核心客户进行研究,这部分客户与编程相关的行业关联度相对较低,并且由于少儿编程教育行业处于发展初期,这部分客户对于少儿编程的认知度低,少儿编程教育还是个很新的概念,也就是说还不具备普适性,如果客户的资金不够充裕,显然不会为一个自己不太了解的事物进行付费,因此我们需要选择收入水平相对较高的客户作为核心客户。
所以我们总结一下我们的核心用户和核心客户的角色客观属性:
- 核心用户:7-10岁,处于1年级到3年级的小学生,所处教学环境较好,男女不限。
- 核心客户:身处一二线城市,收入水平中等以及中等偏上,并且与编程相关行业的关联度较低的7-10岁孩子的家长。
2.2 核心用户与核心客户需求分析
2.2.1 核心用户特征描述
根据年级阶段我们的小朋友又会有以下一些特征,我们需要根据这些特征提炼出一些共性需求,以下是根据年级划分的用户特征:
- 一年级: 刚入学不久,对学生生活既新鲜又不习惯,他们好奇、好动、喜欢模仿,并且有直观、具体、形象等思维特点。
- 二年级:已基本适应小学的学校生活,开始有了自我控制的能力,好表现自己,竞争意识和上进心有所发展,都想争取成为好学生,并希望参加少先队的一切活动,好奇、好动、好模仿、思维的直观性、具体性、形象性仍然是其共同的特点。
- 三年级:三年级学生的思维正处于由形象思维过渡的时期,能进行一定的抽象思维,但仍以形象思维为主,模仿性强,想象能力由模仿性和再现性向创造性的想象过渡;
2.2.2 核心用户需求分析
作为小朋友本身,他们行为本身没有太强的目的性,更多的是通过各种行为来表达情感,他们有表现欲,因此希望通过获得一些成绩得到大家的赞赏;他们富有创造性,希望通过一种行为来表达自己的创造力;他们喜欢玩耍,希望通过一些行为来享受快乐。
这些行为可以是学习新知识,可以是做手工,同样也可以是学习少儿编程,他们的需求大多数都是感性的,对编程没有什么认知,我们需要去贴合他们的各种情感需求从而达成我们的教学目的。
我们总结小朋友们的情感需求,这些情感需求后面会提炼成我们的产品需求:
- 快乐,使用我们的少儿编程工具的过程是快乐的,能够主动引起他们的兴趣;
- 满足创作欲,使用我们的少儿编程工具可以轻松的实现他的创造力,他可以很方便的将自己脑袋中想象的作品表达出来;
- 满足表现欲,使用我们的少儿编程工具可以做出一个较为完成的作品,并且可以很方便的让他展示给其他小朋友,可以满足他们的表现欲。
2.2.3 核心客户需求分析
那么对于父母的家长呢?他们显然希望通过学习少儿编程来使得孩子得到一些能力方面的提升了。
- 教育需求之孩子思维能力的提升,创造思维,逻辑思维,认知能力的提升,开发孩子的智力,使得孩子更聪明;(这也是编程猫对外宣传的一条营销语)
- 教育需求之孩子知识技能的提升,通过少儿编程学习能掌握一项额外的技能,使得孩子在今后的发展中获得一些竞争优势,并且也可以满足自己向其他身边人炫耀的情感需求;
- 教育需求之跟随教育风向,社会发展已经到了信息化和智能化的阶段,教育政策导向也明倾向于编程教育,大部分家长虽然不懂编程,但是从各方面获得的信息能够感受到编程对于社会发展的重要性,因此希望自己的孩子能提前有所准备;
- 自我情感需求之缓解自我焦虑,孩子竞争环境愈发激烈给自己带来的焦虑感,通过孩子学习少儿编程收获一些能力从而缓解自己的焦虑。
关键点3:教育类工具产品与其他C端产品设计思路的区别——给用户和客户制定目标
虽然说我们梳理出来了核心用户和核心客户的需求点,但是客户的目标是不明确的,家长希望能够让孩子学习到一项技能,能够做出一些成果;孩子希望能够在学习过程中获得快乐,能够很方便的发挥自己的创造能力。
那么这项技能需要学习到什么程度,孩子做到什么程度算是一种成果,这些在用户和客户的心里都是完全模糊的。
而对于一般的C端产品,用户都有相应明确的用户目标,比如电商类产品,用户知道我打开电商APP,经过一系列流程后我可以购买到一个商品;再比如视频类产品,我可以用它来看我想看的电视剧。这些产品都有明确的用户目标和使用场景。
而教育类产品不是这样,用户目标是需要产品制定的。
比如现在的在线英语教育产品,以开言英语为例,它会给你先进行水平测试,然后给你制定个性化的学习计划,并且给你定一个目标,学完我的课程后,你的水平可以达到什么样的程度,是雅思多少分的水平。这就让用户有了个清晰的目标,至少知道了我学完可以达到一个什么具体的程度。
因此我们也需要给用户制定目标,并且我们要从“用户需求 场景 = 用户目标”的思考方式变成 “用户需求 教学体系 = 用户目标”的思考方式。
我们产品需要结合教学体系给用户制定目标,我们可以看一下编程猫官网给客户展示的用户作品以及浏览一下社区的大部分作品,我们可以定下这样一个具体的用户目标:可以让用户做出一款简单的偏客户端的游戏或者其他程序作品。当然这个是文字的客观描述,具体对家长的宣传通过用户作品来体现出来即可,不可能说的这么复杂。
这个用户目标是很重要的,它决定了我们的编程工具产品要做到什么程度,做哪些功能才能达成这个用户目标,综上我们可以明确一下我们的产品目标:依据我们的幼儿编程教学体系,做出一款能满足用户目标的图形化编程的源码编辑器。
本段总结:
- 客户目标(对外):孩子各项综合能力的全面提升,让您的孩子出类拔萃。
- 用户目标(对外):在快乐中做出引以为傲的编程作品。
- 用户目标(对内):做出一款简单的偏客户端的游戏或者其他程序作品。
- 产品目标(对内):在设定好的教学体系范围内做出一款能满足用户目标的图形化编程的源码编辑器。
最后我们要提一下,我们实际上还有一个重要的用户角色就是老师,老师是搭建教学体系的重要成员,并且有相当多的产品需求是从老师那里挖掘出来的,不过老师更多的工作还是在教学体系的开发上面,在这里我们假设教学体系已经开发出来,就不过多去讨论了。
关键点4:产品设计原则
1. 可用
- 在教学体系框架下将用户需求转化为产品需求,基本覆盖各个教学场景,从而达成用户目标;
- 搭建知识主干,简化知识细节,让用户能学习到重要的编程知识点。
2. 易用
- 高内聚,低耦合,模块化;
- 信息层级清晰明了,精简流程路径。
3. 好用
- 产品使用过程中需要有趣味性,降低小朋友的使用门槛,激发小朋友的使用热情;
- 在产品的各个关键环节构建奖励机制,使得小朋友获得成就感和满足感,用了还想用。
关键点5:先增后减,明确产品功能点
5.1 增,背景知识
对于此类有一定专业性的工具类产品,我们需要补充相关的背景知识,对知识架构有整体的理解,才能做到在设计功能的时候游刃有余,我们的用户目标是要制作一款简单的偏客户端的游戏或其他程序作品,这里面我们以游戏为主,那么我们首先需要知道制作一款简单的游戏需要哪些必备的背景知识呢?
5.1.1 如何设计一个简单的偏客户端的游戏?
嗯,最简单的游戏除了必备的核心玩法逻辑,胜败条件,操作规则,其他模块都可以省略的,比如《Flappy bird》
5.1.2 游戏编程的必备技能点有哪些?
游戏设计思路有了,那么需要哪些技能点来实现它呢?
小朋友怎么可能掌握这么多的技能点!所以就需要在教学体系框架下能砍则砍,能封装就封装,这更涉及到教学体系的规划,这里就不详聊了。
5.1.3 一款商用游戏引擎客户端的核心部件有哪些?
接下来就是需要研究一款能开发游戏的商业引擎由哪些部分组成,在这个拆解阶段,了解的越详细越好,在后面简化功能的时候更能得心应手,我们以Unity为例,因为之前笔者也用Unity做过一些小游戏,相对来说对这款引擎有些了解。
游戏引擎最基础的四大组成部分,编程语言,编译器,视图窗口,模块接口。缺一不可,视图是引擎与用户直接交互的界面部分,而模块接口是引擎提供给用户的代码接口,用于实现相关高级功能,接下来我们把视图和模块接口展开来看一下简化后的信息结构:
以上是对引擎的框架性拆解,里面每一块儿细分下去都是很大的知识体量,所以有兴趣的同学可以自己去研究,在此我们对大致框架有所了解就好。
5.2 减,聚焦产品需求
我们前面研究了如何设计一款游戏,开发一款游戏需要哪些技能点,商业性的开发引擎包含哪些主要模块,接下来我们要聚焦到我们的实际产品需求上来,显然我们不可能让小朋友一下子掌握那么多技能,我们要开始做减法,努力将门槛降到最低。
对于设计一款游戏,小朋友没办法很好的整合自己的设计思路,更不可能有很多优质的美术,音乐素材,怎么办呢?
我们需要提供现成的游戏模板,以及现成的游戏素材,首先让小朋友能简单的进行模仿,然后慢慢的加入自己的想法去创作属于自己的素材,因此,在功能上,我们需要有素材库提供给小朋友现成的素材,我们需要有几个已经搭建好的游戏作品案例作为教程供小朋友模仿,在后期我们还需要能让小朋友能自己创作素材,因此需要画板功能和音乐画板功能,供小朋友创作自己的音频和图片素材。在这一步,我们可以梳理出以下产品需求。
对应产
品功能
接下来我们要进入比较艰难的环节了,就是设计面向少儿的编程引擎,之后我也会统一叫做编程工具,因为我觉得差异还是比较大,而实际上我们已经有很好的先驱可以参考了,就是Scratch,它的积木化编程已经深入人心,因此我们可以参考竞品的设计思路结合实际的需求整理我们的需求框架。总的来说,一款少儿编程工具不管如何简化都会包含两大块主要内容的设计:
- 视图设计
- 编程积木设计
我们一个一个来看。
5.2.1 编辑器视图设计
首先是最重要的三个视图:
1)场景视图
对应产品功能
2)层级视图
对应产品功能
3)检视视图
对应产品功能
这三个视图集成了用户与工具交互的最基础的功能,场景和角色的编辑,素材的添加和删除,场景与素材之间的层级关系切换。
接下来一个很重要的视图模块是积木编辑视图,在设计这个视图之前,我们需要先把编程积木逻辑设计好,因此我们先看编程积木的逻辑是怎样的。
5.2.2 编程积木设计
对于编程积木来说,需要从两方面着手设计:
一方面我们需要定义好积木与积木之间的接口规范,梳理出所有积木类型,如下图所示。
另一方面由于积木承载了编程语言的功能,我们需要具体设计编程语言语法积木和高级函数功能接口积木,首先我们确定我们需要封装哪些语法,哪些高级函数功能,这里可以参考Unity以及Scratch进行初步功能的搭建,后续这里是一个重要扩展的模块,比如最近编程猫后来更新的人工智能相关模块和海归函数,GameAI等模块。在这里我们可以参考官网给出的源码图鉴梳理出完整的模块,这些模块是需要持续迭代和新增的。
实际的0-1的设计过程当中应当是经过了大量的参考以及反复确认,并且需要很有经验的开发者参与一起设计,才能保证积木的可用性和稳定性,还要经过一系列可用性测试,才确定了我们当前所见到的一些功能。这里我们经过上面两个方向的拆解,我们已经将积木的框架和功能点梳理清楚,接下来我们就很容易理解前端的积木视图为什么这样设计了。
5.2.3 导航类功能视图
对应产品功能
对应产品功能
以上我们已经基本梳理出整个源码编辑器的主要功能点,在后续的流程设计和交互设计当中,应当遵循我们最初定下的设计原则。
并且我们需要知道,编辑器的设计思维方式不是线性的,我们这里拆解出来的主要功能是根据教学体系和产品发展阶段以及战略布局一步一步有计划的迭代到如此程度,很多这里面的功能在最初产品设计的过程中是不可能考虑的很清晰的,这时候就体现出来系统低耦合模块化的重要性了,好的系统也如同积木,可以灵活的拆解和扩张,关于具体的功能点流程拆解和交互设计拆解这里就不继续讨论下去了,有兴趣的朋友可以自己挑一些主要功能研究一下面向小朋友的流程与交互设计细节。
产品后续发展方向的看法
当前虽然编程猫已经有了可观的用户规模,可是市场的渗透率还是很低,因此用户规模的扩张仍然是主要目的。
在核心功能上,需要将重点放在用户群的深度和广度的扩张带来的新需求,比如用户年龄阶层的扩张,需要考虑到更高年龄用户的需求;随着教学知识体系的扩张,需要满足中,高级水平用户更自由化的开发功能。
而对于已有用户的留存和活跃,也需要投入相当的精力去完善用户运营相关的功能,比如编程猫已有的社区,少儿编程赛事,现在我们也可以看到编程猫推出了不少小朋友KOI,持续加码社区运营。
编程猫自身的少儿编程工具矩阵经过4年多的迭代已经成为了它强有力的护城河,并且凭借这个护城河的存在已经渐渐成为了行业标杆。编程猫至今已经在工具,社区,教学内容三方面都建立起了自己的优势,已经进入到了高速发展的市场扩张阶段,接下来就是比的抢占市场的速度与质量。
同时需要注意到新进的竞争对手和巨头已经投入资源在工具上进行布局。腾讯的扣丁,网易卡搭,极客战纪等,有些是基于Scratch的优化,有些是完全开发出了自己特有的编程工具。我们仿佛又嗅到了之前的视频行业,共享单车,外卖行业混战的硝烟味道。
当年风靡一时的优酷,土豆,乐视的先发优势在巨头的资本面前完全不算优势,在资本的车轮下任何竞争优势都显得十分渺小,最多只能留给企业几年的发育空间,所以说编程猫当前已经上岸为时过早,后续3年将成为能否稳固行业地位并且推进上市的关键之年,且看编程猫如何破局。
全文总结
本文推演了编程猫kitten源码编辑器0到1的产品设计当中关键点的思考,涉及到了立项原因、用户角色研究、用户需求收集、行业知识补充、竞品功能性调研、产品设计原则的确立、需求到产品功能点的转化、信息架构的确立、核心功能设计思路这几个0到1产品设计的重要关键点,最后发表了自己对后续产品发展方向的一些看法。
全文每个模块省略了较多的实施细节。首先是由于篇幅原因;其次是因为以上内容源于自我推理,并非真实情况,说太细容易被打脸( ̄ε(# ̄);最后也有一个好处就是这样能让读者对整个过程有个框架性的理解。
笔者一直认为任何一件事全局性的把握整体框架是很重要的,因此在文中也用了相当多的思维导图。全文完,欢迎各位同学留言交流。
本文由 @白子 原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自unsplash,基于CC0协议