├── 01.md ├── 02.md ├── 03.md ├── 04.md ├── 05.md ├── 06.md ├── 07.md ├── 08.md ├── 09.md ├── 10.md ├── 11.md ├── Makefile ├── README.md ├── images ├── 0pJGJ7qBMF4gCGLn.png ├── 10zZ6Nhlc5BU1jSe.png ├── 1fKaodeuYHe4QCRO.png ├── 2Cd8XqY6KhBObysb.png ├── 34sUiuod4erqzMwA.png ├── FO4F2io4CNCQJJme.png ├── FWYtIjtGh7jGMbGL.png ├── GK5jHHHiWGmDfFSN.png ├── MyZyua6KXcJGlxub.png ├── OsA9V0IGwIQsv8oX.png ├── RxH9NkoS5CaInxKt.png ├── VCQOJ9UaujR7AL5s.png ├── VFapCrKsp84IRsEW.png ├── Wm4fhjXS5y61bV6f.png ├── XSiQLvwsiOQUluQ7.png ├── ahRkZSDhxAiplmS7.png ├── fUGOjwCOQLKdtv8B.png ├── fZusmtVPfL5pX7JO.png ├── kxtw0lPI6PMbzlX6.png ├── r6IUxxpQ4NXWIPtg.png ├── rpNVBIGj45aLQin0.png └── z8XpuLRMOWlGpdF2.png └── replace_image.rb /01.md: -------------------------------------------------------------------------------- 1 | # 第一章 高留存课堂的秘密 2 | 3 | 在深入谈这本书的核心前。我想谈一下高留存课堂的核心。 4 | 5 | 这几年来。因为科技的进步,以及不得不然的时代因素(COVID-19),导致线上教育这个议题,一直很火爆。 6 | 7 | 线上教育有著很多好处,诸如解放老师上课的重复劳动,让同学可以按照自主的步调学习,老师可以一次性的教会更多人知识,让更多人穿越地域上的不平等得到知识而翻身等等等。 8 | 9 | 虽然线上教育有那么多好处。但这个行业始终有个难以解决的不言之秘:「完课率以及留存率极低」 10 | 11 | 你应该有过这样的体验,网上买了一些大师的实操课。总想拨点时间好好认真学习。但是永远拨不出时间把课程练完。 12 | 13 | 制作课程的这些老师也很苦恼。课程虽然很多人买,但是打开率与完成率始终很低。想要改进却不得其法。 14 | 15 | 怎么样制作一门叫好叫座的好网课,逐渐变成了教育界大家都想要到达的圣杯。 16 | 17 | ## 网课 1.0 18 | 19 | 是加上游戏化吗?是加上奖品吗?是加上直播吗? 20 | 21 | 我认为都不是。再继续谈论这个议题之前。我想要定义一下,我们要谈「需要被拿来改进」的「网课」究竟是什么? 22 | 23 | 坊间常件的网课形式有: 24 | 25 | * 线上录影课 26 | * 线上录音课 27 | * 直播课 28 | * 群训练营(7天,14天,21天) 29 | * 线上两天训练营 30 | 31 | 这些课一直有一个大硬伤,就是课程留存率极低。往往是开了头,三天之内后打开率就极低。 32 | 33 | 我想很多读者,一直想破头想要突破的问题,就是如何在这些网课上加上机制,让整体的打开率提高。 34 | 35 | 这些课,我通常会称之为网课 1.0 。基本上,不管用什么机制,加在网课 1.0 的机制上,都会是无效的。(原因我会在这本书里面逐渐解开) 36 | 37 | 什么叫做网课 1.0 呢?就是单向的知识传播。 38 | 39 | 不管是 40 | 41 | * 线上录影课 42 | * 线上录音课 43 | * 直播课 44 | * 群训练营(7天,14天,21天) 45 | * 线上两天训练营 46 | 47 | 哪一种格式。它们都是单向的向学生,灌输一些观念。强迫学生要做到。希望学生有恒心,把他上完。 48 | 49 | 为什么学生没有毅力把这些课上完呢?我认为这是很多老师,并没有易地而处去思考的原因。 50 | 51 | 如果你是一个老师,作为一个学生,反过来上自己录制 8 小时长度的课。你认为自己能够花多少小时,把这个课上完呢?即便再有耐心,最后甚至可能要花上 24 小时的时间,才能够有效吸收。(通常是初听一遍体会,二听做笔记,三听补漏复习) 52 | 53 | 除非学习上有很强的动机。否则基本上是没人愿意从头上到尾的。 54 | 55 | 更甚者。这类型的 1.0 网课,我更会想称之他为「有声书」。 56 | 57 | 为什么呢?因为基本上这些形式的网课。除非是需要大幅展示操作过程,否则根本多半是不需要录制成网课的。写成书的形式会更佳好点。 58 | 59 | 录成网课的目的有两个: 60 | 61 | 1. 收更多钱。(同样的文本,拍成片或录成音频能收更多钱。) 62 | 2. 让学生能够以较快的速度吸收(有些学生听声音的速度比读书快) 63 | 64 | 但无论最后是哪种原因。最后学生上到 1/3 ,学生往往会开口索取逐字稿,希望加速学习。 65 | 66 | 所以,网课 1.0 是一个其实蛮搞笑的结构。为了要录上一门 8 小时的课。老师可能要花 6 倍的时间,也就是 48 小时去录制。 67 | 68 | 而学生也需要 3 倍的时间 24 小时去学习。最后结论却是:求老师直接给我一本书吧! 69 | 70 | 这不是很搞笑的事吗?双方干嘛花这么多时间去折磨彼此? 71 | 72 | ## 高留存 = 游戏化 + 打卡? 73 | 74 | 即使如此,为什么还是很多老师,想要把自己的课堂搬到网路上。主要原因还是: 75 | 76 | >能够省下重复劳动。 77 | 78 | 视频课是很多老师很好节省时间的原因。原因在于只要录制一次,就可以让很多人重复的上课学习? 79 | 80 | 但视频课却不是学生很喜欢的格式。因为学生很难从当中得到学习快感。更谈不上能够按照自己的步调学习。 81 | 82 | 你可能以为坐在教室里面上课算煎熬了吧。不,坐在电脑前面上直播课,上视频课才更煎熬。 83 | 84 | 在 COVID-19 期间,中国许多小孩被迫留在家里,使用钉钉软件上学校老师的直播课。那才叫一个人间地狱。 85 | 86 | 别以为在教室上课难受。如果你试试坐在电脑前面看视频,只要这个视频一点都不有趣。保证消耗的精力远比在课堂上要大得多。 87 | 88 | (我请教过美国教学大师 Bob Pike,他指出如果要把相同内容的课程移植到线上,视频/直播长度只能一天 2 小时。再长观众就会筋疲力竭。) 89 | 90 | 本质上视频课/音频课就是一个大量消耗人精力的课程形式。并不是加上什么刺激手段可以解决的。 91 | 92 | 再来,引进游戏化元素有没有效? 93 | 94 | 比如说: 95 | 96 | * 直播抽奖 97 | * 打卡换奖品 98 | * 写作业得勋章 99 | 100 | 这一样也是无效的。 101 | 102 | 为什么呢? 103 | 104 | 因为问题根本不在这上面。要让人能够兴高彩烈的去上一门课程,并始终兴至高昂的上到最后。其实是有一套针对人类生理、心理 Hijacking 的上瘾框架(也就是本书探讨的题目)。 105 | 106 | 如果没有按照这样的框架去上网课。坦白说,都是白搭。不管引入什么元素。根本都讲不到点上。不是什么游戏化可以解的。 107 | 108 | 举例来说好了。我们先来讨论一下,普遍的烂课的特征定义是什么? 109 | 110 | * 无聊 111 | * 没重点 112 | * 不知道老师再讲啥 113 | * 想睡 114 | * 太难 115 | * 复习费劲 116 | * 太花时间 117 | * 没学到东西 118 | * 老师花太多时间讲其他无关的材料 119 | * 对后面的课程不抱任何期待 120 | * 不是自己想上的课程 121 | 122 | 我们再来比较一下什么是好课? 123 | 124 | * 能学到东西 125 | * 课程编排的容易上手 126 | * 越上越过瘾 127 | * 讲解得很清楚 128 | * 节省我很多时间 129 | * 挑战自我 130 | * 短时间内学到好东西 131 | * 老师手把手带我飞 132 | * 很有成就感 133 | 134 | 当我们仔细比较「好课」与「烂课」之间的差异点的时候,你会发现,好课本质上跟「游戏化」这个字没半毛钱关系。不是烂课加了「游戏化」这些因素,就会变成好课。 135 | 136 | 而是课程的结构,有没有: 137 | 138 | * 符合学生想来学习的目标。 139 | * 教材难度低到足以让学生学会。 140 | * 上完这个课程,大幅节省学生学习所需要花费的时间 141 | * 学完以后学生能够上手,挥洒自如 142 | 143 | 最后,最后才是学生在上这个课程有没有感到开心?感到 challenging?感到 enjoyable? 144 | 145 | 围绕这著些因素,在过程中学生感受到自己显著的进步,累积了可观的 outcome。 146 | 147 | ## 游戏 = 设计过的课程 148 | 149 | 再来,我们回到游戏这件事。 150 | 151 | 我们时常会有一个错觉。就是以为某某事加入「游戏化」的因素,就会把这件事情变得好玩。让某某事的用户在此之上留存时间更久。 152 | 153 | 这也是错误的迷思。 154 | 155 | 也有游戏非常不好玩的。就如 2020 年发行的雷作「最后生还者2」来说好了。这款游戏一代是神作。二代花了几亿美元开发。但是最后却做砸了。 156 | 157 | 这款游戏有著精美的特效、音乐、物理设计。但是剧情设计与 Gameplay 却让玩家难以忍受,玩不下去。而口碑的负评,甚至还史无前例的也波及到网上帮忙评测的玩家上。 158 | 159 | 而这款游戏会什么收获到这么大的负评呢?除了游戏编剧毁灭了一代的角色设定之外,令人诟病的也是游戏内的剧情安排以及关卡设计。让玩家觉得玩这款游戏,像在遭受情感虐待一样。玩不下去。 160 | 161 | 其实不光是「最后生还者2」。游戏界不好玩的游戏到处都是。这些游戏也有显著的特征 162 | 163 | * 不好玩 164 | * 难以上手 165 | * 不理解剧情要干嘛 166 | * 玩起来费劲 167 | * 容易重复 168 | * 对后面关卡没有期待 169 | 170 | 你看。是不是跟「烂课程」很像呢? 171 | 172 | 其实,如果真要拿「游戏」来跟「课程」比较。你会发现两者其实非常的相似。 173 | 174 | 甚至你会发现甚至游戏本身,就是一个课程。他用了一系列的互动形式,让你学会「游戏世界」里讲的「这套语言」。 175 | 176 | 如果我们要将许多游戏凑的更近。你会发现许多游戏基本上就是教你学会一套重复按来按去的傻逼套路。然而你在这个过程中却觉得非常有趣。无法自拔。像是进了精神时光屋。 177 | 178 | 你会觉得课程无聊。是因为教育界对「设计课程」这件事情始终没有上心过。 179 | 180 | 游戏界为了赚玩家的钱,是无所不用其极的去调动玩家的注意力以及设计心灵。因为如果游戏一旦不好玩,玩家打开后,5 分钟就想卸载了。所以游戏是一个极度考虑抓住使用者注意力 attention 与 retention 的行业。 181 | 182 | 因为玩游戏是自由意志,玩家觉得不好玩。玩家就走了。学生觉得课很烂,还不能直接离开课堂。 183 | 184 | 为了让玩家能够尽可能的留在游戏中,并且感受到愉悦,进而付费,游戏者针使用了大量的游戏元素玩弄了使用者的心理,牢牢的将使用者绑在游戏里,为的就是强迫玩家学会游戏里面使用的那一套语言,做出游戏设计者希望玩家做出的成果。 185 | 186 | 所以,游戏本身是非常高级版的课程。游戏里面当中有很多元素,是基于人类的生理心理弱点,去勾起强烈的动机与愉悦。所以我们在设计课程中,会想去借用一些游戏里面的设计语言,作为课程设计的手段。所以「游戏化」是这样来的。 187 | 188 | 但是,归根究底,我们要把课程做好。而不是照搬游戏的背景、游戏的元素进课程里。 189 | 190 | 而是要去探究,如何设计出一个针对人心理底层机制、能让人流连忘返的内容框架。 191 | 192 | 所以我这个课程当中,更多的是会去探讨如何拆解知识,重新组装出正确的架构。让学生能够自然的沉浸在课程当中,轻松、好玩。就像玩游戏一样。自带天然「动机」永动机,上瘾似的势如破竹学会老师想要传授给学生的各种技能。 193 | -------------------------------------------------------------------------------- /02.md: -------------------------------------------------------------------------------- 1 | # 第二章 高留存课堂始于高动机 2 | 3 | 这个内容框架适用于任何课程吗?我会说未必。 4 | 5 | 这个内容框架,我认为会比较适用于本身学生就有一些高动机的课程。市面上有三种课程类型: 6 | 7 | * 职业养成型(长):如编程、绘画、钢琴。等等需要长时间锻炼以及体验的课程 8 | * 工作技巧训练(中):如商业文案写作、项目管理 9 | * 鸡汤、理论类型(短):成长客、养生课、理财概念课 10 | 11 | 适用于这类内容框架的课程大概会是「职业养成」或者是「工作技巧训练」型的课。 12 | 13 | 这些课的学生初始动力极大,但因为课程体裁的关系,后续学习动力容易被各种奇耙因素干扰急剧下降,甚至可能瞬间从入门到放弃,所以非常需要强动机内容框架作为辅助之称到最后。甚至可以越拉越强。 14 | 15 | 而短型的课,首先本身学习动机就不强,时间也不长。通常 outcome 也不明显。所以实在没有必要做体裁上的转换。如果本身适合当成「有声书」来听,我建议就继续维持著「有声书」的格式就好。 16 | 17 | ## 从高留存的线下课程移植 18 | 19 | 再来,我会推荐如果是要打造一个线上的高留存课程。这门课程必须要自己有过一个线下版。并且建议至少要在线下举办过至少 5-10 次。 20 | 21 | 比如说我的全栈营课程,或者是 Krenz 的绘画课程。基本上都是至少在线下至少开设 5-10 次以上的线下课程。 22 | 23 | 为什么要从线下课程开始开发呢? 24 | 25 | 这是因为如果从线上课程开始写课程脚本,是一件难度非常高的事。首先在线上的反馈时间极长,学生会因为各式各样的原因辍学。有可能是环境配置的关系,有可能是私人事物太多,有可能是找不到助教拉他一把求教,有可能是被某个教材卡住。 26 | 27 | 而且,学生往往也没有反馈的管道。 28 | 29 | 线下反馈速度快,而且可以快速的调整教材顺序。而且教材测试一轮时间周期较短。容易近距离的观测学生从零到学成的每一格慢动作。 30 | 31 | 以这样的线下课做为起点,再改变载体,转形成线上的训练课程,我觉得会是比较好的起点。 32 | 33 | 我当初在做全栈营时,其实也是在线下班大概开了10轮左右,确认这样的课程结构是 OK 的,,学生在线下也不容易掉线。我们才移植到线上。 34 | 35 | 我有一个具体的移植标准线,就是大概线下的课程,Net Promoter Score 大约要连续 3期超过 55 分才适合移植到线上。 36 | 37 | [注:Net Promoter Score (稍后补上)] 38 | 39 | ## 重新设计峰值体验 40 | 41 | 用「移植」这个字,形容打造高留存课堂,其实也是个不好的形容词。因为线下课程并不是想搬就能照搬的。 42 | 43 | 具体来说,线下的课程,大约是 1 小节 20 分钟。1 小时有 3 大节共 60 分钟。但是在线上设计课程的时候,一节其实是不能超过 5 分钟的。超过 5 分钟学生就容易恍神。 44 | 45 | 所以并不是能够直接照搬的。从线下移植的意思,其实是身为老师的你,至少得有一套 Workable 能够让学生打通关的课程内容顺序。以此为蓝本,重新设计线上课程的顺序与节奏。 46 | 47 | 我认为在高留存线上课堂的设计,有两个特殊重点: 48 | 49 | 1. 是教从最有成就感的开始教,而不是从最基础的教 50 | 2. 能够让学生看到自己的变化、并且难度平均一致,越来越有趣 51 | 52 | ### 1.从最有成就感的开始教 53 | 54 | 在学习界我觉得有一个对学习最错误的想像,就是登山。这个概念最早可以考据到朱熹身上。朱熹认为,读书学习如同登山一样,人们都想要登上山的高处,而要登上山的高处,就必须从低处一步一步地走上去。如果不经过低处,绝不可能一步就走到高处去。「学不可躐等,不可草率,徒费心力,须依次序,如法理会。」 55 | 56 | 这个概念看起来非常「政治正确」,实际上却是许多人在学习上「从入门到放弃」的根本原因。 57 | 58 | 实际上,第一个。好的学习体验绝对不是登山型,甚至反过来是切西瓜穿越操场边跳舞边唱歌的体验。 59 | 60 | 第二个,大量教师并不懂怎么设计「课程」。它们甚至对于在一口气在学习的第一小时,传授「自认为基石」却「相当无聊」的基础知识自豪且著迷。 61 | 62 | 其实对于新手来说。教师的「基础」对于学生来说根本毫无意义。学生对于这个领域什么都不懂。基不基础学生根本不 care 。学生在最初学习只考虑一件事:「我学不学得起来」。 63 | 64 | 如果学不起来,那学生干脆就不学了。你还要想要强行逼他登山,人家又不是傻子。 65 | 66 | 所以好的线上课程的开头结构应该是这样的。第一个章节老师并不是应该教最基础的内容。而是教学生最能够感觉到自己是天才的一个技巧。让学生对自己产生信心,也对老师产生信心。 67 | 68 | 避开产生「登山思维」的恐惧。而是直接进入「我有可能是天才」的正循环。 69 | 70 | 举个例子。我在全栈营前的最先一个前导课「元学习课」就成功用了一个技巧,让学生建立强大的自信心。 71 | 72 | 编程课大概是我认为所有学科里面,最难传授的一门技术。因为你不会在那个领域里面看到学生一面倒的认为觉得自己完全学不会的状况。甚至是来报名的人,都觉得自己 90% 会失败。这次只是来碰最后一次运气的。 73 | 74 | 「元学习课」是一门我用来传授学生「自学技巧」的音频直播课。我在这堂课里面要传达的只有一个很简单的概念。「绝大多数人不是学不好学不成一门学问,不是自己的问题,而是老师设计的学习方法有问题」。用对方法你也能够很快学成。 75 | 76 | 我用了一个从绘画书上画画的例子给学生当作业。举例学自画像其实很简单。 77 | 78 | 方法是用手机自拍自己的照片,然后倒过来。然后对著倒过来的影像描框。用这样的方式。大量这辈子几乎没画过自画像的学生,用这个方法,一时之间竟然画得十分形象。 79 | 80 | 于是学生就对自己产生了信心。相信用了正确的方式,自己绝对能够学对学好。 81 | 82 | 虽然我是教编程的。但是我竟然用了一个画画的手段,让学生产生了成就感,然后就产生了信心,神奇不? 83 | 84 | 在后续的正式课程。我也是维持著先教容易出成果的程序式知识,让学生产生自信心。然后才补充一些基本常识。反覆循环。 85 | 86 | 线下课跟线上课的开场很不一样。线下课的开场套路,往往是老师通过牛逼的自我介绍。让学生对于老师产生的信心。或者是以及一些物质激励机制(奖品、分数)钓著持续向前的动力。 87 | 88 | 但是这一招在线上班完全不可行。原因是在线下班学生基于礼貌,往往不太因为只因课程无聊而离场。 89 | 90 | 而线上班,学生随时可以觉得无聊、无意义走人。如果不让学生在一开场就建立强大的自驱力。留存率会直接掉成零。 91 | 92 | 坊间那些:「刻意练习」「按部就班」「锻炼意志力」的说词根本不可能管用。在现在注意力为王的时代,谁还信这套。 93 | 94 | 2. 看得到未来的进度与自己的成长。课程始终保持平稳的挑战难度 95 | 96 | 学生容易中辍的另外一个原因:是几乎所有课程的通病,就是学习体验不一致。 97 | 98 | 也就是每个模块要马太难,要马太简单。 99 | 100 | 在学生心中「学习是登山」的大前提假设下。如果课程难度设计的不当,学生很容易一瞬间就认为「后面都是这么难了」,或「后面都是这么简单」了。而直接放弃。 101 | 102 | 各位可以想想,在手游里面是不是有这样的类似体验。游戏玩到一定程度,不充值简直被 AI 虐,几乎玩不下去了。 103 | 104 | 然而,过度充值,身上都是神装,后面关卡太过简单,自己也很容易后面没意思。 105 | 106 | 更不用说许多课程的设计者,在设计课程时根本是没有「难度」的概念的。 107 | 108 | 如果将当今许多课程比拟成课程的话,你会发现绝大多数课程几乎都是「粪作」。 109 | 110 | 不靠著玩家强大的「动机」(就业、升职压力),基本上是玩不下去的。 111 | 112 | 其实工作与游戏十分的相似。都是重复做著一样的事情。 113 | 114 | 只不过游戏有血量、关卡、进度条、技能组合、技能等级。玩家可以透过游戏里的机制知道自己是否做出正确的事,得到反馈与奖励。于是就有更强的动力持续下去。大多数的游戏关卡长度与难度,是有经过控制的。能够在注意力与乐趣消耗完之前,就进到下一个愉悦循环。 115 | 116 | 而工作本身并没有。所有进度与奖励机制不明确,甚至有时候越玩像是虐待自己。 117 | 118 | 为什么很多人无法完成网课。这是因为没有没有人愿意用「意志力」去玩一个虐待自己的游戏阿! 119 | 120 | 所以你说加徽章、上点数有用吗? 121 | 122 | 重点真的不在于这些「游戏化」机制。而是在「课程结构」、「挑战难度」、「反馈系统」的设计上。 123 | 124 | ## 再玩一回合就睡觉,怎么天亮了? 125 | 126 | 我不知道各位读者有没有玩过「文明6」这个游戏。这是一个玩家建设帝国类的游戏。被号称精神时光屋。玩家在玩这游戏时,心理往往有这一个OS「再玩一回合就睡觉」。结果念著念著,竟然就天亮了。 127 | 128 | 「文明 6 」是一个建设回合制游戏。这款游戏将玩家在里面的行为,都分成一个一个小阶段。并且给出了精准的完成时间回馈。玩家在进行游戏的时候,能够很精准的知道再等几回合,刚刚点下去的研究就要研发完成了。伟大建筑就要完工了。兵种就要研发完成了。 129 | 130 | 结果就是玩家不断的对下一个回合都抱著期待。 131 | 132 | 所以「下一回合就睡觉」实际上就变成不断的重复「下一回合就睡觉」这个回圈,一直到太阳真的起来了。 133 | 134 | 这个游戏不仅是在文明6有。在三国志系列里面也是类似的套路。这个城再等一下军粮就集满了。这个武将再等一回合,技能就升满了。所以玩家永远舍不得 quit。 135 | 136 | 这样类型的游戏设计其实是有一套标准设计的。说破了也不值钱。 137 | 138 | 1. 单一画面以保证游戏的流畅感 139 | 2. 在任何界面停留时间不能超过30秒 140 | 141 | 这类游戏往往介面很简单,而且不会让玩家过于频繁的切换场景。 142 | 143 | 这样设计的目的是让玩家的「快感」与「成就感」还没消褪前,又被激活了。而单纯的流程则不容易会让玩家有那种「好复杂喔,我累了其实可以休息一下」的退出空档。 144 | 145 | 我们在设计全栈营的时候。其实是有对于课程进行与难度控制设计的。 146 | 147 | 每一个章节控制在学生 5 分钟可以看完全篇教程。10 分钟之内可以做完相对应的习题。 148 | 149 | 每一个礼拜放出去的课程。学生专心的话 1-2 小时可以全做完。如果需要更难的进度,也有加分题。 150 | 151 | 甚至我们当时还做了一个比较大胆的尝试。我们的教程绝大多数是「文本型」(注:这个设计非常争议,甚至被同行攻击,我们其实是卖一本昂贵的书。但我们自己知道我们在干什么,选择不解释。)并不是影片型。我们课程的影片,是集中在上课期间的直播以及小知识解惑。 152 | 153 | 主要的课程多半是文字型态的原因。是因为我们发现编程是一门特别的课。编程如果是使用视频学习,反而会比较吃力。 154 | 155 | 因为学生容易在学习的过程当中「打错字」,然后就卡住了。而且用视频学习的话,学生必须反覆的按暂停键,停下来看老师的打什么程式码,再输入一次程式码。非常恼人与费力。 156 | 157 | 所以我们使用文本的目的,是让学生「容易拷贝程式码」。这样学生就不容易因为奇怪的打错字问题,直接掉坑里了。 158 | 159 | 当然,直接贴程式码,学生也不容易学会。所以我们鼓励学生做的是,第一次你可以贴程式码看通关流程。第二次自己再打一遍,也许程式会坏掉,但是你可以透过修坏掉的程式,知道确切哪里出错了,这个地方运作的原理又是什么。 160 | 161 | 这样学生能更很快的完成一个学习的正循环。更快得到学习上的反馈与成就感。 162 | 163 | 因为学生要是不想完成课程,那就一点意义都没有了。 164 | 165 | 而且,使用文本型的教学内容还有一个教学制作上的好处。那就是「调整容易」。 166 | 167 | 如果我们当初选择拍视频的话,那么只要视频里面有一个错字,或者是顺序不适当,我们等于要整支影片重拍或者重新剪辑,非常费劲。 168 | 169 | 而我们的课程网站,本身有一个难度监测系统(后面章节会叙述如何制作)。只要监测到学生可能在该章节崩溃放弃。我们就会重新调整难度。 170 | 171 | 我们通常是在每周一晚上八点放出当周课程。有一些好学的学生,会在礼拜一当天就做完作业。周二我们就能拿到几十个学生(约 5%-10%学生)的反馈。周二下午就把课程修完重新部署。后面的学生根本不知道这个课程曾经出现 bug 或者是难度难到天上去。 172 | 173 | 我们是始终让每个关卡都维持著一定的 challenging 难度,以及成就感。让学生进入心流循环中。 174 | 175 | ## 用分镜稿设计课程,管理体验、难易度、惊喜、Outcome 176 | 177 | 当然,我们在全栈营的设计使用的是文本。其他课程有可能是使用影片。 178 | 179 | 那么若使用影片作为载体,长度又该以多少为宜呢? 180 | 181 | 我的建议是 5 分钟为宜。超过 5 分钟长度的影片。注意力大概就会分散了。 182 | 183 | 5 分钟相当于多少字呢?以一般人的语速大约是 1000-1500 字。 184 | 185 | 最长不要长过这个数。 186 | 187 | 当然,影片也不是不能做很长。只是很长就会有我在上面刚刚讲的,也许我可以停下来休息的情况产生。 188 | 189 | 所以我们的目标是在这五分钟,让学生 GET 一个有效知识点,然后让学生有动机去进行同等时间的练习。反覆循环。 190 | 191 | 这就考验到做课的结构切分能力。 192 | 193 | 绝大多数的老师是做不到结构切分的能力。而许多课程不有趣且难以调整,正是因为课程结构、难度、挑战的不规则。 194 | 195 | 高留存课堂的一个最大特征点,就是以极细的颗粒度(五分钟为一单位),去规划课程的进度与流程。基于这种细致的课程粒度,再去调整课程的体验、难易度、惊喜、产出的 outcome。 196 | 197 | 这件事并不是做不到而已。而是教育界的人没有想过可以这样做。 198 | 199 | 很少人意识到上课原来可以跟电影、游戏一样是可以写分镜稿。甚至是课程一开始设计时,就应该写分镜稿。 200 | 201 | 而这就是我们在下一章想要探讨的主题。如何结构化制作课程。 202 | -------------------------------------------------------------------------------- /03.md: -------------------------------------------------------------------------------- 1 | # 第三章 高留存课堂的结构设计(一) 2 | 3 | 高留存课堂的前提有三要素: 4 | 5 | * 结构化 6 | * 在线下班打磨过 7 | * 颗粒粒度够小 8 | 9 | 这三件事听起来很简单,实际上有点难度。 10 | 11 | 主要是因为「课程设计」也是门学问。 12 | 13 | 我在还没出来教商业编程班之前,只是一名架构师级别的程序员。能够带班是因为原始的课程移植自己在部门里面多年以来累积开发的两门课程。 14 | 15 | * 第一门初学者课程,可以把初学者摸索自学上手需要的时间,从一个月压缩到 7 天。 16 | * 第二门中级者课程,可以把一个只有一点经验的初学者,锻炼到能够独立开发商业级别网站的自学时间,从两年压缩到一个月。 17 | 18 | 我用这两门课程带出了不少徒弟。也因次后面的商业编程班是顺应社群需要开设。我本身并没有拜过师学「如何设计课程」。 19 | 20 | 但是,商业编程班要能够稳定的开下去,必须要有一定的商业内容水准。也就是从那时候开始,我开始正式拜师学「课程设计」。 21 | 22 | 我相信许多讲师跟我当初的背景差不多。就是靠著一门通关的 SOP 就出来教书了。没有学过「课程设计」这么技能。 23 | 24 | ## 课程设计的目标是为了教出合格的工作者,而非复制你自己 25 | 26 | 「目标设定」错误是课程开发者,最容易犯下的一个经典大错误。 27 | 28 | 而这些经典大错误,甚至还有个集中化的趋势,那就是「尝试复制老师本身实力再简化」。 29 | 30 | 我相信读者应该上过一些课,这些课难度非常奇杷,号称从基础学起,但是学生学著学著往往就不知道自己在学什么了(过程可能无聊又痛苦)。甚至学到最后完结了。老师告诉你课已经上完了。你还是不知道你拿著老师教的技巧可以创作出什么自己的东西。 31 | 32 | 为什么会这样呢? 33 | 34 | 这是因为很多未经「课程设计」训练的老师,课程设计的目标是「将你训练成他自己」。所以他自己先列出了一项「初学者与他之间的差距」清单,试图在一门课里面,就想把这当中的所有知识全教给你。 35 | 36 | 但因为东西实在太多教不完了。所以要不是他把所有的内容都砍了一半。就是针对太长的部分砍了,想试图来个长度平均化。 37 | 38 | 有点像是他试图开发一个课程,希望这个课程目的是 clone 一个他自己再「开根号」。 39 | 40 | 这样会有什么教学成果呢? ---- 什么学生都教不出来。学生也什么都学不会。 41 | 42 | 所以各位学生真别气馁阿。不是你学不会。而是绝大多数老师跟本「不会设计课程」。 43 | 44 | 连一开始目标就都定错了。正常人能玩通关才有鬼。更何况这些老师开发出来之后,自己连「试玩一遍」都没有。鬼才能学会。 45 | 46 | 合理的课程目标应该是什么呢? 47 | 48 | 我认为应该是这样的。假设你是像编程这样领域的。不如设定一下: 49 | 50 | * 行业一个月的工作者程度应该具备哪些具体的能力以及指标 51 | * 行业两年的工作者程度应该具备哪些具体的能力以及指标 52 | 53 | 设定一个实际角色的能力 KPI。让课程围绕著具体 Outcome 去打造。而作为教师你的目的,就是让这样的养成大大缩短。 54 | 55 | 比如说: 56 | 57 | * 让一个月的自学时间缩短成 7 天 58 | * 让两年的摸索时间缩短成 1 个月的密集训练 59 | 60 | 学生清楚知道: 61 | 62 | * 自己学成会具备哪些能力 63 | * 当中产出哪些有效的 outcome 64 | * 这门课能够为他节省多少时间与金钱 65 | 66 | 而不是「从基础学起。学不会是学生天资与运气问题」。 67 | 68 | 这个议题是「课程结构化」的第一大步。 69 | 70 | 如果在课程设计上,没有明确有效的起点与终点,是根本不可能做出有效的结构切分的。 71 | 72 | ## 对知识、Outcome 分类 73 | 74 | 接下来,我想再引入一个概念。就是对输入的知识以及输出的 Outcome 分类。 75 | 76 | 在教学设计上。最令人头痛的还有一个地方。就是教师想教这个概念、流程。但教师本人却不知道如何用适当的手法去表达。 77 | 78 | 这是因为在人的大脑当中,所谓的「技能」是一段「自己的学习记忆」。所以遇到想传授给他人时,会不得不被迫把相关的黏琢组织(附著在上的个人古早经历与印象)一并拔出来,想复制给对方。 79 | 80 | 这就像拔萝卜一样。从地里拔出来一定会沾满泥土。但是我们不能直接下锅。而是得先洗了去皮、再切片进行料理。总不能从地里拔起来就直接扔进锅里面吧,顾客不吃的一嘴泥才有鬼。 81 | 82 | 那么什么是有效分类呢?60 年代有一本教学界神书「布鲁姆教育分类学」,对输入的知识分以极输出的 Outcome 进行了有效的知识分类。 83 | 84 | 对于输入的知识,布鲁姆分之为四大类: 85 | 86 | * 事实性知识(Factual)--相互分离的、孤立的内容要素一一“信息片段”形式的知识,包括术语知识以及具体细节和要素的知识。 87 | * 概念性知识(Conceptual ) --“更为复杂的、结构化的知识形式”(,包括分类和类别的知识、原理和通则的知识以及理论、模型和结构的知识。 88 | * 程序性知识(Procedural)--“关于如何做某事的知识”,包括技能和算法的知识以及技术和方法的知识,还包括用来决定和判断在特定领域或学科中“何时做何事”的准则知识。 89 | * 元认知知识(Metacognitive)“关于一般认知的知识以及关于自我认知的意识和知识”,包括策略性知识关于认知任务的知识(包括情境性知识和条件性知识)以及关于自我的知识。 90 | 91 | 而输入的 Outcome,分为六大类: 92 | 93 | * 记忆 / 回忆 (Remember) --从长时记忆中提取相关的知识。 94 | * 理解(Understand)--一一从口头、书面和图像等交流形式的教学信息中建构意义。 95 | * 应用(Apply) --在给定的情景中执行或使用程序 96 | * 分析(Analyze)--材料分解为它的组成部分,确定部分之向的相互关系、以及各部分与总体结构成总目的之间的关系 97 | * 评价(Evaluate)--基于准则和标准作出判断。 98 | * 创造(Create)。--将要素组成内在一致的整体成功能性整体,将要素重新组织成新的核型成体系 99 | 100 | 如果我们该堂课的教学目标是要教会眼前的学生炒一道宫保鸡丁时。 101 | 102 | 那么 103 | 104 | * 按照顺序正确的放入食材下锅就是「程式序知识」 105 | * 如何挑选正确的辣椒品种是「事实性知识」 106 | * 下锅前要先爆香香料是「概念性知识」 107 | * 判断什么时候起锅是「元认知知识」 108 | 109 | 怎么评断学生是否有达标? 110 | 111 | * 学生是否按照正确的顺序放下了香料与鸡肉? 112 | * 学生是否理解爆香的作用? 113 | * 学生是否掌握了正确的火候? 114 | * 学生是否可以整握了宫保鸡丁的烹调原则,从而可以创造出宫保皮蛋这样的菜色。 115 | 116 | 那么,我们甚至还可以根据学生的过去学习料理经验以及最终学习的目标,给定不同的教学难度以及评测标准。 117 | 118 | 比如说只是忙碌的上班族,想要自己做饭。那么教到能够正确的放料以及不烧焦就行了。如果是想要变成职业厨师的。则要求他能够创作出好吃的宫保皮蛋。 119 | 120 | 按照学生的目标去加减四种不同知识的概念成分比例。并针对目标需求去要求不同六种的达成分数。 121 | 122 | 你看这样一下子。不就是清晰非常多了吗? 123 | 124 | 原本我们在担心课程颗粒粒度够小,到底要多小?实际上就是要小到单项 outcome 可以测评。 125 | 126 | ## 技术范例 127 | 128 | * 以教学编程为例(暂时先略候后补) 129 | * 以弹钢琴教学为例(暂时先略候后补) 130 | -------------------------------------------------------------------------------- /04.md: -------------------------------------------------------------------------------- 1 | # 第四章 高留存课堂的结构设计(二) 2 | 3 | 接下来的篇幅,我们要来谈谈课程安排剪辑。 4 | 5 | 从小到大,我们应该都有遇过这样的课堂体验,老师实在上的不怎么样。但是又不能睡觉又不能转头讲话。坐在教室里面活生生像是地狱一样。 6 | 7 | 是的。这就是我们从小到大义务教育的 95% 以上的课程情况。 8 | 9 | 在几乎每个受过义务教育的人的潜意识当中,都觉得「学习」是痛苦的,都觉得「学习」是缓慢的。自己没有「学习」的天分。 10 | 11 | 然而,这真是学生的错吗?我得告诉你,你被这整个学校教育体制骗了。 12 | 13 | 根据科学研究,人的注意力无法长时间专注超过 15 分钟。而且,人类对知识,经过一天后,内容会忘到原先到只剩的 26%。 14 | 15 | 所以呢,你上课上到不耐烦,想睡觉,想蠕动。上完整天的课之后,还把整天的课忘的一干二净。那是「非常正常的事」。 16 | 17 | 老师为什么强调同学要回家写作业,练习。这是因为上课的记忆效果之差,如果学生不在 24 小时之内进行有效的练习,基本上当天教的就会全忘光。 18 | 19 | 所以,这是一般学生没有天赋以及想要扰乱课堂吗?不是,这是学校里的老师都不会教。。。。。 20 | 21 | 这就形成了很好笑的循环了。学校老师本身就是害你学不好的「加害者」,然后它们还指责你「上课不专心」「学习能力不佳」。 22 | 23 | 你还认为真是自己的问题。所以花上更多时间,强迫自己忍耐,强迫自己刻意练习。结果引起自己对学习上更大的反弹。 24 | 25 | 再讲下去我都要札心了。 26 | 27 | ## 以 15 分钟一格设计的教学剧本 28 | 29 | 从以上的叙述,我们发现一件事。人类不能专注在同一件事上超过 15 分钟。那么我们教课得怎么做?就换一种节奏呗。 30 | 31 | 我在 Bob Pike (美国教学大师)的课与书上学到,假设一堂课 60 分钟,那我们就可以将 60 分钟切成 4 小节。每一节 15 分钟。每一节就讲一个概念就行了阿! 32 | 33 | 不要以为一小节 15 分钟只讲一个概念感觉很少。 34 | 35 | 如果你有机会去上外面的商业课程。你会发现外面有的讲得烂的商业课程,一天 6 个小时,可能只讲了 4 个概念。有时候老师念经念了 1 小时,只为了传达 1 个小概念。 36 | 37 | 所以我得再次强调,过去你学不会,多半真不是你的问题,是老师的问题。 38 | 39 | 我第一次去上 Bob Pike 的两天教学课程,课程主题是「 50 招创意教学法」。看到这一个标题,想也知道是夸饰,两天怎么可能学会 50 招。但是,Bob Pike 本人竟然 challenge 我们,到了最后一节课时,我们可以来数数,一定能到 50 。 40 | 41 | 身为学生的我们,当然是不信的!没想到第二天快要下课时,我们真的崇拜的五体投地。Bob Pike 真的做到了。我们在两天里面真的学到了 50 招(他发了一张表让我们实际统计)。不仅如此,通常两天学到这么多东西,头脑一定会痛到爆炸才对,但没想到,我们到了第二天的最后,头脑还是很轻松,并且记得上课教的绝大多数内容!这真是我上过最神奇的实体线下课了。 42 | 43 | Bob Pike 透露他是怎么做的。首先,他将课程切为 15 分钟一个模块。一个小时就是 4 个模块。那么一天有 6 小时上课时间。我们又上两天。 4*6*2 = 48。那么一天里面要教上 50 招完全是可能的事! 44 | 45 | 再来,我们之所以学的非常轻松,而且记得又牢的原因,是他在上 15 分钟的模块时。运用了 CPR 原则: 46 | 47 | * Content 内容 48 | * Practice 练习 49 | * Revist 复习 50 | 51 | 在短短的 15 分钟里面,Bob Pike 教了我们知识,并且带我们练习体会,最后还帮我们复习了一下。 52 | 53 | 这完全是基于人类的生理设计所设计的教学方式。 54 | 55 | ![图片](images/fUGOjwCOQLKdtv8B.png) 56 | 57 | 1. 人类既然每15 分钟就会对同样一件事失去专注力,那么老师干脆把一个教学活动浓缩在 15 分钟之内 58 | 2. 既然讲述法的留存率极低(只有5%)而且容易对同种体裁无聊。那么我们可以在一个小时内的不同4种模块,改采用不同于聆听的 4 种互动式教学法(如小组讨论、游戏、视频...),达到提升留存率的效果 59 | 3. 既然 20 分钟之后复习,会忘掉 52% 的内容。一天之后复习,会遗忘 74% 的记忆,那么干脆就在 15 分钟教完之后,直接进行复习。 60 | 61 | 这个教学法之利害。我在下课时,竟然有办法写笔记重现了课程当中的几乎 90% 以上环节。 62 | 63 | 如果真不是亲身见识,我也会觉得这是虎烂的都市传说。 64 | 65 | ## 设计课程前先分类知识、产出,再写分镜脚本 66 | 67 | 这也是我们为什么在写作这本书时,前期花了那么多时间讨论教学目标、结构、分类的原因。 68 | 69 | 因为这有点像是烹饪,如果你没有先把蔬菜、肉类先处理好。萝卜从地里拔了就直接丢进滚水里。猪杀了没有经过放血就直接剁了丢进滚水里。那么那样的萝卜排骨汤会好喝吗?可能你更大概率喝到的是泥巴肉末汤。 70 | 71 | 这就是为什么大家觉得市面上一堆商业课程上起来像喝了泥巴汤一样,上课还要花很多时间自己找排骨在哪,说服自己这是名厨煮的,是我不懂鉴赏。 72 | 73 | 我得说你的味觉真没坏。。。。因为事实上就是绝大多数课程真的就是泥巴肉末汤。 74 | 75 | 而上义务教育时,我们可能甚至都是在吃泥巴,还没有汤。 76 | 77 | 那么我们要如何实际设计出这样的课程呢? 78 | 79 | [以下过程晚点剪辑] 80 | 81 | [基本上就是一些表格分类] 82 | 83 | 通常我设计一个课的步骤是这样的 84 | 85 | * STEP 1:设计可行的教学大目标 86 | * STEP 2:针对可行的教学大目标,实际上拆成可测评的具体小目标 87 | * STEP 3: 针对具体小目标倒回去整理传授此技能所需要的不同类型知识。 88 | * STEP 4: 根据上课时长设计每 15 分钟的 CPR 脚本 89 | * STEP 5: 实际开设线下班实验挑整桥段 90 | * STEP 6: 跑 Onboading 调整服务体验 91 | * STEP 7: 根据上瘾框架加入上瘾因子 92 | ## 程序性知识为主、事实性概念性知识为辅 93 | 94 | 我在开设编程班时,还有一个课程设计的原则。我会尽量以程序性知识(也就是怎么作)为主,事实性概念性知识(背后原理)为辅。 95 | 96 | 因为编程班的对象,往往都是新手。由模仿操作去学习,这是最快的道路。 97 | 98 | 而且非常具体。人类学习通常只能从具体知识去建构对世界的认知。而无法以抽象的知识去扩展出整个世界。 99 | 100 | 所以我们的课程是先展示一遍这个功能怎么做,甚至要学生跟著做,照打一遍。然后再去理解后面的每个指令的用意是什么。甚至让学生故意改坏再自己修好。得到更加深刻的印象。 101 | 102 | 同时在人类大脑里,记忆的烙印是一点一点的。如果老师只是教一段一段片段的知识,学生几乎自己不可能形成 A->B->C 点的记忆连线。 103 | 104 | 但是如果老师是直接教一串骨架。直接烧到学生大脑里。那么有了这个骨架,学生自己在做补充知识练习时,也能够很快的将自己学到的东西附著在这个骨架上。 105 | 106 | 举个例子好了。如果你要学煮菜,不可能是把整个菜谱背下来。然后把梅纳效应,腌渍原理背得滚瓜烂熟,说的一嘴好菜。 107 | 108 | 就算能够倒背如流,只要没有下场炒,一切根本没有意义。况且背得牢就代表你能做好菜吗?这样的学习理论如果拿去烹饪界可能会被人笑死吧。但这却是当今世界上许多学科传授的方式。(难怪大家学不会) 109 | 110 | 煮菜都是从看著师傅自己切一遍煮一遍,自己再按照师傅的方法作一遍。然后再调整配方比例时间,去学习自己漏掉的知识,一遍一遍练出来的。 111 | 112 | ## 不需要把所有你懂的知识塞入课堂 113 | 114 | 我在设计课堂时的另外一个知识原则。就是只教必要性知识。也就是关键的程序性知识。围绕著程序性知识,补充必要的事实性概念性知识。 115 | 116 | 其馀的留成作业,变成挑战性加分题,自己上网 google 或跟同学一起讨论想办法解出来。 117 | 118 | 这是为什么呢?因为很实际的现实问题,商业课程再怎么长,通常只能是两个月 8 周课。而这8 周,学生顶多留给你的是每周 3-4 小时这么多了。 119 | 120 | 就体裁上,的确没办法什么都讲。 121 | 122 | 而就设计一个「游戏来说」,这样也没有挑战性。再来,初学的学生脑容量有其上限,如果超出理解范围太多的知识,会直接沦为无效知识。那还不如不讲。 123 | 124 | 做一个 高留存课堂关键课堂的老师。目的并不是当 Siri。而是扮演游戏关卡设计师。设计有挑战性合理的关卡难题。诱发出学生熊熊不绝的学习动机。 125 | -------------------------------------------------------------------------------- /05.md: -------------------------------------------------------------------------------- 1 | # 第五章 高留存课堂的结构设计(三) 2 | 3 | 两天型的课程与两个月型的课程,设计的方式是很不一样的。 4 | 5 | 两天在线下班能教完练完的东西,多半是工作用技能。这类的课程设计比较像是在两天里面带你走完一小套的套路,学会一个核心流程型知识,以及一小群概念知识。 6 | 7 | 这类课程著重在让学生在两天内收获满满,只要能让学生两天内愉悦的上到最后,并且的确能产出可见的技能取得,就 OK 了。其实写写分镜稿设计一下,也能跑出个 80 分左右的成绩,用不上重兵器。 8 | 9 | 比较困难的是两个月型的职业养成班。因为两个月是一个相对较漫长的学习过程。而且学生会因各式各样的原因掉队放弃。所以需要用特殊的结构设计。 10 | 11 | 我认为在做课的时候,要先能够 picture 出,产出什么具体成果的学生,是前期规划最重要的事。以此为蓝图,去设计课程的长度与体裁。 12 | 13 | ## 有问题的不是留存率,而是你的课程体裁 14 | 15 | 我常看靠坊间的网课,很多都是老师想讲,然后强迫学生听的课程。这类课程有可能是 7 天、14 天、21 天训练营(而且是连续21天的课)。采用打卡制。 16 | 17 | 这一类网课为什么留存率低? 18 | 19 | 曾经有个同行作教育的朋友,跟我抱怨它们 21 天的网课留存率很低。而且 21 天后,留存下来的人,转化去上高阶更贵课的人,比例更低。他让我教教怎么改善。 20 | 21 | 我直接跟他说。你先想想时间多到 21 天都能天天来你打卡的人是什么人。他时间能多到来每天晚上正事不干来听网课跟你学习,肯定他时间超级便宜才能天天跟你耗。 22 | 23 | 这样的人多半是没什么经济能力的学生。那么你又想劝他来报你高价班。你这不逻辑错乱吗? 24 | 25 | 他恍然大悟。 26 | 27 | 所以重点都不是在网课的内容怎么设计拉高留存率。而是你的体裁与 TA 有问题。 28 | 29 | 有的网课打著 200 RMB做 7 天 , 14 天的训练营。留存率为什么很低? 30 | 31 | 我这里帮忙你算一笔帐阿。假设一般一个上进的文员。他想要来报训练营。学费假设 200。但他每个小时工资是 60(60*8*22=10560 RMB/月)。 32 | 33 | 那么他来上你的一个课的成本其实是 200 RMB + 7*60 = 620。还可以接受。但是如果是 14 天(假设每天都是上一小时)的话是 1040。那么这时候可能就会很多人放弃了。更不用说 21 天的成本是 1460 RMB了。 34 | 35 | 学费也许低。但是时间成本非常的高。高到学生无法承受。 36 | 37 | 这与课程如何调整变有趣提升留存度,一点关系都没有。 38 | 39 | 学生来报课,内心潜意识自己都会算一把帐。报课的人多半是希望花钱节省时间,而不是花钱来被老师浪费时间。 40 | 41 | ## 大魔王、小魔王、教学关卡 42 | 43 | 如果你的课程是属于职业养成类。真的很长。我会建议你这样打散设计。比如说做 8 周、6 周、4 周、3 周训练营。 44 | 45 | 一个礼拜大约放出 1-2 小时长度的课程内容。学生再花2-3个小时去练习。我认为这才是学生有可能接受的长度与强度。 46 | 47 | 网课还有一个硬限制,是每个课程不应该超过 5 分钟可以学习完毕。所以 1 小时是 12 节。加上学生暂停下来做作业的时间。其实 12 节的内容就已经够多了。 48 | 49 | 再来,因为 3-8 周是时间很长的跨度。而且通常因为是远距。所以课程如果只是平淡的上课写作业。学生是不可能有动力完整跟完整个课程的。 50 | 51 | 这时候,这种训练营的体裁,就会要设计的像是游戏了。你要提高这种训练营的留存率、学成率。要从燃起学生的内在学习永动机开始。 52 | 53 | 一般来说。我会倒著回来设计。先去想大魔王是什么,再设计小魔王是什么,再倒推回去,教学关卡是什么。 54 | 55 | 像我当初在做全栈营时。这门课程的目的是要将不懂编程的新手,直接带到中等阶级的开发者,能够独立开发商业网站。 56 | 57 | 全栈营总共有 8 周的时间。于是我们时间是这样安排的。1 周教学关卡,2.5 周准备攻打小魔王。4.5 周准备攻打大魔王。 58 | 59 | ### 大魔王 60 | 61 | 学生的毕业目标肯定是要能够独立开发商业网站,学会与他人协作。所以我们的毕业挑战,就直接设定为从无到有,能够做一个商店。 62 | 63 | 学生能够开出整个网路商店的企划规格。按部就班做完。装潢整个网路商店,并且客制出课上没教的独特功能。 64 | 65 | 而且这个作品还是需要课上两个同学组队共同完成。 66 | 67 | ### 小魔王 68 | 69 | 为了到达能够打败大魔王的程度。 70 | 71 | 小魔王定位在能够按照老师给的论坛程式范本。改装成独特的样式,并且实验课上教过的 90% 以上的插件效果。 72 | 73 | ### 教学关卡 74 | 75 | 在这段过程中。老师著重于设计与介绍一些简单的工具与作业。让同学能够轻易的就完成一些看似很难的程式效果。让学生在熟悉基本工具时,同时建立起强烈的自信心。 76 | 77 | 78 | 先划分出每一个阶段的难度与目标。我们再把想教的知识剪辑进去。 79 | 80 | 而不是从最基础,叠加课程与课时上去,最后变成失控的四不像。 81 | 82 | ## 游戏业界如何设计一套游戏 83 | 84 | 戏业界在设计游戏时。会将游戏会分成四个阶段 -- Discovery => Onboarding => Scaffolding => The Endgame。 85 | 86 | 游戏设计师会在游戏设计中遵循这样的设计套路。确保玩家在这个过程中,逐渐养成对游戏的摸索,习惯,甚至上瘾。确保每秒钟都沈浸在这个游戏里面。80% 以上好玩的游戏都伴随著这个套路。 87 | 88 | Actionable Gamification 游戏化实战作者 Yu-kai Chou 在他其中的一篇博文 "Onboarding Experience Phase in Gamification" 具体拆解了这个过程。 89 | 90 | 一般的设计流程是: 91 | 92 | 在游戏 Onboarding 阶段。游戏会在这个阶段植入一个 Epic Calling (使命召唤),让玩家明确知道游戏的目的是什么。 比如餐厅类时间管理游戏,玩家的使命就是开一间牛逼的餐厅,餐厅可以准时上菜。比如说狙击游戏,玩家的使命就是成为二战里面战役的传奇狙击手。 93 | 94 | 接著在前几个章节,透过一系列的小的教学关卡,让玩家了解核心玩法,养成「游戏里面具体的操作习惯」。 95 | 96 | 并且透过小成就,让玩家取得第一次的 ah-ha moment(小胜利)。 97 | 98 | 以狙击游戏来说,就是在第一章的关卡,会透过一些小系列的事件触发,让玩家学习怎么跑步,低蹲,埋伏,进入掩体,瞄准射击刺杀。然后在第一关的尾端,安排一个难度比较低的大 boss 让玩家尝试刺杀,让玩家觉得自己当狙击手,真是超有天赋! 99 | 100 | 而后在后面的过程中,玩家会逐渐体会到自己有明确的升级。并且会投入心力培养培养自己的角色。而后引入稀缺这个元素(搜集宝物)。 101 | 102 | 以狙击游戏来说,在游戏进行过程中,玩家学会闯关后,下一步的精力,会花时间在培养自己的角色,针对自己擅长的打法,去升级属性,升级枪枝。调整自己身上背的枪 SET,改装枪的零件,提高射速与子弹携带数量。 103 | 104 | 然后,在闯关过程中,无意中会找到一些稀有宝物,以及触发一些徽章。有一些玩家甚至于执著在不断的重玩,以取得金牌奖章。 105 | 106 | 当中,不断出现的意外惊奇,也会掀起玩家的挑战与好奇心。 107 | 108 | 最后,游戏在最后面,还会提供「社交分享」的元素。玩家可以社群网路上分享自己的击杀视频,以及分享自己的徽章截图。享受来自朋友的崇拜。 109 | 110 | 这就是为什么玩家在游戏里面沉迷到不可自拔的原因。 111 | 112 | 玩家在游戏里面可以体会到自己随著技能熟练度不断成长。对于下一个挑战有著高度的期盼。并且每学会一项新技能,或每闯过一个新关卡,都会得到令人惊喜的奖励。 113 | 114 | 玩游戏是一个越来越开心的过程,谁说学习不能做成这样呢? 115 | 116 | ## 全栈营是怎么打造的 117 | 118 | 2017 年。我曾经打造过全世界最大的程式在线学习 Codecamp「全栈营」。这个项目在最后结课时,全程跟完课的学生高达 70%,上课的学生背景都是无计算机背景的小白。 119 | 120 | 这个 codecamp,时长总共 2 个月。很多学生对于自己能撑过两个月,甚至还对编程上瘾,感到无比神奇。 121 | 122 | 让我来拆解全栈营是怎么做到这一点的。 123 | 124 | ### 125 | ### STEP 1: 目的 --- 史诗意义与使命感 Epic Meaning & Calling 126 | 127 | 在报名课程之前,我就将这次学习的目标订为「脱胎换骨成为下一个想要的自己」。明确定义,此次学习目标,是有办法在一年内练成有办法自己结合原有兴趣并动手实做产品的全栈工程师。 128 | 129 | ![图片](images/0pJGJ7qBMF4gCGLn.png) 130 | 131 | ### STEP 2: 游戏玩法 --- Routine 132 | 133 | 在课程的一开始前三周,我们设计了几个教学关卡,让学生掌握写网站的基本几个套路。在这个阶段,学生已经有办法搭起一个简单的论坛成果。 134 | 135 | ![图片](images/Wm4fhjXS5y61bV6f.png) 136 | 137 | ### 138 | ### STEP 3: 第一个小胜利 --- Ah-ha Moment 139 | 140 | 然后紧接著,我们举办了第一次的线上开发大赛。请学生利用前三周的学习,改版成一个有特色的招聘网站。 141 | 142 | 这个招聘网站的实做难度并不高。难度在于使用者多增添一些特色功能与装潢自己的网站。 143 | 144 | ![图片](images/2Cd8XqY6KhBObysb.png) 145 | 146 | 能够做成这件事让学生感受到自己也是有能力的 147 | 148 | ### 149 | ### STEP 4: 技能进步 --- 进步与成就感 Development & Accomplishment 150 | 151 | 在这个过程中,学生可以感受到自己的学习进度。 152 | 153 | ![图片](images/FO4F2io4CNCQJJme.png) 154 | 155 | ### 156 | ### STEP 5 & 6: 角色养成 --- 所有权与拥有感 Ownership & Possession & 独特的宝箱奖章 --- 稀缺性与渴望 Scarcity & Impatience 157 | 158 | 在上课的过程中,参与课程的作业进度,缴交的作业,收获的奖章,参赛的作品,都会收录在个人主页上。 159 | 160 | ![图片](images/RxH9NkoS5CaInxKt.png) 161 | 162 | ### 163 | ### STEP 7 & STEP 8 惊喜的关卡 --- 未知性与好奇心 Unpredictability & Curiosity & 体验社交分享 --- 社交影响与关联性 Social Influence & Relatedness 164 | 165 | 全栈营一期总共有两次大赛。一次是 Job Listing 大赛,一次是 JDStore 大赛。比赛主要是在挑战: 166 | 167 | * 如何拆分任务以及与队友偕同合作 168 | * 代码实做能力(Github 原码公开) 169 | * 产品完成度 170 | * 人气度 171 | 172 | 这个大赛促成了几件我们意想不到的的结果: 173 | 174 | * 同学们互相观摩 Github 原始码,互相进行功能上的学习 175 | * 同学们在论坛上,互相分享教程文章,指导其他同学加功能,顺便为自己的作品拉票 176 | * 互相在作品页面上留言打气 177 | * 学员在拉票与竞赛的过程中,互相吸收到陌生人与亲友的打气与帮忙。充满惊奇与收获。许多同学甚至上班请假橹代码,就为了能专注赢的大赛 178 | 179 | ![图片](images/FWYtIjtGh7jGMbGL.png) 180 | 181 | ![图片](images/fZusmtVPfL5pX7JO.png) 182 | 183 | ## 全栈营学员感想 184 | 185 | 在第一期全栈营结课后,我收到大约 94 份感想。节录 4 份收录在下面: 186 | 187 | ### 188 | #### 参与全栈学习这么久,你觉得自己和之前最大的不同是? 189 | 190 | 1. 对任何新领域新知识的学习,再不惧怕,且有比较明确的方式,通过不断做小产品,不会通过埋头坑基础知识来消耗自己的意志力与对新领域的兴趣与好奇心,而是主要以做小东西,让自己开心为目的,不断前行,及时在听到很多牛人前调基础知识的重要性,我也决定要在保持自己内在战斗力和兴趣的前提下,去学基础知识。 191 | 2. 解bug的过程中,英文阅读能力有巨大进步,且萌生了想练英语口语,去国外工作的冲动。 192 | 3. 彻底淘汰了过去的垃圾学习方法 193 | 4. 发现世界好大,好美丽 194 | ### 195 | #### 参与全栈学习这么久,你觉得自己和之前最大的不同是? 196 | 197 | 在全栈学习中逐渐习惯了,将自己知道的写成技术文档,在这个过程中就是再一次的知识提取。从你以为你明白了,到你真的明白了。以及肌肉记忆到底是个什么鬼,也终于明白了一些。 198 | 199 | 最大的不同在于不明白的地方不在过于着急了!也逐渐从有问题问“度娘”,变成了问谷歌。突然感觉世界一下子清楚了不少! 200 | 201 | 需要学习的东西还有很多 不可能学完就能被外界认可,我们需要再完善自己所欠缺的部分,后端如一些更基础的内容,前端如html,css,js。希望全栈营的老师们能推出更多优质的教程 202 | 203 | ### 204 | #### 参与全栈学习这么久,你觉得自己和之前最大的不同是? 205 | 206 | 1. 做事前会提前做计划,并且预留百分之三十的时间。另外会在行动前盘点好手头资源,每次只做一件事情。 207 | 2. 完成比完美重要!不去追求做事的完美,完成第一版之后迅速上线,获得反馈,用迭代的方法逐步完善作品。 208 | 3. 用作品说话!网上的交往作品就是你的名片,因为没有其他的方法去判断你,所以如果想让别人认可你,那就用作品去打动他。 209 | 4. 学会与人协作!网络让我们可以与世界各地的人建立联系,要做一个好的队友,不要做猪队友,1➕1的效用远远大于2,因为协作会激发每个人的创造性,让协作体中的每个人变得更好。 210 | ### 211 | #### 参与全栈学习这么久,你觉得自己和之前最大的不同是? 212 | 213 | 发现“努力做的比上次好”是一件不容易的事情,但是跨国这段不适期,为了更好一些一点点的前进后,整个人都神清气爽了。会有小伙伴主动来加你,其实是对我的现阶段作品的一种肯定。 214 | 215 | 虽然不一定帮的上他,但是不害怕说“有什么想要从我作品中学到的效果,尽管问哦!”,能在别人有需求的时候成功帮别人解决,会得到很大的成就感。只是不能每次都迅速跨越。 216 | 217 | 比以前更坦然的面对自己的无知,并愿意跟别人坦然讲出自己的短板,讲出来后,心理上的压力会小很多,而且多数情况下会有下一步的思路或得到解决。我获得了“把自己的不足”讲出来的勇气。 218 | -------------------------------------------------------------------------------- /06.md: -------------------------------------------------------------------------------- 1 | # 第六章 高留存课堂的留存框架 2 | 3 | 全栈营能够创造出这么高的完课率有几个原因: 4 | 5 | * 课程平稳的难度 6 | * 近似游戏的关卡难度设计 7 | * 源源不觉得外在内在牵引 8 | * 让使用者进入心流状态,并且对学习上瘾 9 | 10 | 这本书的后半段,我们就要来谈如何控制控制课程的难度以及动力的牵引。 11 | 12 | ## 将增长黑客技术移植到线上教学:Onboarding 13 | 14 | 学生上课程与用互联网产品一样。常常就会像付款失败的购物车,因为一些莫名奇妙的问题在学习期间卡关,最后就辍学了。 15 | 16 | 我开设全栈营前,曾经是硅谷产品的技术负责人。专长是产品架构、体验设计、增长黑客。我后来自学摸索出了一套做产品体验的框架,能够大大消除这种莫名其妙卡关的情形。 17 | 18 | 在创办全栈营时,我不仅将游戏设计引入课程设计,还将产品体验设计也融入到营队的体验设计上。其实课程也是一种「教育产品」,为何我不能将产品上的体验思维也整合进来呢? 19 | 20 | 而教育产品最大的挑战,往往来自于最后学生的留存率。 21 | 22 | 一般而言,我们觉得学生撑不到最后,可能是课程教材难度问题,或者可能是学生学习能力问题,或者是没有学到当初想学的东西。 23 | 24 | 但,真的是这样吗? 25 | 26 | 我举产品界的例子来说吧。2014 年,我曾经看过硅谷一份由 Hubspot 发表的有关于增长黑客研究文章。它们针对了不愿意续用该产品的客户,做出了一份调查报告 27 | 28 | 这份报告总结了,客户为什么会停止使用它们的产品的原因: 29 | 30 | * 30% 人离开,是因为不懂得如何使用 31 | * 30% 人离开,是因为没有体会到当初宣称的价值 32 | * 10% 是因为产品做得烂 33 | * 10% 人是因为其他竞争者比较好 34 | 35 | 这份数据的发表,大大颠覆了当时业界对于消费者流失的常识。 36 | 37 | 我们往往以为消费者离开,是因为自己产品做的不好,或者是别人的产品比较好。但其实背后的原因却不是这样的。 38 | 39 | 用户离开真实的原因却是这样的:绝大多数客户放弃使用,不再光临,完全是因为「不会用使用,从而感到没有价值」离开的。 40 | 41 | 我们将这个结论平移到教育界,假设课程也是一个产品的话。也就是「学生根本不懂使用这个课,所以学生感到这个课程没有价值,放弃继续学习」。 42 | 43 | ## 「让使用者学会使用,从而感到有价值」的快速框架 -- Onboarding 44 | 45 | 「让使用者学会使用,从而感到有价值」。这件事说起来容易,做起来不容易。 46 | 47 | 还好。这套框架在教育界没有。但是在产品界已经有了。不仅如此,产品界甚至还更加的能做到甚至让消费者「重复建立起消费习惯,并期待每一次的消费享受」。如果这一套能移植到学习上该有多好。 48 | 49 | The Membership Economy 一书整理出了这个流程。 50 | 51 | ### 步骤一:去除障碍 52 | 53 | * 加入会员(免费试用或定期续约):尽可能让流程顺畅无碍 54 | * 欢迎入会:确保顾客知道签约内容并感谢它们加入 55 | ### 步骤二:立即传递价值 56 | 57 | * 立即参与: 58 | * 提供提供初始价值(一首歌,一个礼物,一项事实)。 59 | * 从一个「游戏」开始(游戏化),鼓励会员做出理想行为 60 | * 跟社群里的其他会员互动 61 | * 请顾客回馈意见: 62 | * 入会第一周透过电话,电邮或拦截式访堂 63 | * 准备好耐心倾听会员的意见 64 | * 提供回馈: 65 | * 让新进会员知道,它们如何影响其他会员,譬如:时间,参与,人口统计资料 66 | * 可能的话,指出各位会员的独特优势 67 | ### 步骤三:奖励期望行为 68 | 69 | * 要求推荐:鼓励会员在入会30天内,邀请其他朋友试用 70 | * 利用数据分析开始提供客制化体验: 71 | * 将独特要素融入体验,展现对会员的肯定 72 | * 专注于持续改善,而不是重大突破 73 | * 转入到培育计画 74 | * 持续提供资讯,协助会员将本身体验与连结最适化 75 | * 以持续一致的方式跟会员沟通 76 | 77 | 如果你有用过 App。应该会发现这都是 App 的老套路了。 78 | 79 | 转换成教育版的话,就可以是这样: 80 | 81 | ### 步骤一:去除障碍 82 | 83 | * 简化学习前置步骤,准备一个新手包,简化环境建置。 84 | * 大量使用模版,学生只要照著填就能做出很厉害的作品 85 | ### 步骤二:马上提供服务 86 | 87 | * 学生照著教程作出作品后,发现自己是天才,原来从前学不会,只是因为跟错老师。因此更加的督促自己紧跟进度 88 | * 学生要是学习掉队了,利用课程作业系统,找出调队者,利用同学小组或助教,救回进度。 89 | ### 步骤三:奖励期望行为 90 | 91 | * 鼓励学生写下自己的学习笔记,看见自己每周明确的学习变化 92 | * 鼓励学生完成学习进度,给予小型学习奖品,更授与学习勋章。 93 | * 鼓励学生挑战终极大赛,激发斗志。拿下大赛大奖。 94 | 95 | ## 如何在正确的「时间点」正确的「触发或奖励行为」 96 | 97 | 当然,以上写的都是「可以做」的一些建议手段。但是关键是,如何在「正确的时间点」做上这些事,正确的推学生一把。 98 | 99 | 这个问题,我在产品界没有找到答案。但我在其他地方找到了答案。 100 | 101 | Onboarding 这个字,原始于「HR」行业。指的是新人入职的熟悉阶段。因为每一个公司,招聘一个新人的成本很大。若在入职期间,没有受到公司妥当的安排,很容易就浪费了此前招聘时花的巨大财力与心力。 102 | 103 | 我在逆向了HR 界几十份Onboarding 的 checklist 以后。找到了一组方法。这套方法是由 8 个问题组成: 104 | 105 | 1. 在开始前,用户会问你什么问题? 106 | 2. 在第一次使用前,用户会忘记做什么会让使用者体验搞砸(最常客诉的点) 107 | 3. 用户最常做了什么「正确的事」达到很好的体验? 108 | 4. 用户最常做了什么「错误的事」结果收到很糟的体验? 109 | 5. 东西售出后,你如何检验它们做了「正确的事」或者是「错误的事」? 110 | 6. 顾客如何联络你修正问题? 111 | 7. 你怎么做事后补偿的方案? 112 | 8. 你希望它们如何事后帮你行销? 113 | 114 | 然后团队试著回答这八个问题当中的每一个问题。只需要诚实回答。每一个问题至少写 8-10 个答案。通常答案就出来了。 115 | 116 | 以全栈营为例:答案是这样的 117 | 118 | ### 用问题找到沈船原因: 119 | 120 | #### 1. 在上课前,学生會來問你什麼問題? 121 | 122 | * 課前要練習到什麼程度? 123 | * 要准备什么电脑? 124 | * 环境要怎么装? 125 | #### 126 | #### 2. 在上课第一天,同学忘记做什么会让使用者体验搞砸(最常客诉的点) 127 | 128 | * 忘記裝環境 129 | * 根本沒有把 Ruby on Rails 開發環境 build 起來。光裝機就超燒時間 130 | * 学生家里网速非常慢,或者是用了非常烂的「科学上网帐号」 131 | * 使用错误的方法学编程,导致学习进度缓慢 132 | * 自己独立学习,卡住没人救 133 | #### 134 | #### 3. 顾客最常做了什么“正确的事”达到很好的体验? 135 | 136 | * 按照老师的正确指导,练习,且重复复习 137 | * 有预习,按时交功课 138 | * 每天写 ORID (自我反省) 139 | * 有参与或组织 Meetup 140 | #### 141 | #### 4. 学生最常做了什么“错误的事”结果收到很糟的体验? 142 | 143 | * 不按照老师的正确指导,按照自己以前学习的步骤学编程 144 | * 最后一天才写功课 145 | * 不写 ORID (自我反省) 146 | * 不纪录「错的」经验 147 | * 不敢问助教 148 | * 不去问 Meetup 149 | #### 150 | #### 5. 东西卖出后你如何检验他们做了正确的事”或“做了错误的事”? 151 | 152 | * 利用交作业系统确保同学学习的方向正确 153 | * 鼓励同学写作 ORID (自我反省),以及整理小常识 154 | * 多多举办群分享 155 | #### 6. 他们如何联络你修正问题 156 | 157 | * 线上对话(Intercom 系统) 158 | * 教材吐槽机制 159 | * 助教定期回报 160 | #### 161 | #### 7. 你怎么做事后补偿的方案?(有 FAQ / 说明书 / 部落格 / 客服专线 ) 162 | 163 | * 线上额外的教程 164 | * 根据学习的效果,每周举办两次 Live 讲座补强 165 | * 助教辅导,线下 Meetup 166 | * 留级机制 167 | #### 168 | #### 8. 你希望他们如何事后帮你行销? 169 | 170 | * 参加大赛,学习成果自证 171 | * 拉票也会感染到周遭其他人 172 | * 推坑朋友 173 | * 上其他分享群里面分享方法 174 | * 整理学习心得发表 175 | ### 根据「事前」「服务中」「事后」三个阶段补强服务 176 | 177 | 我们再把产品的旅程分成三阶段:事前,服务中与事后。 178 | 179 | ![图片](images/GK5jHHHiWGmDfFSN.png) 180 | 181 | #### 182 | #### 阶段一:事前 183 | 184 | 根据这些问题我们发现学生,在「上课前」(准备阶段)时会有一些疑问: 185 | 186 | * 課前要練習到什麼程度? 187 | * 要准备什么电脑? 188 | * 环境要怎么装? 189 | 190 | 所以我们做了这样的安排: 191 | 192 | * 课程前设立了一个欢迎课程 193 | * 具体叙述要去哪里买电脑 194 | * 详细的安装环境指南 195 | * 以及有明确的验收标准 196 | 197 | 而且当他们装环境后,会卡住的人普遍有这些情形: 198 | 199 | * 忘記裝環境 200 | * 根本沒有把 Ruby on Rails 開發環境 build 起來。光裝機就超燒時間 201 | * 学生家里网速非常慢,或者是用了非常烂的「科学上网帐号」 202 | * 使用错误的方法学编程,导致学习进度缓慢 203 | * 自己独立学习,卡住没人救 204 | 205 | 所以我们在欢迎课程里面,多做了两件事: 206 | 207 | * 赠送每位同学高品质的「科学上网」(VPN)服务 208 | * 提醒同学可以加入 Slack (学习聊天群组),找助教聊天 209 | * 鼓励同学组织地区 Meetup 互助学习 210 | #### 211 | #### 阶段二:服务中: 212 | 213 | 我们在上这些课的时候,发现在这门课表现杰出的同学。与过去背景是否有学过编程没有太大的正相关。有些时候,甚至没有学过编程的同学,学习速度比学过编程的人还要高,甚至成果更好。 214 | 215 | 我们发现表现比较好的同学: 216 | 217 | * 按照老师的正确指导,练习,且重复复习 218 | * 有预习,按时交功课 219 | * 每天写 ORID (自我反省) 220 | * 有参与或组织 Meetup 221 | 222 | 表现很差的同学有这样的特征: 223 | 224 | * 不按照老师的正确指导,按照自己以前学习的步骤学编程 225 | * 最后一天才写功课 226 | * 不写 ORID (自我反省) 227 | * 不纪录「错的」经验 228 | * 不敢问助教 229 | * 不去问 Meetup 230 | 231 | 所以我们改善的作法是: 232 | 233 | * 开学第一天就设立「放下你的无效学习」,并要同学承诺 234 | * 设立多个微信群组,以及多线助教 235 | * 使用交作业系统,确保学生进度有跟上轨道。发现交作业死限三天前,还没有交的人,陆续提醒。 236 | * 不断安利写 ORID (自我反省)的好处 237 | * 把自我反省与纪录,当作是作业的一环去要求同学 238 | * 利用同侪学习证明「正确学习」的威力 239 | * 展示学长姐过去的学习纪录,证明按照正确的步骤走,能够有很大的学习效果。最终起了非常好的示范效果 240 | 241 | 课程每一周上新,但是有时候同学会被当周难度卡住,或者上面教材有错,会让同学卡住 242 | 243 | * 开放教材系统的吐槽评论。让先卡住的同学第一时间就能会报 bug。 244 | * 一旦在上面发现同学反应难度太高,就立刻上线补充教材 245 | * 要求值班助教每天回报同学常见卡住的问题。 246 | 247 | 也会 248 | 249 | * 利用交作业系统确保同学学习的方向正确 250 | * 鼓励同学写作 ORID (自我反省),以及整理小常识 251 | * 多多举办群分享 252 | 253 | 254 | 观察他们使用的状况。随时调整上课进度与难度 255 | 256 | #### 257 | #### 阶段三:事后 258 | 259 | 我们从追踪的情况。发现只靠教材是不足够的。有时候学生想要多问一些其他问题,或者学习强度太高,挫折感提升。 260 | 261 | 我们每周会 262 | 263 | * 根据学习的效果,每周举办两次 Live 讲座补强 264 | * 额外多录线上额外的教程 265 | 266 | 实在不行,就 267 | 268 | * 单独助教辅导,请他们参与线下 Meetup 269 | 270 | 再不行,就启动 271 | 272 | * 留级机制 273 | 274 | 至于如何激励同学,并且展示成果? 275 | 276 | 我们在整个课程当中,设计了两次程式比赛。鼓励同学参赛。比赛是以上课作业为蓝本。扩充以及装潢成自己的参赛作品。 277 | 278 | 在这个过程中,会鼓动学生的竞争意识。提高学习意愿。在参加比赛时,因为获选标准,需要同学互相投票。同学会撰写教程指南,分享在课程论坛上。希望同学看完教程之后,能够投票回报作为感谢。 279 | 280 | 于是比赛时,优秀教程也满天飞,促进下一轮的正向循环。同时,为了拉票,他们也会在其他非课程微信群上,向自己的亲朋好友拉票。 281 | 282 | 在比赛结束后,我们也鼓励同学针对这次大赛,写下自己的学习心得。 283 | 284 | * 参加大赛,学习成果自证 285 | * 拉票也会感染到周遭其他人 286 | * 推坑朋友 287 | * 上其他分享群里面分享方法 288 | * 整理学习心得发表 289 | 290 | 如此一个课程循环下来。一个同学至少会写 30-50 篇的学习心得以及纪录。有几百个同学同时上课。会产生出成千上万篇的学习纪录与分享。 291 | 292 | 我们不仅可以监视到学生的学习效果,并且也在营销上达到非常好的效果展示。 293 | 294 | 基本上我们团队,在打造整套课程,或者是推出一个新的小课程时。都会用这个框架先自我检视一遍。经过了这道打磨,留存率往往就可以拉高不少。 295 | -------------------------------------------------------------------------------- /07.md: -------------------------------------------------------------------------------- 1 | # 第七章 高留存课堂的关键 -- 心流与上瘾 2 | 3 | 相信教育界的很多从业者应该有听过两个名词「心流」与「上瘾」。 4 | 5 | 6 | ### 心流 7 | 8 | “心流”是指我们在做某些事情时,全神贯注、投入忘我的状态。在这种状态下,甚至感觉不到时间的存在。而在这件事情完成之后我们会有一种充满能量并且非常满足的感受。 9 | 10 | 「再玩一回合就睡觉,怎么天亮了?」形容的就是这种「心流」体验。 11 | 12 | 13 | 14 | 匈牙利的心理学者米哈里‧奇克森特米海伊(Mihaly Csikszentmihalyi)在 << 心流:高手都在研究的最优体验心理学>> 一书提到进入心流状态有五个要素: 15 | 16 | **(1)明确目标** 17 | 18 | 要达到心流体验,首先需要做一件有明确目标的事情 ,因为目标才会引领专注,才能让我们投入心力。 19 | 20 | **(2)即时回馈** 21 | 22 | 即时回馈是达到心流的一个重点,为什么很多人会沉迷于游戏或赌博,就是游戏和赌博有即时回馈,做得如何,马上可以看到效果。 23 | 24 | **(3)难度匹配** 25 | 26 | 难度匹配就是当今正在挑战的关卡,符合挑战者现在的程度。没有难度很快就会厌倦,但如果难度太高,又很容易放弃。所以,适当的难度才会激起参与者的持续投入。 27 | 28 | **(4)全神贯注** 29 | 30 | 把潜在的外界干扰都摒除掉可以让你更快的进入心流状态,并且不易被打断。 31 | 32 | **(5)持续挑战** 33 | 34 | 不但要匹配难度,而且要持续提供,让该项活动一直具有挑战,这也是刻意练习的核心。只有这样不断挑战,才能长期处于一种全情投入的心流状态。 35 | 36 | ### 上瘾 37 | 38 | 心流在学习界,往往指的是一个正面的词。指的是学习者进入一种浑然忘我的状态中,飞速学习。 39 | 40 | 而上瘾的表征,与心流很类似,但在学习界却是一种反面词。 41 | 42 | >“成瘾”(Addiction)系指人对某种事物所产生的一种超乎寻常的嗜好和习惯, 这种嗜好和习惯透过刺激中枢神经的奖赏系统(reward system)造成兴奋或愉快感而形成“瘾”。至于“成瘾”则是指个体不可自制地反覆渴求濫用某种物质或从事某种活动,虽然知道这样做会给自己或已经给自己带來各种不良后果,但仍然无法控制。 43 | 44 | 家长因为小孩玩游戏成瘾而荒废学业。所以家长往往见到学生对某一件事情上瘾了。就会强迫学生戒掉。 45 | 46 | 但在科学上。本质它们都是同样一件事。都是陷入对中枢神经的奖赏刺激系统循环,才会掉入了精神时光屋。 47 | 48 | 差别在于一个是好的 Outcome。因为心流对学习加速了,所以取得飞速的学习效果。因为对某个电玩成瘾了,导致所有的时间都浪费在无意义的产出上,学业荒废。 49 | 50 | 有趣的是,学习界一直在找「心流」的人工产生方法,认为这是学习境界的最佳圣杯,且认为「心流状态」是可遇不可求的事。 51 | 52 | 但一方面,学习界又千方百计让学生完全远离电玩界,而明明「人工致瘾」的答案就摆在那里。 53 | 54 | 所以这的确是挺矛盾搞笑的一件事。 55 | 56 | ## 「上瘾」= 习惯+奖励 57 | 58 | 既然心流就是上瘾。 59 | 60 | 那么我们要如何打造进入心流 / 上瘾的状态。米哈里‧奇克森特米海伊(Mihaly Csikszentmihalyi在他的书里面分享了进入心流的五个步骤: 61 | 62 | **(1)明确目标** 63 | 64 | **(2)即时回馈** 65 | 66 | **(3)难度匹配** 67 | 68 | **(4)全神贯注** 69 | 70 | **(5)持续挑战** 71 | 72 | 不过。就我的实践心得来说,这应该只是「 心流」的「表征要素」。并不是真正的流程。 73 | 74 | 行为学家 Nir Eyal 出了一本书 Hooked (钩瘾效应)。当中叙述了人类上瘾的是怎么被人为制造的 75 | 76 | HOOKED = TRIGGER(制造契机) -> ACTION (进行动作)-> REWARD (得到奖赏)-> INVESTMENT(重新投资) 77 | 78 | 放一把火,騷起癢處,再提供解決方案,使用者得到獎賞後,促成某些行為。再利用这个行为,制造下個触发点的产生,以达到建造下个回路的结果。 79 | 80 | 「明确目标」「即时回馈」「难度匹配」是为了让人类维持在一个平稳的固定行为+奖励回圈里面,而「持续挑战」是这个行为的循环结果,「全神贯注」是参与者的心理状态。 81 | 82 | 所以「上瘾」本质上是什么? 83 | 84 | >上瘾 = 「平稳的固定行为」+「奖励系统」。 85 | 86 | 更进一步的说,这个「平稳的固定行为」就是「习惯」。上瘾 = 「习惯」+「奖励系统」。 87 | 88 | 你可以仔细想想,手游里面哪是什么「挑战」,我们将游戏解构以后,拿掉游戏情节以后,你会发现只是手在那里滑来滑去。你真正期待的是「那个内容物不一样的」「奖励宝箱」。 89 | 90 | 我们在前面学习的章节里面有提到过,叙述性记忆是很容被人类遗忘的。而重复性的程序性记忆(反覆性的练习)会被人类的身体自动记住。 91 | 92 | 但是没有人会很无聊的反覆练一个动作几十遍。这太无趣了。但是 HOOK 到奖励系统上面就不一样了。 93 | 94 | 正确的奖励设计。不管再无聊的动作,你可能可以刷上一整晚。想想那些熬夜玩吃鸡的时光吧。 95 | 96 | ### 习惯 97 | 98 | 那么什么又是习惯呢? 99 | 100 | 习惯是大脑自动遵循的一些行为模式。我们每天的人生从一睁开眼睛就要面临著几百样选择。从到底要不要刷牙,该穿什么衣服,该穿什么鞋子,该走什么路线上班,上班该喝什么东西提神。 101 | 102 | 无一不需要做出选择。 103 | 104 | 但是如果大脑需要对生活中每样遇到的事,都得判断过一遍才能做出行动。那么甚至在踏出家门之前,你的大脑就会当机了。 105 | 106 | 所以我们大脑会将过去已经下过决策,而且体验还可以的记忆轨迹,建立起来变成「常规行为」,这件事就叫做「习惯」。 107 | 108 | 习惯都带有几个特征: 109 | 110 | * 简单的动作 111 | * 重复的动作 112 | * 立即的正面反馈 113 | * 平稳且轻快的情绪反馈(小确幸) 114 | 115 | 我在这个课程的结构篇分享过。做课程分镜稿的重要性。将每个章节的长度缩到 15 分钟之内(实体课),甚至是 5 分钟之内(线上课)。 116 | 117 | 主要原因有几: 118 | 119 | 1. 这是保持注意力的最佳长度 120 | 2. 这是留存学习内容的最佳长度 121 | 3. 难度容易控制调整 122 | 4. 课程结构简单 123 | 124 | 短且简单的课程,非常容易植入「习惯设计」。因为你不可能透过一个复杂的互动机制、情绪体验,让学生养成「习惯」这件事。 125 | 126 | 很多人常会误以为,游戏化就是将游戏化的元素移植到课程里。这仅仅只是了解字面上的意思。但将课程游戏化重点不是将元素加入课程。 127 | 128 | 而是如何将课程设计成一个一个重复的 routine。然后加入「奖励」以及「游戏化元素」,让学生「有动力进入回圈」「能察觉到自己成长」「不自觉得寻求下一轮的重复以得到不同形式的奖励」。 129 | 130 | ## 以程序性知识为主 131 | 132 | 在这个课程前面的章节,布鲁亩分类学提到知识主要分成四种 133 | 134 | * 事实性知识(Factual)--相互分离的、孤立的内容要素一一“信息片段”形式的知识,包括术语知识以及具体细节和要素的知识。 135 | * 概念性知识(Conceptual ) --“更为复杂的、结构化的知识形式”(,包括分类和类别的知识、原理和通则的知识以及理论、模型和结构的知识。 136 | * 程序性知识(Procedural)--“关于如何做某事的知识”,包括技能和算法的知识以及技术和方法的知识,还包括用来决定和判断在特定领域或学科中“何时做何事”的准则知识。 137 | * 元认知知识(Metacognitive)“关于一般认知的知识以及关于自我认知的意识和知识”,包括策略性知识关于认知任务的知识(包括情境性知识和条件性知识)以及关于自我的知识。 138 | 139 | 我会推荐老师优先教学「程序性知识」的原因。 140 | 141 | 除了人类善于学习具体知识的原因外。程序性知识是这四种「知识」最容易得到反馈的。 142 | 143 | 学生只要照著做一遍,就会有成果。学生只要参考老师的成果,就能得知自己做的好不好。 144 | 145 | 通常能做出来,大概就有基本 60 分。而人类会倾向再做一次拉高到 80-90 分。 146 | 147 | 但是事实性知识、概念性知识、元认知知识的测评,往往都是是非题、选择性,开放性问题。而这些题目的反馈效果并不是那么好。而且让人没什么动力「再做一遍」。 148 | 149 | ## 如何建立一个新的习惯 150 | 151 | 「建立习惯」这件事,是有经典套路的。 152 | 153 | 一个习惯的组成,由三个部分组成。 154 | 155 | Trigger => Routine => Reward。 156 | 157 | 先是由某动机触发了这个行为的发生。使用者做了某个动作。得到了奖励。经过重复的几次循环。最后巩固成一个「习惯」。 158 | 159 | 另外,行为学家,还提出了「建立习惯」的三个强化步骤: 160 | 161 | * Step 1: 消除疑虑与挫折 162 | * Step 2:立即传递价值 163 | * Step 3: 奖励期望行为 164 | 165 | 等等。这怎么有点眼熟。是的,在上一章我们介绍的 Onboarding 框架。而 Onboarding 框架就是拿来用来 Shape 建立习惯的流程的方法。 166 | 167 | 理想中,我们希望我们的课程经过一次设计之后,学生马上就学会并且立刻成瘾。但是理想是理想,现实是现实。 168 | 169 | 现实中常会发生一些不如预期的状况,拉低动机、破坏重复回圈、拉低回馈。 170 | 171 | 所以我们需要用一些检查流程,确保这个过程不会遭受到太大的破坏。 172 | 173 | 如果学生经历的流程太过复杂,挫折太大,没有得到回馈,或者是过程情绪起伏太大。那么他可能会大概率并不会想要再次重复这样的过程。 174 | 175 | 所以这就是为什么我们需要 Onboarding 框架的原因,学生往往不会给你太多机会让你打磨。设计差的结果,学生最快给你的反馈,就是不跟你玩了。。。。 176 | 177 | ## 如何稳固一个「习惯结果」 178 | 179 | 2014 年时,我在硅谷一家公司任职,这个服务是做十分钟内送上门的便当外送。 180 | 181 | 有一阵子销售遇到瓶颈,公司想找出原因并且突破,内部数据团队就派一群实习生去作客户访谈:问问客户,有什么是我们得优先改善的? 182 | 183 | 结果答案十分让我们震惊。 184 | 185 | 客户收到问卷后,不意外的回传了一大堆抱怨: 186 | 187 | * 不好吃 188 | * 速度太慢 189 | * 司机送餐态度恶劣 190 | * ..... 191 | 192 | 但是。别以为这些用户抱怨完这些缺点之后,马上就弃坑。这些用户不但没有弃坑,反而还是不离不弃的常客,始终一直在使用这些服务。 193 | 194 | 我们对这个现象感到很惊奇,想问他们继续使用的原因到底是什么。 195 | 196 | 实习生回报报的答案是:因为这些用户已经「习惯」了。因为这个服务,对他们来说还是非常便利: 197 | 198 | * 虽然广告宣称 10 分钟到,但是,客户内心预期都是最晚 30 分钟内能到就可以了。 199 | * 虽然不是什么可口的便当,但是「能吃」。以 10 块钱的餐,这样的品质可以了。 200 | 201 | 客户内心对这个服务有一个最差的预期,而这个产品还活在这条底线之上。 202 | 203 | 后来,我们内部在捞数据时,发现我们所有的常客,只要在两周内有连续 5 次以上的消费记录,这个人就很有可能成为我们的常客。 204 | 205 | 于是,我们就做了一档行销活动,叫 5by5,活动内容是这样的:第一单半价(5元),只要你消费了,就再给你一张半价券。连续五次以内都是半价。 206 | 207 | 本来程序员对于这个策略半信半疑。其实搞得很勉强。 208 | 209 | 但是,这个活动真的有用。在完全没有改善服务品质的情况下,我们的留存率与销售成绩就飙上去了。而且,果然常客比率大幅上升。而且后来只要做一些小活动,或者是产品有点小改善,用户就很惊喜。 210 | 211 | 因为这个「负面」例子给我的启发太大了。后续我自己在做一些活动时,也得到类似的结果。 212 | 213 | 我发现建立习惯的重点并不在于「服务的品质好坏」「奖励的好坏」。 214 | 215 | 而在于 216 | 217 | 1. 客户对未来发生的事(不管是好或烂),有心理预期。而这个最低底线,能够满足他原先愿意尝试最低核心需求。 218 | 2. 服务品质稳定。(稳定的好或稳定的烂,当然最好稳步的变好) 219 | 3. 服务末尾阶段,要有部分的「奖励行为」(也许是称赞,也许是赠品) 220 | 4. 短时间内(1-2周内),至少进行尝试 3-5 次回圈。真正让核心行为「形成」了习惯。这样顾客就不会想要放弃先期成本转投其他选项。 221 | 222 | 后续如果你的服务逐渐升级,甚至顾客会觉得这是「变动奖励」,常常感受到惊喜刺激。甚至有机会形成「上瘾」。 223 | 224 | ## 将习惯的养成视为点燃一座发动机进行自主循环 225 | 226 | 习惯由三个部分组成。 227 | 228 | Trigger => Routine => Reward。 229 | 230 | 反覆循环。 231 | 232 | 你可以将习惯的养成,视为一座发动机的点火循环。 233 | 234 | 首先我们得将点火触发的门槛降得足够低。让用户起码完成一个小循环。 235 | 236 | 接著我们要利用其他的动机。再引诱第二次行为的产生。在 3-5 次的重复当中。建立起自主循环。 237 | 238 | 在下一章,我们会介绍人类核心的八个核心动机。如何交叉搭配拨动人类的深层动机,真正用好「游戏化」这个超强的教育辅助工具。 239 | -------------------------------------------------------------------------------- /08.md: -------------------------------------------------------------------------------- 1 | # 第八章 -- 人类动力机制(一) 2 | 3 | 2020 年 3 月底。因为 COVID-19 肆虐。待在家实在太无聊了。当时,任天堂刚推出一款新游戏「动物森友会」。这款游戏我本来只是单纯想拿来打发时间而已。 4 | 5 | 游戏到货的当天,大约是下午一点多。因为我实在很想睡,我接上电视机玩没20分钟后,就想要先去眯一下。我妹在旁觉得这游戏有点意思,于是就主动提出他可以帮我打扫岛屿。本来约定他只能帮我拔草与钓鱼。 6 | 7 | 结果睡醒后,我妹因为过于勤奋,把第一天进度就玩光了。而且因为这游戏太让人著迷,加上游戏记录因为设计机制不能转移。于是,我的任天堂游戏机就因此被莫名其妙充公变成他了。 8 | 9 | 搞得我还得自己再去买一台新的机器玩新的岛。 10 | 11 | 后面的事情大家都知道了。全球掀起一股「动森热」。 12 | 13 | ## 莫名其妙的成瘾 14 | 15 | 动物森友会是一款非常神秘的游戏。我妹原先是一个对电玩游戏并不感冒的玩家。但动物森友会却是第一个让他严重游戏成瘾的一个游戏。接下来的一个月,他甚至与游戏机寸步不离。甚至有时候还一次开两台 Switch 种田。 16 | 17 | 有这种症状的不只我妹。几乎在我 FB 墙上的许多朋友都沦陷了。 18 | 19 | 每个人都形容这款游戏有著魔法:「这个游戏本来觉得蛮智障的,就是打扫一个岛钓钓鱼而已,不知道为什么就陷下去了,每天准时起床帮黑心狸克打工」 20 | 21 | 今天我们就来剖析一下一个看起来弱智又剥削玩家免费打工还黑薪房贷的游戏,如何让玩家上瘾到无法自拔。 22 | 23 | ## 游戏动力篇(八角框架) 24 | 25 | 在开始之前,我要推荐一本书,这本书的动力框架会贯穿后面章节的主要结构。 26 | 27 | 这本书就是 Actionable Gaminification 这本书。 28 | 29 | 在这本书中,作者周郁凯先生归纳出了一个人类动力框架「八角理论」。人类去做某事的动力,基本上可以分成八种类别。 30 | 31 | ![图片](images/MyZyua6KXcJGlxub.png) 32 | 33 | 如果将这个八角分为上下两区。上面是白帽正面光明区,下面是黑帽黑暗区。 34 | 35 | 白帽是让人类感觉到强大、圆满、满意的动机元素。 36 | 37 | 而底下黑帽是让人类觉得著迷、焦慮、上瘾的元素。 38 | 39 | 一般来说,黑帽的驱动力在短期比较强大。比如说被恐惧追逐或让你立即行动,看到有奖品会马上跳起来追逐,但是久了以后会无感。 40 | 41 | 白帽的驱动力在短期间无感,长期以来却会让你觉得自己在实现伟大事业,能够长久满足。 42 | 43 | 如果我们再将这个八角拆成左右两边。左边的元素又比较偏向外在动机,与周遭比较。内在动机。 44 | 45 | 动物森友会这款游戏非常的强大,是因为运用简单的元素,将里面的动力元素拿捏的非常好。 46 | 47 | 才会让大家觉得很奇怪,为何一款如此幼稚无聊的游戏,最后却玩到停不下来。 48 | 49 | ## 拆解动森套路(前五天) 50 | 51 | 动森的游戏真要分析,还要分析成前五天与后五天的游戏进度。 52 | 53 | 游戏前五天会比较像是一个游戏的 Onboarding,也就是教玩家学会这款游戏的一个过程。 54 | 55 | 为什么是五天呢?其实我们在设计网站或游戏时,5 是一个很关键的数字。 56 | 57 | 如果你能让用户连续用 5 次。基本上后续他就会养成一个惯性。不太容易 drop 这个游戏。 58 | 59 | 所以动森的前五天其实是很关键的。 60 | 61 | ### 第一天:骗你签房贷 62 | 63 | 在你玩动森的第一天。其实动森是没什么任务的。他很邪恶的只有骗玩家签一个 9800 的房贷。为什么要骗用户签房贷呢? 64 | 65 | 这就是让用户先误以为他自己有一个目标。就是他欠了钱需要还。 66 | 67 | 否则如果来岛只有砍树与钓鱼的话,用户马上会觉得这是什么傻逼游戏,立刻就走了。 68 | 69 | 当然,第一天能玩的也是有限的。狸克交给玩家一个帐棚就叫玩家回家洗洗睡,明天再回来找他。 70 | 71 | 所以第一天虽然没什么内容,玩家还是会甘愿当作「好吧。被骗一天我还能接受,明天看你有什么说法」。 72 | 73 | ### 第二天:找了一个朋友假装博物馆馆长 74 | 75 | 当玩家第二天去找狸克时,他说他有一个朋友要来岛上住,还跟玩家说,他愿意用 500 的代价,代收购化石。因为此时玩家非常缺钱,拔草都没这么好赚,玩家当然想说这应该是有点意思。 76 | 77 | 等他收满了以后,又开始掰个藉口凹玩家,帮馆长找博物馆地点。隔天会盖好。 78 | 79 | 虽然玩家觉得好像这游戏很无聊。但是已经答应要帮人盖博物馆了。就会想继续待一天看看,到底狸克还能搞出什么说法。 80 | 81 | ### 第三天:博物馆开张,原来可以搜集东西 82 | 83 | 博物馆馆长来了以后。发现突然有新东西可以玩了。就是收集。(所有权动力) 84 | 85 | 一般玩家有个犯贱心理,看到收集簿,会想要收大全集。 86 | 87 | 所以玩家就会开始很忙。到处钓鱼抓虫。 88 | 89 | 原本觉得这游戏很很智障,突然也觉得不智障了。还会想说哪里可以抓更多。 90 | 91 | 这时候机场与里程卷就有用了。 92 | 93 | 里程的门槛,也会刚好够让玩家出一次岛。 94 | 95 | 这里有个小设计就是每棵树可以砍三次。为什么砍三次呢? 96 | 97 | 因为可能会掉三种不一样的东西。这让玩家会觉得「不确定会掉什么」,就会一直砍一直砍。 98 | 99 | 钓鱼也是相同的原理。我妹妹就喜欢钓鱼远胜于抓虫。因为他十分享受可以钓出一种神秘大鱼的感觉。 100 | 101 | 而且我竟然也著魔了,为了能钓出更多的鱼。我更多买了一台 Switch Lite 在家当作公共南半球,专拿来钓鱼用。 102 | 103 | ### 第四天:交朋友 104 | 105 | 当玩家可以出岛以后,会开始发现有陌生的角色。他会想来搬来你的岛。 106 | 107 | 为了帮新玩家盖房。会意识到前几天囤的自家材料还真不够用阿....只好继续砍木材。 108 | 109 | 而这些新角色了以后,它们常常做出一些神秘的行为。比如说撩你、逗你、送你东西。 110 | 111 | 如此新奇(不确定性)会引诱玩家一直跟它们讲话互动。 112 | 113 | 同时这时候因为玩家开始发现有很奇怪的鱼、很奇怪的邻居。开始会将图片上传到 FB。 114 | 115 | 这时候就会一堆人问你这是什么,虚荣心简直是爆棚到极点(社会影响力)。 116 | 117 | 玩家就会觉得我家有动森我光荣。 118 | 119 | ### 第五天:盖自己的家 120 | 121 | 前几天,其实家里根本光凸凸的没啥好玩的。但是等玩家骗来三个岛民后。家里开始可以有一些家具可以选。玩家就会想要开始盖一点试看看。 122 | 123 | 然后这些家具都很机贼的需要铁矿。于是玩家出于无奈只好去农里程换券出岛去采矿。 124 | 125 | 至此玩家已经不知不觉得玩五天了。 126 | 127 | 这时候你觉得自己好穷人生十分灰心,难道我要农一辈子吗? 128 | 129 | ### 第六天:卖大头菜的家伙来了 130 | 131 | 就当你觉得人生灰心时,突然有个卖大头菜的家伙来了。结果这家伙偷偷告诉你一条赚钱密技,就是卖大头菜可以暴富。 132 | 133 | 所以你半信半疑的把钱 all in 下去买他的菜。 134 | 135 | 接下来就过著提心吊胆的日子。这时候玩家已经不知不觉沦为动森里铃钱(金钱动力)的奴隶了。 136 | 137 | 因为大头菜周末就会烂。所以玩家必须在这六天把菜卖出去。菜价一天会报三次。所以逼得玩家一天会回来三次。。。。。。。(害怕失去的动力) 138 | 139 | 开始有没有那种邪恶的味道........... 140 | 141 | 原本都要弃玩了这贼游戏又把玩家绑了一周。 142 | 143 | ### 第七天:据说 KK 要来 144 | 145 | 但是第七天真是没事干。要找点事干阿。这时候狸克就说什么想要让他偶像 KK 来。 146 | 147 | 这时候你就好奇 KK 是谁。但不管是谁。反正这岛要建设到一定 LEVEL 他才要来。 148 | 149 | 反正玩家也没事干,就开始盖。(其实 KK 是谁根本关我屁事) 150 | 151 | 然后盖著盖著那个西施惠就嫌你缺这缺那的。你只好就一直去凑花、装饰。 152 | 153 | 莫名其妙的也盖开始把这岛盖成有点形状了。 154 | 155 | 人类就是既然要盖就要盖完。这时候狸克就会推销玩家盖桥阿盖斜坡阿。 156 | 157 | 玩家身为岛主,这一定是你的事。(成就、使命、创造) 158 | 159 | 你一看草泥马最便宜又要 98000。只好继续打工赚钱。 160 | 161 | 而且到这里。几乎玩家都打工成惯性了。不可能在此时 quit。 162 | 163 | ## 限制机制 164 | 165 | 这里面有几个细部平衡机制。防止玩家过于辛勤破坏游戏性 166 | 167 | ### 里程机制 168 | 169 | 基本上这游戏常常因为一些乱七八糟的机制或者是迷之不可说的机制,钱也没有那么不好拿。但是出岛一定要拿里程卷。里程卷只能农的。 170 | 171 | 这就保证玩家一定会乖乖农里程。里程本身有时候绑一些限定商品 172 | 173 | ### 早上 5:00-22:00 的游戏时间 174 | 175 | 玩家过于辛勤,会提前把游戏玩「完」 176 | 177 | 所以基本上游戏设计了几个机制: 178 | 179 | * 早上 5:00 才会有新故事进度 180 | * 早上 9:00 商店才会开门,开到 22:00。其馀时间八折收,而且晚一天才给钱降低玩家的周转率。很多玩家对于这个20%很计较。就会农的有所节制 181 | * 申请盖房盖桥,都要隔天才会完工 182 | ## 激励机制 183 | 184 | ### 点数 program 185 | 186 | 这是很厉害的机制。玩家每完成一些小任务。就会得到点数。或者掀开一张未知的成就卡。都是集点制。大概都是重复 3-5个动作就拿到。 187 | 188 | 这害玩家会不断的农下去。一个接一个的作。(成就) 189 | 190 | ### 收集品 191 | 192 | 博物馆真是很厉害的机制。玩家会为了要填满自家博物馆的馆藏。天天坚持捕虫抓鱼挖化石。就是要把展厅填满。 193 | 194 | 后期,玩家还会发现原来会有 Set。日式家具、竹林、流星 set...etc 195 | 196 | 为了要把整套家具凑出来,又只好不停的农(稀有动力) 197 | 198 | ### 特殊节日或活动 199 | 200 | 当你觉得游戏已经都是农不太好玩的时候。这时候又来一个节日。 201 | 202 | 比如说复活节或钓鱼大赛 203 | 204 | 害得玩家整天都在钓鱼凑钓鱼大奖。或者是存蛋存了一整个礼拜,存到都要吐了,换了一套复活节大全集。(所有权动力)(稀有动力) 205 | 206 | ### 独特的岛 207 | 208 | 当你农到变成农夫之神时,KK 也来了。这时候就解锁了地形工具。可以盖河流、瀑布。甚至铺路。 209 | 210 | 你终于可以把当初那些畸形的地都铲光光,重新规划成你要的样子。(所有权动力)(创造动力) 211 | 212 | 这时候光整个岛整地铺路都市重划,还有光都市重划的钱,你就要再凑一整个礼拜.... 213 | 214 | 更不用说房子变大以后,还要找家具填满。简直是象牙筷子的烦恼。 215 | 216 | 特别是当你出岛以后,看到朋友的岛,再看看自己的岛,简直就土的像渣...........(社交动力)(创造动力) 217 | 218 | 219 | ## 精神时光屋的一个月 220 | 221 | 这就是为什么正常人能够注意力被动森圈住整整一个月的原因。打一个 RDR 或 GTA5 都不用两周。 222 | 223 | 猛男检树枝有什么好玩?就是真的还很好玩....任天堂设计小组比你想像得还要邪恶。 224 | 225 | 任天堂动森,看似是一个非常轻型游戏,却用巧妙的机制,却让玩家每天以极低的 effort 能够连续农一个岛浓了整整一个月。 226 | 227 | 说穿的真的很不可思议。所以,相同的游戏机制,其实我们也可以把它移植到课程上。 228 | 229 | 下一章,我们就会教会大家怎么将类似机制转移到自己课程里。 230 | -------------------------------------------------------------------------------- /09.md: -------------------------------------------------------------------------------- 1 | # 第九章 课程设计实战(一) 2 | 3 | 耶鲁大学的 B.J. Fogg 2009 发表了一篇论文,总结了如何从设计上提高转化率,其关键是Motivation-Ability-Trigger(动机-能力-触发)(后 Trigger 改为 Prompts )。 4 | 5 | 6 | 提到 7 | 8 | ![图片](images/ahRkZSDhxAiplmS7.png) 9 | 10 | 做为学生。不去行动的理由有千百种。但是总归原因下来大底是两条: 11 | 12 | * 动机不够 13 | * 门槛太高 14 | ## 八角框架助力你一把(提高动机) 15 | 16 | 还记得我们前一章提到的八角框架图吗? 17 | 18 | ![图片](images/1fKaodeuYHe4QCRO.png) 19 | 20 | 这张图之所以十分重要。是因为这张图综合了几乎所有人类底层的动力机制。 21 | 22 | 高留存课堂的建构,完全基于三个要素 23 | 24 | * 足够强的动机,让学生愿意踏出第一步产生行动 25 | * 足够简单的步骤,让学生没有藉口不去行动 26 | * 足够简单的回圈以及持续的回馈奖商,让学生愿意一次再一次的重复回圈。 27 | ### 全栈营是怎么打造的 28 | 29 | 这次,让我们再重新回顾一下我们在第五章提到的内容。 30 | 31 | 让我来拆解全栈营是怎么做到这一点的。 32 | 33 | #### STEP 1: 目的 --- 史诗意义与使命感 Epic Meaning & Calling 34 | 35 | 全栈营的 Landing Page 口号与其他编程班非常不一样。与其他编程班不一样,来报名编程般的朋友,多半并不是想要就业的工程师,而是已有原先专业,想要多学一门编程技能,协助自己日常生活自动化,过上一把编程瘾的人。 36 | 37 | 如果我以「就业」作为口号。恐怕很难作为核心动力,去驱动学生。 38 | 39 | 所以我以「脱胎换骨成为下一个想要的自己」做为核心 Slogan。人生在世,谁不想在这一辈子能有一个机会重新投胎呢? 40 | 41 | 这是我在课程设下的第一个大动机「赋予史诗意义与使命感」。而这招通常也是课程的一开头,常用的动机。 42 | 43 | 当然,你也不一定要用「使命」作为第一个原始设定。只是在这个班,「使命」设定比较符合 TA 动机。 44 | 45 | * 所有权 46 | * 成就 47 | * 使命√ 48 | * 赋予创造力 49 | * 社会影响力 50 | * 不确定性 51 | * 避免 52 | * 稀缺性 53 | 54 | 比如说在某些就业为主的班级,可能就会比较主打「避免」(不学编程就被时代逃汰)。「稀缺」(你知道 AI 工程师现在在市场上炙手可热吗?)「所有权」(工程师月薪两万人民币起)。 55 | 56 | 不过以上这三个动力,并不会很持久。因为它们不属于从「内在」出发的核心动力。 57 | 58 | ![图片](images/0pJGJ7qBMF4gCGLn.png) 59 | 60 | #### STEP 2: 游戏玩法 --- Routine 61 | 62 | 在课程的一开始前三周,我们设计了几个教学关卡,有教学手册(元学习课),增强让学生自学的信心。有基础课程,让学生拥有最基本的拆解需求能力,建构簡單網站的能力。 63 | 64 | 我们的初级课程本质核心是让学生 65 | 66 | * 学会如何将日常生活中遇到的问题,转述成程序员说的自然语言(需求规格) 67 | * 学会备开发动态网站的能力。转述成程序员说的机械语言(程式码) 68 | 69 | 70 | 我们尽量让学生用日常生活中的例子。去练习写「程序员说的自然语言」。比如说如何对「出门上班到公司」这一段路程要做的事,做优先权排列。 71 | 72 | 动态网站开发的核心是 CRUD(增删找查)。我们在这一段安排了至少两遍以上的循环。让学生对这个动作到达手指熟练的程度。 73 | 74 | 这一段的关卡。完成之后,学生能够非常简单的搭起一个有模有样的简单论坛。因为几乎来上课的很多学生,这辈子从来没碰过编程。而在完成前面短短的练习,就能盖出一个论坛。 75 | 76 | 学生成就感自然就容易爆棚。 77 | 78 | 基本上我们的课程自始至终微绕著1. 拆需求 2. 不同形式的 CRUD 变形关 3. 整合第三方 API 做出更有模有样的网站功能。 79 | 80 | ![图片](images/Wm4fhjXS5y61bV6f.png) 81 | 82 | ### 83 | #### STEP 3: 第一个小胜利 --- Ah-ha Moment 84 | 85 | 上面这一段的课程是三周。 86 | 87 | 三周以后。我们举办了第一次的线上开发大赛:请学生利用前三周的学习,自己改版成一个有特色的招聘网站。 88 | 89 | 这次的大赛,难度并不高。基本上学生完全可以直接拿课程的作业直接修改参赛。 90 | 91 | 这一步主要是让学生能看到自己学习的成果。 92 | 93 | 94 | ![图片](images/2Cd8XqY6KhBObysb.png) 95 | 96 | 然而,如果只是「道德劝说」让学生修改课程作业,改成自己版本的网站。这样「动机」实在太薄弱了。 97 | 98 | 所以我们祭出了大狠招。 99 | 100 | 1. 奖品 (稀缺 / 所有权) 101 | 102 | 丰厚的奖品。一等奖赠一支 QC 35 耳机(价值 2000 元 RMB)二等奖 Cherry 键盘(价值 1000 RMB) 103 | 104 | ![图片](images/r6IUxxpQ4NXWIPtg.png) 105 | 106 | 2. 投票(社交) 107 | 108 | 作品除了技术性评分外,也有投票评分。许多同学为了要赢的奖项。到处去亲朋好友间帮忙投票。而亲朋好友看到了,无不称赞它们进步惊人 109 | 110 | ![图片](images/34sUiuod4erqzMwA.png) 111 | 112 | 3. 低门槛 113 | 114 | 这次的大赛。基本上都不需要自己是个尖子生才能参加。最低门槛,你拿个过去「作业的官方阳春解答」,都能拿来魔改装潢。 115 | 116 | 完全没有藉口不参加。 117 | 118 | #### STEP 4: 技能进步 --- 进步与成就感 Development & Accomplishment 119 | 120 | 我们的课程系统。每一个课程都切成极小的作业。并设有进度条。 121 | 122 | 学生可以从他自己的学习 Dashboard,确切感受到自己的学习进度进度在前进,成果在累积。 123 | 124 | ![图片](images/FO4F2io4CNCQJJme.png) 125 | 126 | 此外我们的学习作业里面包含了让学生每天写的 ORID 学习成长日志。学生是真的能看到自己不断的在逐步成长。 127 | 128 | ![图片](images/10zZ6Nhlc5BU1jSe.png) 129 | 130 | #### STEP 5 & 6: 角色养成 --- 所有权与拥有感 Ownership & Possession & 独特的宝箱奖章 --- 稀缺性与渴望 Scarcity & Impatience 131 | 132 | 另外。在游戏设计时,很重要的一个元素 Agency (代入感)。 133 | 134 | 我们在系统内,将每个学生,参与课程的作业进度,缴交的作业,收获的奖章,参赛的作品,都会收录在个人主页上。 135 | 136 | 每完成一个基础要求,就会多一个奖章。学生会不由自主的想要去建设自己的主页。完成一个又一个的成就。 137 | 138 | ![图片](images/RxH9NkoS5CaInxKt.png) 139 | 140 | ### 141 | #### STEP 7 & STEP 8 惊喜的关卡 --- 未知性与好奇心 Unpredictability & Curiosity & 体验社交分享 --- 社交影响与关联性 Social Influence & Relatedness 142 | 143 | 全栈营一期总共有两次大赛。一次是 Job Listing 大赛,一次是 JDStore 大赛。 144 | 145 | 一般来说,社会上对于合格程序员的考核有四大要素。 146 | 147 | * 拿到需求,正确的拆分成规格 148 | * 按照规格,实际实做出来 149 | * 与人协作,完成进度 150 | * 根据实际生活中的变化找到资源,并且整合进作品内 151 | 152 | 我们第二次大赛。本身也是基于后四周的教材(一个电商)。 153 | 154 | 只不过这次电商网站大赛。本身较为复杂。除了改版商店外,另有加分题(需要完成三个不在讲义上的功能)。并且,在第一次大赛时,是单人作品。第二次是双人作品。 155 | 156 | 我们把整个学习目标融合在整个大赛之中。 157 | 158 | 同时也对整个大赛祭出了高额奖品。 159 | 160 | ![图片](images/kxtw0lPI6PMbzlX6.png) 161 | 162 | 163 | 第一名的 Aeron (程序员效率神气)本身就价值约 13000 RMB。这堂课学费也就是 12000 RMB 左右。如果能得奖,甚至是买椅子送课程了。第二名的 ipad Pro 当时也大约要价 8000 RMB 左右。 164 | 165 | 奖品威力非常惊人。 166 | 167 | 这个大赛的设计主要是在挑战学生的以下能力: 168 | 169 | * 如何拆分任务以及与队友偕同合作 170 | * 代码实做技术能力(Github 原码公开) 171 | * 产品完成度,修饰打磨的功夫 172 | * 人气度,与同学社交互助的能力 173 | 174 | ![图片](images/FWYtIjtGh7jGMbGL.png) 175 | 176 | 这个大赛促成了几件我们意想不到的的结果: 177 | 178 | * 同学们互相观摩 Github 原始码,互相进行功能上的学习 179 | * 同学们在论坛上,互相分享教程文章,指导其他同学加功能,顺便为自己的作品拉票 180 | * 互相在作品页面上留言打气 181 | * 学员在拉票与竞赛的过程中,互相吸收到陌生人与亲友的打气与帮忙。充满惊奇与收获。许多同学甚至上班请假橹代码,就为了能专注赢的大赛 182 | 183 | ![图片](images/fZusmtVPfL5pX7JO.png) 184 | 185 | 不仅仅只是做为学校方,对产生的化学效应,惊喜连连。就连学生自己,也没有想到来上一堂编程课可以收获这么多意外与惊喜。 186 | 187 | 188 | ## 如何降低挫折与困难 189 | 190 | 还记得我们第六章的 Onboarding Framework 吗?我们用了八个问题,去把核心的「困难点」找出来。 191 | 192 | 1. 在开始前,用户会问你什么问题? 193 | 2. 在第一次使用前,用户会忘记做什么会让使用者体验搞砸(最常客诉的点) 194 | 3. 用户最常做了什么「正确的事」达到很好的体验? 195 | 4. 用户最常做了什么「错误的事」结果收到很糟的体验? 196 | 5. 东西售出后,你如何检验它们做了「正确的事」或者是「错误的事」? 197 | 6. 顾客如何联络你修正问题? 198 | 7. 你怎么做事后补偿的方案? 199 | 8. 你希望它们如何事后帮你行销? 200 | 201 | 我们发现学生在学前的关卡在于: 202 | 203 | * 学编程前没有 Mac 电脑 204 | * 在正式开始学之前,就对于自己学成「没有信心」 205 | * 上课时没有留足够多的时间做练习 206 | * 开学前没有做准备的作业,结果直接跟不上 207 | * 没有科学上网工具,关键的自救方法无法实施 208 | * 不知道怎么正确的问题 209 | * 之前用了错误的方法学编程 210 | 1. 预备了课前课,「元学习课」 211 | 212 | 我在开设全栈营前,有开设了一门「元学习课」,这门课是教导一般人怎么样正确学习以及自学。里面用了一些非编程的例子。展示了学习并不是我们之前想得那么困难。 213 | 214 | 学习之所以困难,是因为用错方法,学错观念。错误的观念比如是: 215 | 216 | * 学习如同登山,从基础学起 217 | * 学习要从理论学起,从实做学起是偷懒不扎实的 218 | * 学习要刻苦练习 219 | * 一般人是不可能真的学会编程这么难的技能 220 | 221 | 我用了一些手段让学生展示这些都是「错误」的江湖传说。只要用对方法,那些门槛瞬间就跨过去了。学习也可以很轻松有趣,并且充满激情。 222 | 223 | 设计这门编程课之所以辛苦。应该是没有一门学问的学生,90% 在学习之前会催眠自己一定学不会。 224 | 225 | 2. 预备了编程前导课 226 | 227 | 我们设计了一个编程前导课。让学生将环境先行建置起来。毕竟开学时就会直接教编程了。 228 | 229 | 因为装环境时,有一些软件需要翻墙下载。为了怕学生买到无效的科学上网软件。于是我们联系了可靠的软件厂商。一口气采购了五百套赠送给学生。保证一定翻得过。 230 | 231 | 另外,装环境时,最怕自己无法 debug。于是我们也组建了学习群与课前助教,如果真的遇到问题。会有排班助教帮忙排解,或者是可以在线下找到同城同学互相排解。 232 | 233 | 3. 特殊的上课时段 234 | 235 | 就我教过那么多届学生。我发现学生学不会最大的问题,在于没有机会进行练习。而没有机会进行练习的原因是因为不会安排时间。 236 | 237 | 与其他编程课习惯的开课时间(六、日)不一样。 238 | 239 | 我多年来坚持在周一开课。即便线下班也是周一的晚上六点半到九点半。 240 | 241 | 这样安排的好处在于,从这个礼拜一到下个礼拜一。学生至少有周间的晚上与周末两整天可以学习。我们在礼拜二礼拜四有助教举办的线下辅导聚会。如果真的不会写,可以带到课上写。 242 | 243 | 周末也有满满的时间可以练习。 244 | 245 | 但是如果学生选在周末时间上课的话,因为周间很忙,所以学生会给自己很多藉口,不练习。 246 | 247 | 那这样一点意义都没有了。 248 | 249 | 4. 特殊的课程格式 250 | 251 | 全栈营编程课的教材文本,与其他编程课是完全不一样的。我们是采用「纯文字」+ 「画面」。而其他编程课是采视频。 252 | 253 | 这一点非常特别。其实我们也可以选择使用视频,但是我们却选择了不用。 254 | 255 | 这是因为连我自己在上其他领域的视频课时,也觉得视频课上课非常麻烦。一方面,虽然觉得老师拍视频直播写代码,非常有诚意。但**学习时却是非常的麻烦。必须要不断的按暂停,一个字一个字跟著老师敲。而最讨厌的,甚至还是跟著打,还会打错字**。 256 | 257 | 要知道我在学另外一门学问,如 iOS 时,可能也是新手。有错误发生我根本也不懂 debug。 258 | 259 | 学习一节 10 分钟小小的内容。我可能也要花上 30-40 的分钟,还**搞的自己筋疲力竭,充满挫折感**。 260 | 261 | 所以,虽然「用文本上课」非常**政治不正确**。还会引来「让学生贴 code」的骂名。 262 | 263 | 但是我们还是会坚持这样让学生这样做。甚至我们会鼓励学生 a) 先照著 code 贴一遍 b ) 自己再跟著教材打一遍 c) 放掉教材自己打一遍 d) 如果三遍还不熟,就练五六遍。 264 | 265 | 目的就是要让学生搞明白流程,并且从贴代码改代码的流程中,有机会知道自己错在哪里。更重要的是,**走错路还能爬回来**。 266 | 267 | 此外。因为我们的「预编教材」是文字撰写的。所以如果遇到教材有错字 bug、流程上不顺,或者难度太高。我们更换教材的成本是很低的。 268 | 269 | 我们通常是周一晚上释放教材。有学生(大约 5% 的学生)在周二下午前就会写完,并且反馈回来。我们看到马上就会修改。到周二晚上时,bug 已经几乎不见。其馀 95 % 的学生根本不知道有 bug 曾经存在过。 270 | 271 | 但是如果是视频课程。这样做的难度就很大了。 272 | 273 | 5. 大量的助教 274 | 275 | 全栈营课上采取大量的助教助练。这些助教几乎都是我在业界的朋友以及过去的学生。而且是有薪任职。自学编程或远端学编程最大的难点,在于遇到问题时,没有人愿意「耐心」的听你「说完」,并「通灵」找到你现在遇到的 bug,「手把手」教你排除。 276 | 277 | 课上我们预备了两轮助教,基本上从下午 14:00 到 22:00,都可以找到助教帮忙排解问题。 278 | 279 | 此外,因为学编程时,大量的学生连「用正确格式」问问题都做不到。(如连错误画面都是截的小小一面,只说「发生了错误」,助教根本无法错误的通灵) 280 | 281 | 我们甚至还释出了「如何正确的问技术问题」指南。 282 | 283 | 284 | 6. 线下的 Meetup 285 | 286 | 全栈营在线下版时,有线下同城的 Meetup。这是因为我当时在台北也有 host 关于写 Rails 的聚会。所以我(付费)拜托一些同行与徒弟,帮忙辅导学生。鼓励学生带著作业,来 Meetup 写。 287 | 288 | 一方面强制让大家划出时间。有时间写作业,学习课程之外的小知识。 289 | 290 | 同时在这个 meetup ,我们也可以比较容易掌握到同学在学习上的进度。 291 | 292 | 而在线上版的时候,因为全国大约 500 名学生。我们鼓励同城的组成 Meetup。这样学习领先的可以带著学习落后的同学一起冲刺。 293 | 294 | 而且学生学习时较不会孤单。同时身为群主的同学,在一般同学学习遇到困难时,也会主动关怀,去把同学捞回来。降低很多半途放弃的概率。 295 | 296 | 297 | 7. 可「参考」的作业系统 298 | 299 | 全栈营的作业系统,是自己订制的。交完作业后,单章课程下会出现「自己的作业」以及「别人交的作业」。学生是可以参考同学的解答的。 300 | 301 | 这样设计的原因是因为我们上课不在乎学生有没有抄别人的作业。毕竟学习是为了自己的学习。作业是自己练习的成果。 302 | 303 | 我们的作业分。「基本题」与「加分题」。基本题是课上教的,加分题是要自己google尝试解出来的。 304 | 305 | 如果真的题目做不出来,有时候看别人与自己的作业结果,更能比较出解题的差异。学到更多课堂外没有的知识。 306 | -------------------------------------------------------------------------------- /10.md: -------------------------------------------------------------------------------- 1 | # 第十章 课程设计实战(二) 2 | 3 | ## 如何侦测学生学习进度并及时修正 4 | 5 | 既然是要提高留存率。那我们除了帮学生克服挫折之外。更需要的手段是,侦测学生如何不见的。 6 | 7 | 是的。学生不见的原因千奇百怪。有的是生病了。有的是公司忙。有的是觉得学不会。有的是某关被卡住之后,自暴自弃。。。。 8 | 9 | 所以我们巧妙的在这个课程巧妙了插入了很多「侦察点」。 10 | 11 | 1. 进度系统 12 | 13 | 学生的交作业系统。本身就是一个进度系统。作业系统的设计,有几个好处: 14 | 15 | * 交作业时,可以同时参考别人的解答 16 | * 采用进度设计,学生有「强迫填满进度」的底层冲动。 17 | * 学生能够「具体」的察觉到自己的累积变化 18 | 19 | 我们作为课程设计方。也可以知道每次课程的 20 | 21 | * 点开率 22 | * 完成率 23 | * 卡关点 24 | 25 | 的实际情形。 26 | 27 | 28 | ![图片](images/VFapCrKsp84IRsEW.png) 29 | 30 | 2. 崩溃系统 31 | 32 | 全栈营除了课程颗粒切的细外,每一个课程章节,下面都有难易度的打分。学生可以选择 33 | 34 | * So easy 35 | * 还 OK 36 | * 崩溃了 37 | 38 | 39 | ![图片](images/rpNVBIGj45aLQin0.png) 40 | 41 | 如果学生觉得「崩溃了」,按「崩溃了」的按钮,我们会让同学填具体原因。(也就是可以选择回报 bug 或直接骂老师教太难了) 42 | 43 | ![图片](images/XSiQLvwsiOQUluQ7.png) 44 | 45 | 在每一门课程后面的后台。每一节,我们都是有打分的 46 | 47 | ![图片](images/OsA9V0IGwIQsv8oX.png) 48 | 49 | 一般来说。绿色进度条(表示还 OK)的,必须要超过 60%。如果黄色与红色的进度条太红,我们会立刻检讨课程难易度。「太难」在内部也会被视为一个 Bug。 50 | 51 | 比如说。我们内部曾经有一次邀请新的老师帮我们写教材。他一直觉得我们内部课程,写得太简单了。一直想要重构我们的核心基础教材。但是我们团队成员死都不愿意让他改。 52 | 53 | 只愿意让这位老师做新的小课。 54 | 55 | 而这个课程一上,**后台的数据马上让这位新老师理解,为什么我们不让他改教材。(满江黄,满江红,学生后台一片崩溃)** 56 | 57 | ![图片](images/VCQOJ9UaujR7AL5s.png) 58 | 59 | 很多教编程的老师,常常在写教材不自觉得越写越深,刻意采取漂亮的写法,而不是容易理解的写法,为的是学生知道自己牛逼。或者加了很多「加了以后会让同行看到课纲觉得他有水准,但实际上学生会崩溃」的教材。反而**把学生信心刁到不见**了。 60 | 61 | 我们这个作法。实际上是要将教材水平与挑战难,**刻意将难度控制在一定的范围内**。 62 | 63 | 3. 学习日记 64 | 65 | 在我们的学习开头。我们要求同学每周作业,必须都要交上两样东西: 66 | 67 | * 学习的「报错记录」:如果遇到 bug 了。解开了以后,不仅要记录,还要整理成解法,发表出来。 68 | * 学习的「觉察记录」:记录自己本周学习了什么。感受到了什么学习变化。主要不是写给老师看的,而是写给自己看的。也是需要公开发表。 69 | 70 | ![图片](images/z8XpuLRMOWlGpdF2.png) 71 | 72 | #### 为什么要记录错误讯息? 73 | 74 | 这个作业是我们课程特有的设计。基本上从我十年前训练徒弟时,我就这么要求徒弟了。包括我自己在写代码时,在任务系统上也会习惯性这么做。 75 | 76 | 我的理论是,大家都会倾向去记录自己「做过的正确的事」,而倾向不去「记录自己做错的事」。当然,更多的选择是,什么也不记。 77 | 78 | 但是都不记得结果,就是最后什么也不记得。 79 | 80 | 很多人写代码的水平,老是停留在原地,而且老犯基本错误,就是因为他基本上什么都不记。 81 | 82 | 所以每次开发遇上同样的问题,都要花上时间重复 google 同样的问题。如此一来,水平根本不可能提升。 83 | 84 | 要知道「遇到错误」,换个角度,也是学到新东西。再来,遇到问题立刻纪录,通常有很大概率永远记住。如此一来,才会有机会往前。 85 | 86 | 所以我们会要求同学,每周在写作业时,一定要交这一篇。 87 | 88 | #### 为什么要写学习日记? 89 | 90 | ORID 是一种特殊的记事法。 91 | 92 | >Objective 93 | >关于今天的课程, 你记得什么? 94 | >完成了什么? 95 | >Reflective 96 | >你要如何形容今天的情绪 97 | >今天的高峰是什么? 98 | >今天的低点是什么? 99 | >Interpretive 100 | >我们今天学到了什么? 101 | >今天一个重要的领悟是什么? 102 | >Decisional 103 | >我们会如何用一句话形容今天的工作 104 | >有哪些工作需要明天继续努力? 105 | 106 | 我们在学习编程时,坦白说,不可能多半都是愉悦的记忆。更多的是挑战的记忆,失败的「感觉」。 107 | 108 | 但「失败的感觉」不往往是真实的。 109 | 110 | 一般人在学习编程时,最大的问题就是会将「编译器显示」的「错误讯息」归为他个人的「失败」。以为自己学习能力真不行。 111 | 112 | 但是「编译器显示的错误讯息」只是反应代码输入的正确与错误,并没有其他意涵。而且,不只是新手,高手在写代码时,一天到晚也再打错字,而工程师通常会很正常的只将「编译器错误讯息」当成是一种「无机的反馈」。 113 | 114 | 透过这种学习日记的写作。能够协助学习者,把真正发生的事、自己的感觉,实际的进步,完全分开来。 115 | 116 | 同时,透过每一周的写作。写作者能够清楚的察觉自己的变化。很多学生写著写著,本来觉得学编程很痛苦。过了三周以后,本来有点想放弃了。结果回看日记,却发现自己有了非常大的进步。反而给了自己很大的信心。都走了这么远,远超过自己的想像,干嘛放弃。 117 | 118 | 而作为教师的我们。透过每周的同学日记,也能发现同学集体会在那边沉船,即时做出修正。 119 | 120 | 4. 每周两次直播 121 | 122 | 全栈营也是有影音课的,只不过不是放在教材里面。而是直播的录相。因为我们利用前面三个工具。每次一放作业时,我们就可以即时收到海量的反馈。不管是作业进度、崩溃系统的「吐槽」、学习日记记录的「错误」以及「觉察」。 123 | 124 | 我们大概会知道每一周同学「心境」与「技能」上的变化与「挫折」。 125 | 126 | 所以我们一周会有两个直播。周一的直播是我关于学习方法上的传授,拉「心态上」崩溃的同学。周四的直播,是助教解答每周的加分题、卡关点。 127 | 128 | 同学们往往会觉得「直播」好像有如及时雨,原本都觉得自己学习要沉船了。然后听完直播又被拉回来。 129 | 130 | 全栈营的课程理念很不一样。我们不喜欢影音课。因为影音课是需要学生耗费精力,truly engaged 去吸收的体裁。 131 | 132 | 我们认为非有必要让学生来互动才会用这种体裁(直播)。 133 | 134 | (特别是做影音课,一天学生只能看1-2小时,而且多半看不完,再长也受不了。) 135 | 136 | 如果课程内容用音频、文本、视频就能办到的,我们会倾向就用这种体裁。这样学生才能够按照自己的节奏(5-10 分钟一小节)步调学习。 137 | -------------------------------------------------------------------------------- /11.md: -------------------------------------------------------------------------------- 1 | # 第十一章 课程设计实战(三) 2 | 3 | ## 核心课程设计 4 | 5 | ### 跑得通的课程 6 | 7 | 全栈营的核心课程,基本有两块。一块是 "Job Listing" 招聘网、一块是 "JDStore" 商店网站。 8 | 9 | 前者是我 2010 年为了训练徒弟,写的一份教材。因为当时我会的技术 Ruby on Rails,在全球来说还是新技术。基本上在台湾不太可能找到有一定基础的同事。所以基本上新程序员都是 inhouse 培训。 10 | 11 | 然而让同事自学进度实在太慢了。当时我 2006 自学到写 Job Listing 的程度。是断断续续看书练了快一年才有那样的程度。 各种环境建置上的问题,程式语言版本的问题,第三方套件的问题,整的我痛苦不堪。 12 | 13 | 我不可能每招一个人,都得让他慢慢这样练。所以我当时就设计了一套题,有七道循序渐进的题。规定新上岗的同事,每天来公司,不需要先工作,先把当天习题解完。基本上把这份题目练完,后续也能根据我交办的公司任务,慢慢懂如何设计新功能。 14 | 15 | 这套题目经过多代徒弟打磨,写解答与编修。最终变成一本书 Rails 101。有基础编程知识的新手拿到,把这套题写完,基本上就能上手开发。做可以自己装环境,写简单功能,并且将自己做出来的东西部署到服务器上。 16 | 17 | 到了 2013 年,当时我正在创业。公司是做的接案公司。公司也需要招新程序员。公司同时要接很多案子。以前我在公司带徒弟时,通常是让他做 Rails 101。然后我再按照公司实际进度,把任务分好,让徒弟从做中学。 18 | 19 | 然而到了 2013 这种模式无以为继。案子那么多,我不可能每个案子都这样教。于是这时候我设计了另外一套题。我观察到客户委托的以电商网站居多。所以我设计了另外一个大套 inhouse 课程。练完可以按部就班的做出一套电商网站。这套教材涵盖了几乎中阶程序员所知道的所有技巧。 20 | 21 | 后来,我在 2015 年出来教书时,主要也是教的这两套题。 22 | 23 | 这两套题在公司时,因为给很多人测过。所以第一套大约学1周就能学会。第二套学4周能学会。所以整套是跑得通的。 24 | 25 | 学会的速度差别在于是一般无基础的人,还是有点背景懂基本 debug 的资讯背景学生。 26 | 27 | 这就是为什么我在本书一开头说。搬上线的课程,一定要线下跑通过。因为线下反应很即时,可以即时改版。**如果是一套没有跑通的教材。基本上很难做到顺序调整,以及难度调整**。 28 | 29 | ### 拆细以及前后衔接 30 | 31 | 基于这两套教材。我们发现对「有点背景懂基本 debug 的资讯背景学生」没什么问题。「一般人」还是有点挑战。 32 | 33 | 于是我们基于这两套课程去设计前导课程。如何降低没接触编程的人的恐惧与惊慌。把负反馈想办法转成「正反馈」。 34 | 35 | 并且控制难度,不要一次变太大。尽量让学生是基于上次的小挑战循环,加上一些新的东西,变成新的大挑战循环。 36 | 37 | 这是为什么我说要先挑出「小魔王」与「大魔王」的缘故。 38 | 39 | 而不是一路用教材带完「老师自己觉得需要教的东西」。人学东西需要「待在舒适圈」里面,而不是被带著一路狂飙不知道要去哪里。 40 | 41 | 一旦学习有目标,看得到自己的变化,而且始终在熟悉的环境里,学生就比较愿意留在这个环境里循环挑战自己,重复刷成就感。 42 | 43 | 比如说我们就设计了前导课「元学习课」,降低学生恐惧,增强学生学习的信心。 44 | 45 | 也设计了衔接的两次大赛。原先在线下版是没有大赛,而是要求职的同学,必须要基于这两个课程改成自己客制版本的网站。但学生缺乏动力。 46 | 47 | 所以在线上版,我重新学了动力理论。发现比赛,可以同时把多种强大的动力包进去,甚至用奖品、好胜心、虚荣心,把学生拎过那道它们原本以为很高的门槛。 48 | 49 | ### 使用产品团队思维作教育 50 | 51 | 我们做这个营队的思维这么特别。主要是因为我的主行业其实是打造互联网产品,专长是设计互联网产品体验。但没想到做互联网产品没赚到什么钱,当年辞职从美国回来,本来想休息几个月游山玩水。 52 | 53 | 却被朋友凹出山,教人编程,却真正赚到了第一桶金。(要知道,业界编程大师根本不愿意出来教书。很怕被说混不下去才出来教书。我当初出来教书,纯粹只是是想要做产品增长黑客实验。找不到标的。只好拿自己开好玩的课程来练。) 54 | 55 | 我本来是不懂教书的。只懂训练徒弟。后来开了一些公开课后,也教出兴趣来。后续甚至也拜了一些教学上的大师认真学习教学技巧,如谢文宪、王永福、林明樟、Bob Pike、Becky Pike 等等。。。。学会了基本的课程开场结构、动力掌握,课程的分镜技巧。 56 | 57 | 后来我在教课时,发现不管是什么格式或老师,教育这行业在沈船率上始终太高。 58 | 59 | 于是我就在琢磨是不是可以把互联网的「转换率提升」的概念,平移到教育课程上。 60 | 61 | 把「进度监测」移植到网路课程上。去研究人类在学习上的「吸收率」。去研究人类在面临挑战时的心态变化。 62 | 63 | 以往这些在教育上被认为都是无解的。我以做互联网产品的心态,一格一格放大去拆解。 64 | 65 | 传统教育非常奇怪。老师、教法、课程难度结构、效果基本上是不能被质疑的。我以前当学生时,常常一直在想到底问题到底在哪。为什么老师教我,我常常学不会,上课也常常睡著。但是自学时,我却常常玩得不逸乐呼。 66 | 67 | 所以我想要从自己的课里面开始拆。 68 | 69 | 很多读者会觉得我在这个课程里面用的某些技术非常高超。其实那都是最终结果。比如说作业进度系统。一开始我只是拿一个表单让学生每周交作业。但是学生爱交不交。 70 | 71 | 所以我在开了几次课之后,自费花了 60 万台币,请朋友写了个交作业系统。(不是我写不来,而是在教书赚钱没空写。) 72 | 73 | 后来在做全栈营时,再基于这个交作业系统,改版成有课程、有进度追踪、有崩溃系统。其实原本在线下,这些都是用助教人力追踪的。 74 | 75 | 只是在做线上版的时候,我一直想要挑战做大场的训练营。我一直在思考,线上教育的门槛在那里。为什么学成率会这么低。 76 | 77 | 做下去才发现,原来线上教育 1.0 版的体裁,根本没有修正线下教育的问题。而且反而把缺点放得更大。(诸如难以集中注意力,内容更难让人忍受,学生与老师的互动越远) 78 | 79 | 那么我就想,那我是不是基于做产品的原理,可以去做一套修掉这种体验的教育机制呢。 80 | 81 | 所以我才会设计出一些反传统的机制。如**文字版的编程教学,回圈教学肌肉练习的课程挑战**。 82 | 83 | 这些反传统的设计。是为了「达到更好的学习效果」,「够节省学生练习的时间」,「有更好的记忆效果」 84 | 85 | 我去研读了非常多人类认知心理学上的研究,以及游戏的动力机制。尝试去把每一段的学成率做显著的拉升。 86 | 87 | 可以说这是教育版的增长黑客实验也不为过。 88 | 89 | ### 基于认知心理以及核心动力去设计课程 90 | 91 | 将课程拆细并且一步一步调整以后。我才发现原先的教育 1.0 是非常有问题的。 92 | 93 | 上学非常无聊。是因为 90% 的学校教育与课堂,往往是讲述法,这是老师授课最方便,但是学生上起来最痛苦,同时学习效果最差的一种方式。 94 | 95 | 不有趣以及难以吸收(听完就忘记)的体裁,任谁都会觉得学习是一件痛苦的事。 96 | 97 | 再来,一般的课程设计,并没有明确的教学目标设计,也就是老师是基于自己会什么就去教什么。而不是实际设定并测试过,学生学完这门课程会实际变成什么样的人。自然学生在学习时越来越迷惘,甚至开始怀疑起自己。 98 | 99 | 在这个过程中,既学不到东西,又没有目标,写作业又缺乏正反馈。自然没有人愿意学下去。 100 | 101 | 为什么游戏那么令人著迷呢?这是因为在游戏里面,一切都与「教育 1.0」都是反的。游戏有著清晰的目标,在游戏里面不管做什么动作都是有清楚的反馈。可以看到自己的成长,并且还有现实中没有的奖励系统。 102 | 103 | 很多人在现实学习成绩不怎样,在线上大逃杀游戏里面可是各种改装、闪躲、压枪、狙击技巧,出神入化。可见根本不是学习能力问题。 104 | 105 | 而是学习的体裁、设计、传授方式出了很大的问题。 106 | 107 | 很多人以为将教育游戏化,是照搬游戏里面的元素,诸如点数、徽章、排行榜。这是只见其表。一切的根基在于「目标」、「学习体裁」、「反馈机制」、「动力机制」、「奖励机制」。 108 | 109 | ### 换个动力方向、教育成果就会很不一样 110 | 111 | 我在网上拆解游戏行业的 Youtube 频道 Extra Credits 的 Gamifying Education - How to Make Your Classroom Truly Engaging - Extra Credits 就见到一个很棒的例子。 112 | 113 | 这集里面举了一个教育改革的实验方向。大意上是现今的教育评分方向是有问题的。目前教育的方向评分是 A, B, C , D, E。 114 | 115 | 这样的初始设定是假设学生初始的成绩是 A+。学生做任何挑战尝试都会「遭到减分」。学生预设自己一定要是 A 。于是很多人在学习时充满压力。因为只要稍微做点不一样的挑战,就是负分。不论作再多尝试,也可能得不到 A。却忽略了得 A 本来就可能是一个很难的目标。 116 | 117 | 导致学生直接不愿意学习。或者是避免多次挑战。毕竟谁愿意自己找罪受。 118 | 119 | 片中提了一个崭新的观点。片中提议老师可以把习题改为分数累积制。比如说 1000 分是 LV1,2000 分是 Lv2,3000 是 LV3。 120 | 121 | 这样老师也不太必去改学生的评分机制。只是把打分(Grading)机制换个方向而已。LV3 其实是原先的 A。但是学生却愿意多去做题答到 A。 122 | 123 | 又比如说将学生分组,如果全组都完成作业,全组都能加个几百分。那么整组就不会像以前一样不教同组同学,为了拿 A,B,C 战得你死我活。而是会尽力去帮落下的同学,毕竟全组都跟上,自己的分数还能再多加几分。 124 | 125 | 可见只是设计结构上的问题。 126 | 127 | 所谓的教育 2.0 不是打掉重练。更多的是改方向,改动力机制,改传授机制而已。甚至有的改动还会让老师更加的轻松。 128 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | commit: 2 | git add .; git commit -m "update" 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 高留存课堂實戰 2 | 3 | * [第一章 高留存课堂的秘密](01.md) 4 | * [第二章 高留存课堂始于高动机](02.md) 5 | * [第三章 高留存课堂的结构设计(一)](03.md) 6 | * [第四章 高留存课堂的结构设计(二)](04.md) 7 | * [第五章 高留存课堂的结构设计(三)](05.md) 8 | * [第六章 高留存课堂的留存框架](06.md) 9 | * [第七章 高留存课堂的关键 -- 心流与上瘾](07.md) 10 | * [第八章 人类动力机制](08.md) 11 | * [第九章 课程设计实战(一)](09.md) 12 | * [第十章 课程设计实战(二)](10.md) 13 | * [第十一章 课程设计实战(三)](11.md) 14 | -------------------------------------------------------------------------------- /images/0pJGJ7qBMF4gCGLn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/0pJGJ7qBMF4gCGLn.png -------------------------------------------------------------------------------- /images/10zZ6Nhlc5BU1jSe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/10zZ6Nhlc5BU1jSe.png -------------------------------------------------------------------------------- /images/1fKaodeuYHe4QCRO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/1fKaodeuYHe4QCRO.png -------------------------------------------------------------------------------- /images/2Cd8XqY6KhBObysb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/2Cd8XqY6KhBObysb.png -------------------------------------------------------------------------------- /images/34sUiuod4erqzMwA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/34sUiuod4erqzMwA.png -------------------------------------------------------------------------------- /images/FO4F2io4CNCQJJme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/FO4F2io4CNCQJJme.png -------------------------------------------------------------------------------- /images/FWYtIjtGh7jGMbGL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/FWYtIjtGh7jGMbGL.png -------------------------------------------------------------------------------- /images/GK5jHHHiWGmDfFSN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/GK5jHHHiWGmDfFSN.png -------------------------------------------------------------------------------- /images/MyZyua6KXcJGlxub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/MyZyua6KXcJGlxub.png -------------------------------------------------------------------------------- /images/OsA9V0IGwIQsv8oX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/OsA9V0IGwIQsv8oX.png -------------------------------------------------------------------------------- /images/RxH9NkoS5CaInxKt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/RxH9NkoS5CaInxKt.png -------------------------------------------------------------------------------- /images/VCQOJ9UaujR7AL5s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/VCQOJ9UaujR7AL5s.png -------------------------------------------------------------------------------- /images/VFapCrKsp84IRsEW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/VFapCrKsp84IRsEW.png -------------------------------------------------------------------------------- /images/Wm4fhjXS5y61bV6f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/Wm4fhjXS5y61bV6f.png -------------------------------------------------------------------------------- /images/XSiQLvwsiOQUluQ7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/XSiQLvwsiOQUluQ7.png -------------------------------------------------------------------------------- /images/ahRkZSDhxAiplmS7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/ahRkZSDhxAiplmS7.png -------------------------------------------------------------------------------- /images/fUGOjwCOQLKdtv8B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/fUGOjwCOQLKdtv8B.png -------------------------------------------------------------------------------- /images/fZusmtVPfL5pX7JO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/fZusmtVPfL5pX7JO.png -------------------------------------------------------------------------------- /images/kxtw0lPI6PMbzlX6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/kxtw0lPI6PMbzlX6.png -------------------------------------------------------------------------------- /images/r6IUxxpQ4NXWIPtg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/r6IUxxpQ4NXWIPtg.png -------------------------------------------------------------------------------- /images/rpNVBIGj45aLQin0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/rpNVBIGj45aLQin0.png -------------------------------------------------------------------------------- /images/z8XpuLRMOWlGpdF2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdite/high-retention-class/7d308b0de66e0b1a860c6db48a481e572dfdeba5/images/z8XpuLRMOWlGpdF2.png -------------------------------------------------------------------------------- /replace_image.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'uri' 4 | file_names = Dir['*.md'] 5 | 6 | file_names.each do |file_name| 7 | text = File.read(file_name) 8 | # new_contents = text.gsub(/```\n\n\n\!\[\]\(.+\)/, "```") 9 | new_contents = text 10 | 11 | regex = /^.+\/[\w:]+\.(jpe?g|png|gif)/i 12 | 13 | url_regex = /https?:\/\/[\S]+\)/ 14 | 15 | results = text.scan(url_regex).map { |m| m.gsub!("g)","g")} 16 | results.each do |image_url| 17 | 18 | if image_url 19 | image_name = image_url.match( /[-_\w:]+\.(jpe?g|png|gif)$/i ) 20 | puts image_url 21 | puts image_name 22 | puts "wget #{image_url} -O images/#{image_name}" 23 | system "wget #{image_url} -O images/#{image_name}" 24 | 25 | new_contents.gsub!(image_url, "images/#{image_name}") 26 | 27 | end 28 | end 29 | 30 | # new_contents = text.gsub(regex, '**\1** ') 31 | 32 | # new_contents = text.gsub(/。\*\* / , "。**") 33 | 34 | # new_contents = text.gsub(/\n