7 days ago

今天来谈谈我如何看这个疯狂的 ICO 世界。(在小密圈里面回太多问题,干脆直接整理一篇。。。。请自己神小密圈位址,入群很贵,因为是拿来筛选朋友的。里面讨论的是货币价值以及技术价值。炒币的你可能会失望。)

基础定义

我先讲这篇文章的几个创业世界基本前提定义:

  1. 一个正常的硅谷创业公司。运气好非常好五年可以退出。这是1% 的情况。2-3% 可以 IPO。其馀的大概90%死在 seed round 与 A round。
  2. 传统天使投资人获利的方式,假设是他在种子轮投了100万人民币占10%股份,经过三四年,经过不断的接盘侠 VC,融到了 C 轮,D轮,市值变成了10个亿。那么他当初的100万就变成了1亿。
  3. 公开发行(IPO)让大众去买股票,可能 10 个亿又变成了 40 个亿。

这是一个创业公司从创始 IPO 的过程。事实上从公司创立到 IPO,平均要花 9.5 年。最少也要 5-7 年以上时间。

为什么要讲这件事情呢?这是要让大家了解这个世界构成的基本定义。这样你就会知道对比 ICO,哪些是合理的现象,哪些是不合理的?

为什么 ICO 使人疯狂

那么 ICO 目前大家是在 High 什么呢?基本上,如果一档靠谱的币,从众筹到上市应用。大概是 1-2 年的时间。「货币价值」的涨幅,因为最近暴涨的牛市。估计是几十倍。所以早期币圈的人,赚了非常多钱。

牛市的原因有很多,但最主要的原因还是因为比特币在真实世界中,货币价值逐渐获得认可,比特币涨,带动了以比特币众筹的项目上涨。以比特币众筹的项目上涨,带动了 ICO 的高潮。ICO 的高潮带动了 ETH 的高潮。ETH 的高潮,带动了更多 ICO 的高潮。

所以现在大家陷入一个 ICO 的高潮派对上。

如何挑选优质靠谱的区块链技术

因为 ICO 比 IPO 赚得快太多了阿。就算有优质美股可以买,大家也觉得这件事太慢了.....

所以下一个问题就来了,如何挑选出优质的区块链技术,搭上狂潮。

继续谈这个话题之前,我还是要回到之前我不断反覆的重复讲的,投资区块链技术,你得看两个东西,一个是「货币价值」,一个是「作为一款产品的衍生价值」。

这两个在疯狂的牛市当中,目前是脱勾的。

  1. 货币价值是他是否可以真正来当货币使用。(比如说 BitCoin 与 ETH)(前者被视为数位黄金,后者近期被视为众筹用货币)或者是某些小币,最近作为搬砖用货币。
  2. 衍生价值。该技术是否未来会被真实世界商用化。以及在商用化的过程中取得利润并作为分红。

如果你看货币价值。这个是在当前 1-2 年的世界可以被实现暴涨的。

但是如果是衍生价值的话。这件事情其实跟传统世界没两样。一个公司要实现营利并且分红。需要几年的等待是跑不掉的。而且这个前提还是要「该产品被广泛」的被大众接受并且使用。

如何验证一套区块链技术是否靠谱

那么,我们如何验证一套区块链是否靠普。其实有一个破除迷思的方式。

区块链是一套帐本技术,作为分布式传输,存储,以及验证。如果你把这件事抽掉,把它当成「能确保数据正确且能分布式通讯」的「数据库」来看。

瞬间很多项目的白皮书,就没有那么「性感」。

在这里我们先不论,这些区块链技术团队有没有实现的可能性。(先假设都有)

这些项目瞬间的价值,我们就可以拿硅谷创业团队的标准来看。很多产品是连 seed fund 都拿不到的。因为从商业价值上根本通过不了传统 VC 的衡量标准。

就算拿到 seed fund 好了。估计也了不起是最多 250 万美金。(seed fund 高标,再高不可能,募不到下一轮)

而许多 ICO 产品,是一次把从 seed fund 到 IPO 的钱足足拿了。(一次拿到1亿多美金)。那么这个项目之后要靠什么来涨呢?再来,哪些其实是本早该被物竞天择掉?ICO 却给它们了不正常的市值。

如何看待区块链技术的价值

再来,区块链技术分为基础链以及应用链。

基础链以及应用链,目前我还是比较看好基础链的。基础链有比较大的空间变成货币本身。或者是在该链上有极大的应用,导致价值上涨。

但是应用链类,我并不太看好。只能说可能是 80% 以上我都不太看好。

很多人会陷入 ICO 牛逼的迷思在于:

  1. 涨得快
  2. 将来他会改变世界
  3. 被改变的世界目前在旧世界里有相当大的市值。

改变未来与经营事业

这里我相当推荐 YCombinator 的 CS183F 这套教材。里面有两个主题相当有意思。一个是在讲 MVP,一个是在讲如何发明未来。https://www.gitbook.com/book/xdite/cs183f/details

为什么我不太看好应用链在于:

这世界多的是有牛逼技术的公司,但是「没有解决任何人」的问题。最后倒掉的。

攻占市场,不如大家想像的这么简单。创业产品能不能成功。很大一部分在于「它有没有解决市场痛点」。接著第二部分是,如果有的话,他如何侵占现有市场份额。

第一部分:攻占市场

决定一个初创企业能不能长大,并不在于它是不是手上握有「牛逼」的技术。而是不是它能够解决一小部分人的需求,先是细分垄断,接著是垄断下一级的市场,接著是下一级。

(有兴趣的话,你可以看李开复的细分垄断这本书,讲得很精彩。我的公众号也有这本书的读后心得)

第二部分:侵占市场份额

侵占市场分为两个方向。

  1. 旧有的科技无法满足现有需求。
  2. 改变用户的习惯。

我并不觉得在现在的市场上,某些旧有的科技无法满足现有需求。有些技术应该瞄向的是更未来的世界。也许在某一天,该技术的成长刚好到达这个爆发点。

再来是改变用户习惯。好好的,用户为什么要抛弃旧有的技术呢?No Reason!! 如果你是创办人,或者投资者,当然会心里想我的科技最牛逼,推出以后大家一定会来用我的。

但是使用者呢?我好好的干嘛要搬家?企业好好的内部应用,我干嘛要搬家。

如果你要改变一个用户的习惯。我转贴我以前写过的一篇文章内文:

很多现有产品已经具备高度成瘾性,那么你如何设计产品,去让消费者对旧产品脱瘾,转投你的怀抱。

他提了可以去思考的四个方向:

  • 速度: Velocity。让止痒速度比竞争对手更快,比如 Netflix V.S. Blockbuster
  • 频率: Frequency。Amazon 的竞争对手不是其他百货类电商。而是更简单更容易下单的单一品类服务。所以他们才推了 Dash 或者是 Echo 去防御。让使用者非常简便的可以下单,就可以提高下单频率。
  • 奖赏: Reward。为什么 Facebook 惧怕 Snapchat?事实上是 Snapchat 的「社交奖赏」远大于 Facebook,想想你的朋友会在 Snapchat 会传什么给你?不就是八卦,抱怨,咸湿内容吗?这可比 Facebook 上的正面能量美味太多了!
  • Easy Entry:为什么 Google Docs 可以逐渐侵蚀掉 Microsoft Word 的使用频率。因为 Google Docs 的取得与使用门槛比套装软体低太多了。

目前哪些区块链应用。可以从这四大点进入呢?我想是很少的。

最终投资原则

所以讲到最后。要如何去评断一个 ICO 项目是否靠谱呢?我觉得还是要回到笑来老师的那篇原则:

https://github.com/xiaolai/INB-Principles/blob/master/Chinese.md

9 原则

有时候,阐述原则远不如问一些简单却又准确的问题来得容易。通过不断挣扎着为那些恰当的问题寻找绝对的答案,我们就自然而然地遵守了那些原则。以下是一些我们在决定是否投资之前反复深入向自己提问的问题:

  • 这世界真的需要这东西吗?
  • 它解决了什么原本没有被解决的问题?
  • 去中心化在这件事儿上真的必要吗?
  • 它真的必须账务公开吗?
  • 账务公开的存在真的会提高它的效率吗?
  • 它在多大程度上更接近一个 DAC (Decentralized autonomous corporation, 去中心化自治公司)?
  • 如果我们决定投资,那么我们应该用我们资金的多大比例去投资?

就这些了。最简单的问题需要最艰难的思考才能找到更准确更实在的答案。

喜欢此篇文章的话请不吝打赏

如果这篇文章对你有用的话,请不吝打赏,谢谢!

 
23 days ago

这是今天 2017/06/01 的直播问卷。直播前一个小时才开放填写的。没想到收到这么多震撼的答案(94份)。觉得挺值得纪念的。看了眼眶都有点红。

Gist 备份在这里

----- 文长警告 -----

参与全栈学习这么久,你觉得自己和之前最大的不同是?

对编程有了系统的概念,之前总是从入门到放弃,这次终于自己能够做出完整的作品,对于自己学习其它技能的自信心也大大增强了,自己的小创意有了实现的能力,对于编程的越来越有热情。

关于全栈,之前一直觉得自己很全能,什么都会一点,但是在参加 jdstore 比赛的时候发现,一个人的时间是非常有限的,和他人配合能够大大的提高效率,大家一起做才能够在有限的时间内完成理想中的工作量,所以自己会做是一方面,懂得和人配合,团队之间的沟通也非常重要。

Read on →
 
about 1 month ago

今天(2017/05/12) 买到的这本神书叫做「创业就是要细分垄断」。是李开复,傅盛,汪华一起写的。

上个月底在京东看到预售,就下了。这两个礼拜一直在刷订单页面希望发货。今天一到货就迫不及待裁了他。之所以会想要看这本书的原因,是一直以来我就是 Peter Thiel 从 0 ->1,从小市场垄断理论的信徒。

其实这次我这间公司也是这么做起来的。

但我知道的方法论也有这两句而已。

所以当这本书的目录,揭示了几乎我想要的所有答案时,我的兴奋自然不可言语。

甚至我认为这本书可能是2017年创业圈中,最重要的一本书。

今天拿到这本书,果然没让我失望。以下分享我在这本书里面得到的创业心得。

互联网创业,谈的就是「垄断」

这本书开宗明义就是在讲「互联网创业」谈的就是「垄断」。如果你不信这套,几乎上建议你还是不要继续看下去了。

为什么要追求垄断呢?

  • 第一,垄断者可以拿到市场上所有的份额
  • 第二,追求垄断心态,可以把创业者自身逼到极限
  • 第三,从小市场先垄断,非常容易开局。

创业投的就是「机」

那么,创业者要如何开局呢?作者认为多数创业者本身都有一个很严重的「谦虚」病,那就是觉得自己在干的事,是「投机」的,因为「投机」,社会观感不好,就畏手畏脚的。

这反而是错的。

要知道创业就是要投「机」,就是在时间窗口中,找到一闪即逝的「社会需求变化」。所以投「机」,并没有什么不对的。你反而要时时记得这一点。「机不可失」。

找「只差最后一里路」的题目

然而,这个世界是高度叠代的,社会上有很多「需求变化」。怎么知道什么题目是适合创业的。一个特征就是「这件事只差最后一里路」。

你有一个对社会的痛点解法,很好。

但是如果你要花太多资源去教育市场,那么这也许就不是你该选择的方向。

别搞错,微信的确推广普及了二维码,但微信有资本有团队。一般创业团队没有那么多资源,所以你只能挑「只差最后一理路」的题目去做?

开局:找自己擅长且可以察觉市场变化的题目

再来,要能够抓到这个「社会需求变化」的局,创业者需要三点特质:

  1. 你必须要对这件事情熟练
  2. 你能察觉到市场上变化
  3. 强大的执行力

许多创业书,不断的反覆提,创业不要作「自己不熟」的领域。因为你不熟,你就会耗掉很多时间,你就无法察觉到市场上的变化。而且在这个市场上,即便你占了先机,也会被其他更强大的公司灭掉。

你的最终目的是 1 -> N

要从细分市场开局,甚至垄断。实际上是为了打造能够运作这个市场的团队与模式。在时机成熟时,一口气放射到下一个连结市场去。

当然,有人听到细分市场。就会觉得,好,细分市场我也找得到,我也钻进去。但下面就紧跟来一个误区,你的细分市场有没有「下一级的连结市场」。有时候你可能垄断了一个细分市场,但这个细分市场没有下一级市场。所以你的垄断之路也到这里停了。

不过也不必感到沮丧。毕竟有 99% 的细分市场,是没有下一级的连结市场的。所以你要记得,创业是得先从 0->1 开局,但你真正瞄准的是后面 1-99 的那个世界。

下一个主题就是。那么垄断产品的市场要从哪里找呢?你可以瞄准以下特征的市场:

  1. 这个问题很大。(在社会上很多人被影响)
  2. 市场上的需求没被满足,供给根本根不上
  3. 原先做这件事情的成本很高

一旦你做出这类市场的产品,就有可能得到高增长。

A 轮死特征:太重,太复杂,无法复制扩展

不过,有一些公司,创业找到了好的 Idea,到最后还是 A 轮死呢?

这是因为它们陷入了过度资本注入的后遗症,比如:

  1. 无意义的叠代。创业的确要不断的叠代产品,但叠代是为了让你进化更快。如果没有进化的更快,则这个叠代一点意义都没用。
  2. 无意义的营业额增长。比如说你的餐厅营业额没有提升,在股东的压力下,你多卖了早餐,晚餐,下午茶。表面上你的营业额提升了。但事实上你的公司并没有在「增长」。
  3. 无意义的追求卓越。创业者都想追求卓越,无可厚非。但是越来越复杂的产品,会造成无法复制与量产。 而这三件事情最要命的是,它让你的公司变得「更重」了。

垄断产品:极简,差异化,自增长

垄断产品的特征是:极简,差异化,自增长。

这其实也说明了创业的方向:你得更轻,更快,更病毒,更能解痛。

市面上能够垄断的互联网独角兽产品,没有一套不是这样的发展途径的。

 
2 months ago

前几天在旧金山参加 HabitSummit,一个探讨如何设计人类习惯的行为学研讨会。干货蛮多的,其实第一天就蛮值回票价了。

为什么要研究「上瘾」这个题目

在个人成长主题方面,我发现现在许多学习成长社群不停的在强调「坚持」这个概念。但就我深入研究这个议题之后,我认为利用「坚持」这个原则,达到最后目标的成功机率,实在太低了。真正有效的是「上瘾」的概念,绝大多数的绝世高手从来不是什么坚持日日练功,而是觉得自己大脑帅,上瘾到停不下来。

所以,当我在投入教育业之后,我始终研究的方像是「上瘾」这个概念,最少最少也要练到让学生「建立习惯」。

先让使用者上瘾,再做产品。而不是先做产品,再研究如何使用者上瘾

但在听完 Nir Eyal 的 Hooked Workshop 之后,我重新换了个思考方向。原来创业者不该「做产品,再研究如何使用者上瘾」,而是「先让使用者上瘾,再做产品。而不是先做产品,再研究如何使用者上瘾」。

在创业这个领域,我们常听到前辈建议,创业得从「刚需」下手。你得打造「止痛药」等级产品,而不是做个娘娘腔的维他命。但听完这个 Workshop 之后,我甚至认为创业不只要做止痛药产品,更得做成「吗啡型产品」。

这到底是什么意思呢?

创业公司分成以下这几种类型:

  • 不赚钱的
  • 赚钱的
  • 会成长的
  • 有成长率的

而上瘾型产品其实就是最终的圣杯。因为他能促成三件事的发生:

  • Growth (高成长):病毒传播
  • Engagment (高接触):回访率
  • Monetitization (愿意付费):变限机会大

简称 GEM。非常容易冲出能够指数型成长的公司,不但频次高,还容易增进 Customer Lift Time Value。

所以,学习「上瘾设计」的方向,甚至都不该是「改善现有产品」让你的使用者「养成每日使用习惯」,而是在当初打造这个产品最基本原型时,你就得由「成瘾性」去下手。

如何寻找具备成瘾性的点子

仔细观察,你会发现网上所有成瘾性产品,如我们现在使用的各样类型「社交网路」产品,最初都是由非常简单的概念构成,像是打发无聊的玩具服务一样。而这些产品的核心,几乎都是由「一个非常容易的行为以及解法」所构成。

具像的譬喻就是:假如你的朋友后背痒,你即时给他一支搔痒棒。

所以「成瘾性」的点子,来源就是「压力」。「压力」在哪里,机会就在哪里。所有成瘾性产品,背后都是「压力」的出口。

  • 推特就是内心有很多思绪的出口
  • Instagram,Facebook,直播产品 就是炫耀的出口

所有爆红且成瘾性极高的产品,后面都代表著「压力」。

如何具体打造成瘾性产品?

Nir Eyal 出了一本书,名字就叫 Hooked (钩瘾效应)。当中叙述了 Hook 是怎么构成的:

  • HOOK = TRIGGER -> ACTION -> REWARD -> INVESTMENT

放一把火,然後騷起癢處,再提供解決方案,使用者得到獎賞後,促成某些行為。再利用这个行为,制造下個触发点的产生,以达到建造下个回路的目的。

TRIGGER => ACTION 是相当简单的。但上瘾的关键点在于 REWARD 的设计重点:你得让用户在這個迴圈中得到「自我成就型的變動獎勵」,然后使用者掉坑,自會欲罷不能。

提高行动的契机:降低行动难度

许多研究上瘾这个课题的产品设计者,在此阶段通常会掉近一个坑里面。假设如果使用者「不愿意提起行动的意愿」,那么我们该如何「推一把」。

行动行为学设计大师 Fogg 曾经提出过这样的模型,他认为:

B ( Behavior ) = M(otivation) + A(bility) + T(rigger)

产品设计师,往往认为 M 是最重要的。恰恰相反,这里有一个重要的思路,其实能够「主动」找到你产品的人,动机「Motive」都高到爆表了,你其实根本不需要花什么心思。他们迟迟不采取行动的原因,是因为「Ability」不够。

所以,产品设计师的心思得放在「降低难度」这件事上,只要你能成功的促成这件事。那么就有极高的机率看到「行为被发生」。

打造上瘾的無窮迴圈

当然,许多的产品改善行动,往往到这里就停了。我认为有点可惜,因为真正上瘾型的产品,你得让产品触发的行为真正变成一个回圈。

而制造回圈的关键之处,在于「提高使用频率」。

具体作法是:

  • 在 Endgame 阶段,设计载入下一次行为的「触发点」
  • 储存使用者行为制造的副产品(资料,数据,进度,社交影响),并且拿来人工制造触发点

这样你就能让整个圈子能够无限的正循环。

具体的例子就是:在社交网路上,使用者张贴文章,其他使用者会来按赞或留言,然后你设计「通知系统」。使用者为了察看这些「通知系统」,就会一直往返的回来查看,甚至回应。一旦回应了,就会又触发另外一个回圈。

如何利用上瘾机制干掉竞争对手

Nir Eyal 在这个 Workshop 还提了 Bonus,我记得问题是这样的。很多现有产品已经具备高度成瘾性,那么你如何设计产品,去让消费者对旧产品脱瘾,转投你的怀抱。

他提了可以去思考的四个方向:

  • 速度: Velocity。让止痒速度比竞争对手更快,比如 Netflix V.S. Blockbuster
  • 频率: Frequency。Amazon 的竞争对手不是其他百货类电商。而是更简单更容易下单的单一品类服务。所以他们才推了 Dash 或者是 Echo 去防御。让使用者非常简便的可以下单,就可以提高下单频率。
  • 奖赏: Reward。为什么 Facebook 惧怕 Snapchat?事实上是 Snapchat 的「社交奖赏」远大于 Facebook,想想你的朋友会在 Snapchat 会传什么给你?不就是八卦,抱怨,咸湿内容吗?这可比 Facebook 上的正面能量美味太多了!
  • Easy Entry:为什么 Google Docs 可以逐渐侵蚀掉 Microsoft Word 的使用频率。因为 Google Docs 的取得与使用门槛比套装软体低太多了。

ONE MORE THING

前阵子,我发表了一套「让普通人能在30 分钟读完一本书的 16 格笔记法」。其实我不仅止于拿来读书而已,甚至也拿来抄写 Workshop 笔记。

以往,要是听这类型的 Workshop,结束后我大概只记得 GEM 这三个字而已。而且要是不在三天内整理笔记,我就会永久忘记细节。更何况这是一个长达三小时的 Workshop!!!

这里附上我当时在研讨会上做的 2 张 16 格笔记。你可以看看这两张笔记,其实为我多记了多少细节,甚至是还原这篇文章的关键材料。

 
3 months ago

說來真是蠻有趣,一直以來,我曾經想從事過很多職業,但「編程教練」這個詞是從來沒有出現過在我的大腦裡的。我喜歡編程,寫了十年 code,在網上也寫了過非常多教程。但把「教書」這個技藝當成職業,卻是最近一兩年才發生的事。

有些人好奇我最近幹嘛去了?答案是又跑去幹線上版的全棧營了 XD

開了兩期線下版全棧營,我最大的感想就是「太折壽」(簡直不是人幹的)。

當初在跟笑来老師討論經營這間編程學校時,本來就有做線上版的規劃。只是想歸想,要怎麼開始,其實我還真沒頭緒。不知道要怎麼起步,只好一邊做邊想。一直到第二期線下班快結束前,我才大致上對線上班要怎麼做,勉強摸出一個模糊的頭緒。

線上課沒你想像的那麼簡單

做線上課不是很簡單嗎?怎麼得要思考那麼久?

很多人一聽到「在線上開課」,就覺得這是很簡單的事。但坦白說在我的理解並非如此,因為如果「在線上開課」的實作方法,你認為的是:「錄完影片就直接扔在網上,結束收工」。那麼以這樣的定義來說當然很簡單。

只不過,這麼做的「留存率 / 學成率」當然就很難看。這也就是絕大多數的線上課程根本是比健身房還坑的洞 XD (留存率不到 1%)。

而我在教編程,我當初想打造的線上課程,是想要至少留存率超過 25% 以上的線上課(業界是 10% 以下)。

25% 的留存率,其實挺狂的。別看數字好像這麼低,但是這在業界來說是真的很高的數字。要做到 25%,我相信世界上應該沒太多人知道怎麼搞,至少當初我也不知道。所以我也是一邊做一邊學。

而這一期的全棧營線上版數字剛剛結算出來了,線上版破紀錄的創下 41% (留存 / 結業率)的數字。

所以,我想最後 41% 這個數字,應該是達標並且遠超過當初的目標。我終於又有自信再寫一篇總結心得,這就是這篇文章的起因。

TLDR

41% 這個數字,沒有對教學理論有研究的人可能覺得好像不是靠譜,有點偏低。但是如果有在研究線上教學的人,會覺得這個數字是高到令人震驚,因為業界的數字絕大多數是 10% 以下。(所以這個數字是業界的整整四倍)

所以當初我一公布這個數字的時候,很多人希望我透露這當中的祕技。不過,我當時都一一拒絕了,不是我藏私,而是這裡面的技巧實在複雜了,光用說的其實說不清楚。因為全棧營實質上是「認知心理學 + 教育理論 + GrowthHack + Gaminification」的混合跨界實踐。

所以我決定有空時再用寫的。這篇文章預計會很長,所以我在這裡先幫各位寫個短版重點提綱:

  • 教學不是演講
  • 套路、套路、高頻小套路
  • 由學習金字塔去觀看學習成效
  • 自動化追蹤學習成效
  • Onboarding
  • 化學效應

教學不是演講

這篇文章我想分享的第一個重點就是:「教學不是演講」。

做「課程」與做「分享、演講」,這是兩個截然不同的方向。

許多人以為這是同一件事,但事實上並不是,而這其實也是我最近一兩年才領悟的道理。這個道理很簡單,但是跟其他專業領域一樣,如果在教學這個領域沒有鍛鍊到「熟練者」層級,許多資淺(在 5 年以下)的老師,絕大多數分不清楚這兩者的分別。

我在這裡寫一下兩者的分別:

  • 「分享、演講」:老師不在乎學生學不學得會,只要在台上講得爽,有爆點就行。
  • 「課程」:老師非常在乎學生是否下課就要馬上學的會,立即應用。

而這正是一開始就「決定學生學成率高低」的關鍵心態。

學生是否學得成,與(許多人以為的)以下事情無關:

  • 投影片好不好看
  • 題目是什麼
  • 用什麼形式(影片、音頻、文字、互動)表達
  • 老師是否會講段子

在開課的一開始,就設計出一個「可以在學生當場下課就能驗收成果」的課程

才是整件事的中心重點。

舉例:烹飪課

我在這裡舉一個更深刻的例子,各位老師可能會比較明白。比如說今天有個老師想要開門煎魚課,讓學生在下課後馬上學會如何煎出一條完美的白鯧魚。

那麼今天的課程重點,絕對不是花上一堆時間說明講解火候怎麼控制,魚的腐敗速度,油的溫度加速原理。

而是這個老師,在設計課程一開始,他的教案目標就要訂成:「如何在下課後學生馬上能夠煎出一條不破皮又漂亮的魚」。

所以內容就會變成這樣:

  • 不破皮的小套路
  • 挑選新鮮魚的小套路
  • 火、鍋、油的小套路

這三件事才會是一開始的教案重點。

接著再基於這個教案,去設計互動學習方式(影片、音頻、文字、互動),讓學生能夠完全吃透。

唯得先造出一個「實用教案」,老師才能基於這個教案去不斷翻新改造。許多課之所以淪為雞湯爽課,是因為絕大多數的老師,準備課程的方式是劈頭打開 keynote,然後就開始寫「自己對於這件事的心得」。

學生也許當場聽得爽,但是聽完課「用不起來」,主要也絕大多數是因為授課結構完全錯了。

由學習金字塔去觀看學習成效

如果老師將教學誤當作「分享」去做準備,那麼我還要分享另外一件在開始就註定結果的慘事:「不管投影片設計或段子講的如何牛逼,這堂課的學成率注定也是 10% 以下」。

這不是我說的,而是有科學實驗數據佐證。

美國學者艾德格‧戴爾(Edgar Dale)提出了「學習金字塔」(Cone of Learning)的理論:在初次學習兩個星期後,透過閱讀學習能夠記住內容的10%;透過聽講學習能夠記住內容的20%;透過圖片學習能夠記住內容的30%;透過影像、展覽、示範、現場觀摩來學習能夠記住50%;參與討論、提問、發言來學習能夠記住70%;做報告、教學、模擬體驗、實際操作能夠記住90%。

線上課與線下課的根本差別就在於:

  • 一般的線上課,無論老師如何精心拍影片。限於格式,學生還是只能「被動」從影片或文字內「想像學習」。
  • 而線下課,老師可以透過一系列的方式,示範、演練,同學們可以習作、演練、被糾正,形成「主動」式的學習效果。

要設計出高留存的線上課,重點不在於老師的教材影片怎麼拍,甚至影片根本也不是重點(還有很多種其他形式可以做線上課,況且線上課一支影片只要超過 5 分鐘,學生就會不耐煩)。

而是如何讓學生在線上拿到教材就能夠直接用起來。然後在線上課裡面促成:

  • 展示
  • 討論、提問、發言
  • 實際操作

這才是促成高留存率的重點。

你得先開線下版,才能再開線上版

在全棧營裡面開的每一門課,都有相對應過去曾經開過的線下版。而這也是我相當重視的一個原則。我必須要再強調一遍這:「有線下版,才能有線上版」。

線下版之所以這麼重要,是因為線下版容易取得比較好的培訓成績。如果一門課原先的教案與教材在線下版行不通,那麼線上版恐怕 100% 也行不通。

我舉個比較貼近的比喻:

  • 線下版更像是可以隨時修改部署的草稿版 Web Application
  • 線上版更像是部署出去的手機軟件,一部署出去很可能就無法修改,或者是幾個禮拜後才能修改。。。。。

如果一門線上課,沒有在線下演練過,吸收 feedback。那麼貿然直接放在線上就是:死!死!死!

隨便一個小的 bug 就可以直接讓線上版的學生沈船。

自動化學習成效追蹤系統

在台灣最後一班 Rails 結束前,我花錢請國外的團隊幫我寫了一個交作業系統(寫這東西要 5 週,但是我現在忙教書,沒有 5 週時間可以停下來...),這後來也是全棧營線下線上版的一個基礎核心。

這玩意說實在花了我不少錢,但是是我一直以來的一個心願。在教台灣 Rails 班學生時,我發現學習成效與同學回去有沒有「當週寫作業」有非常強大的正相關。但是,沒辦法強迫學生寫作業,追蹤不到學生的成效,學成率與那就跟開樂透沒兩樣。

折衷的辦法就是請課程助理使用 Facebook 社團、hackpad 或者 Quip 去看誰沒交,再一個一個打電話催。只是,這樣非常非常沒有效率。因為這說穿了也只能提升一部份的「繳交率」,而不是「實作正確率」。

我是程序員出身的,常常對重複的人工感到不耐煩。我想,能不能寫一個系統自動搞定這件事呢?所以在教 Rails 第六梯第七梯時,就決定發包這個系統。

只是,最後這個系統出生的時間有點尷尬,我 4 月中的時候發包,六月初的時候落成。等落成之後,我在台灣教書也教煩了,不想教書。。。。。

後來笑来找我去中國大陸教書,我就把這套系統也帶過去。因為這系統實在花了我太多錢了(超過一台 Toyota SUV 的錢吧),我得真的啟用它,不然等於把車開去大海沒兩樣 XD。

這套系統大大提升了師生間的協作效率:

  • 老師可以很快的部署教程
  • 催同學繳作業的 Effort 大量降低( 可以利用作業繳交期限,讓罪惡感壓垮學生)
  • 學生的繳交作業正確率,大幅的提升( 因為可以看同學的答案當作提示....)
  • 學生的繳交作業率,大幅的提升( 每個人都有自己的專屬進度條需要填滿,多數有強迫症希望把進度填滿。。。。)

在經營全棧營線下版時,這套系統真的幫了我不少忙。因為老實說,全棧營是我量身打造隨時編修的內容,光寫這麼靈活的教程就會佔掉超級多時間了,更別說追蹤進度了。。。。

而後來在做線上版時,我們就是拿這套系統作為核心原型,包裝成線上課程的架構。因為,唯有「作業」,才能當場驗收學生是不是真的「當場學會」。

用 GrowthHacking 的精神做教學

GrowthHacking 也是我的一個核心的技能。所謂的 GrowthHacking 就是用技術工具實作營銷,並且利用數據分析指標調整策略與手段。這本來就是我的拿手好戲(我的 GrowthHacks 課在台灣開了 17 場,書籍在台灣也拿下金書獎,更不用說課程業績了。。。。)

那麼,要如何用 GrowthHacking 的方式做教學呢?我在以前談 Growth 的文章談到過一個模型

Growth = Conversion (轉化率)- Churn (流失率)

所以我們也可以把這件事情「遷移」到「教學」上。

Growth = 學成率 - 輟學率

全棧營的後台本身非常黑科技。我們後面有以下追蹤技術:

  • 學生的打開率
  • 學生的交作業率
  • 一次作業的學生繳交數
  • 教材的「崩潰」指數
  • 教材的「吐嘈、回報」系統
  • 學生的 CRM

簡單幫各位總結一下這套系統在幹什麼:

  • 我們非常重視每一堂課學生有沒有聽懂,並且用起來
  • 我們非常重視每一個作業設計的意義
  • 我們非常重視每一份作業的意思有沒有被誤解
  • 我們非常重視學生的學習狀況,試圖想要去拉落後的學生

這套背後的原理,其實就跟在做 GrowthHacking 一樣。

如果沒有指標就去盲目地調整教程,根本就是在開樂透耍流氓。而既然有了系統,我們的就可以客觀的去看待每一個章節每一個步驟的設計難度。

當然,這也是不得已的手段。線下班可以當場看到學生的反應,即時挑整。但是線上班很難做到這點,所以開發自動追蹤學習成效系統這件事只好變成了全棧營的 Must Have。

Onboarding

當然,背後的科技也只是這套系統的一環而已。我們真正下苦功也一直不斷的在優化的是整套課程的 Onboarding 框架。

Onboarding 在 GrowthHacking 這門領域的背後意思是「讓剛進門的客戶能夠很快的學會使用這套服務,達到高留存率,進而達到高推薦率」。

GrowthHacking 大師 Brian Balfour 曾經在他的課程分享過:線上客戶的流失,問題往往不在於競品的存在,或者是你的系統上的瑕疵。超過 60% 比例的顧客,是因為「不懂使用你的系統進而無法體會到好處」所以流失的。

所以 Onboarding 的比例絕對是重中之重。課程內容充滿乾貨當然是必要的,但是如果客戶無法 GET 到,那也是枉然。

Onboarding 套路框架

Onboarding 說穿了,其實就是在協助顧客養成習慣。(見 The Membership Ecocomy + The Power of Habit ,兩本放在一起看,你會超震驚的)

The Membership Ecocomy 這本書提供一個 Onboarding 框架:

  • 消除疑慮與挫折
  • 立即傳達價值
  • 獎勵期望行為

牛逼的線下課,絕大多數都有做到「立即傳達價值」,也就是:

  • 給乾貨
  • 看反應
  • 修正教學方式

但是我上了很多線下班之後,發現絕大多數線下課的問題少了兩個東西:

1. 消除疑慮與挫折部份

  • 沒有課前作業
  • 無法 GET 到課前作業要我們做什麼
  • 作業做錯了。不知道如何正確地做

2. 獎勵期望行為

  • 獎勵學員正確的行為
  • 促進學生產出更多正確的作品
  • 在日後的生活遷移使用

課前作業應是(線上)課程重中之重

因為「預算限制」的關係,有些講師可能難以做到獎勵期望。

但是在課前作業,我卻是覺得比較可惜的。因為我去參加線下班學習技術時,最常在課程當中見到豬隊友(同學),往往不是因為這些同學豬,而是老師課前作業搞砸了。。。。

所以這些同學可能有:

  1. 對課程或老師有錯誤期待
  2. 學習上對老師有傲慢的態度
  3. 拖累大家的學習進度

所以這就是為什麼「課前作業」這麼重要。

因為如果這件事情搞砸了,後面的課程精采度也會嚴重受到影響。而正因為在線上教學,沒有辦法即時看到學生的反應,這件事情才更加的重要。

所以,課程要有高的留存率。另外一個重點也在於「如何設計前導 Program」,將學生引導到正確的方向。

不僅只局限於線上手段,重要的是「學生之間的化學效應」

在前面我們講的都是線上的手段,如何用技術手段去:

  • 大規模正增強學習效果
  • 提升學生上癮學成率(這部分全棧營不小心用遊戲化機制搞了一個 60 天注意力黑洞,絕大多數的學生被迫放棄收看「得到」,學英語,所有的時間只能學編程,而且對編程上癮)
  • 降低崩潰逃跑率

這是整套課程設計的一大部分,但是不是全部。

全棧營另外一大部分的核心系統是運營部分,課程的另外一部分是線下體驗:

  • 海量助教 + Slack (幾十個線上助教)
  • 每周兩次線上直播
  • 線下同城 Meetup (全球接近 20 個)
  • 雙人組隊大賽

過去我從做這麼多次 Rails 課程以及實作兩次全棧課程,體悟到的一個非常重要概念是:科技是很牛逼,但無法解決一切的問題。而如果做線上課程,只把自己的手腳綁在線上,那就太可惜了。

能夠加速一切學習的催化劑,絕對還是人!人!人!

雖然這是線上課程,但是全棧營卻有極強的線下體驗。我從長期的半線上線下教學經驗體悟到,認知到唯有將課程設計的人與人之間高度互動,才能夠有效催化出學習的效果。

  • 自學線上教材的時候不再孤獨
  • 同城 meetup ,學長姊與同學可以解掉一大堆 bug
  • 線上直播老師雞湯打雞血,助教示範正確解題,可以幫助同學快速脫坑
  • 線上的分享會,可以一次 GET 到幾百篇學習的最佳實踐
  • 強制雙人組隊,可以降低輟學率以及豬隊友行為比例
  • 同學互助時分享的教程,可以一直打破教材本身的天花板

很多人都以為線上版只是一套視頻教材。但事實上全棧營這一套做法,是將這套教材活生生地發展出一套有機體。

Summary

當然,這當中的細節還有很多(有些商業機密我也不能說,哈哈,這篇尺度已經很大了。不過有興趣的話可以去看全棧營線上版的 60 天學生的學習心得,他們寫的超級詳細,可以拿來當對照版,大概有一百多篇,保證看到吐)。

不過這一篇文章要傳達的是,很多人以為線上教學課程市場與難度看來已經飽和,沒什麼進步空間。

但事實上,我認知的現況其實離離真正的天花板還非常非常非常的遠。只是一直以來,沒有太多人運用跨界的工具與知識,把這件事提升到下一個維度。

而且坦白說,我也只是剛開始研究這一塊領域。畢竟兩年以前,我連職業教師都還不是,一年以前連互動教學法都不懂。一直進化到做出這樣的課程,我自己恐怕也是想像不到的。

最後在文章後面要謝謝我的三個老師:

  • 謝文憲
  • 王永福
  • 林明樟

感謝你們無私在「講私塾」以及「 TTT 教具與架構設計」系列課程的啟發與指導,整整讓這整件事的進度加速十年。

也謝謝有耐性看完這整篇文章的各位觀眾,歡迎各位老師一同交流教學技巧。

最後一點,很多人看完以後這篇文章,對這篇文章提到的技術覺得非常震撼。問我為什麼,我願意把全棧營的商業機密洩漏出來(某位神級老師還問我是不是又要再度退休才這樣亂分享 XD)。是這樣的,網上我公佈的這個版本也只有我們所有技術的 20%。再來呢,我是一個相當愛學習的人,也希望上到好課,但是我發現 99% 的老師,都被卡在某些特定的天花板與門檻衝不上去。

我想,既然在這條路上某些關卡已經破關了,雖然把攻略寫出來就不好玩了,但隨手把 BOSS 地點公佈出來也是功德一件。希望這篇攻略可以幫助大家把教學水平往上拉一個檔次。

 
7 months ago

過去來來去去自己做了也參與過無數的項目。有好的項目,也有屎的項目。有好轉屎,也有屎轉好。

項目

如今我自信可以把這件事轉成了文字。什麼叫做靠譜的項目。具體幾個特徵:

  • 能夠一句話形容這個項目的「價值」
  • 能夠有一個最小核心的交易模式實現方案
  • 最小的交易模式方案必須要可以兩週內就能夠搭建出來
  • 這個項目必須要一開局就可 PMF

無法做到這四條的。創始人越詳細熱心跟你解釋「沒那麼簡單」原因的越要躲開。一個產品最重要的不是有多少項功能,多麼漂亮的介面,多少牛逼人才,創投多少資金。

而是有價值且瞬間可以落地。講不清楚的都是地雷,離得越遠越好。

項目經理

再來是什麼不靠譜的項目經理。

不靠譜的項目經理就是,跟你扯了一大堆,就是講不清楚這個項目的「核心功能」與「價值」。

花了大把時間再跟你扯這個畫面,那個特效,市場調查如何。自己多有信心。而死都不去開這個項目最核心的黑盒子。把黑盒子拆開,一項一項找解法落地。

這樣的人的項目,離越遠越好。

這樣的人只陶醉在自我感覺良好,而不是解決問題,事情做好。

為什麼他會陶醉在自我感覺良好?其實也很簡單,因為「沒有勇氣面對自己的無能」。然而,只要知道他是「無能」就可以靜靜走開了。

 
9 months ago

今天是中秋節,也是我們全棧班的最後一天。全班大多數同學都更新了自己的心得,我自己也決定來更新自己的結業心得。

我過去幾個月都沒有更新博客,有一些人應該納悶,我幹嘛去了?

這兩個月呢?我把台灣的班都停了。跑去北京搞 新生大學全棧營 去了。

全棧營的起因是這樣:李笑來老師,某天在網路上發了一個感悟「一年可以成長為全棧工程師」。但莫名其妙的這句話,就在大陸被黑出了翔。

在我這個外人看起來很莫名其妙的原因,其實是因為在矽谷呢,說這句話根本沒多少人會大驚小怪,甚至是把你黑出翔,但在中國莫名其妙的就變成了政治不正確。

隨便找了一下 Quora,看到這種題目也沒被戰....大家還積極討論? How can I be a full stack web developer in one year?

全棧工程師的定義,以及所需成長時間

  • 一年可不可以成長為全棧工程師?可以!如果你找到夠好的前輩帶你,以及在夠好的實戰環境,肯定可以。
  • 再來是「全棧」,有沒有一個定義?
    • 是在前端、後端、CSS、機器調效都練到大牛等級?
    • 還是在創業公司,可以一個人全搞定這些,產品還可以快速前進?
    • 還是心中想開發一個產品,可以自己一人從零到有生出來順利上線?

好吧。如果我們先不管這些。

若求「一組無經驗新手,是否可以在八週之內搞出一個實戰等級產品並上線」,這件事何以可行?

許多人也許覺得「現實世界不可能發生」。但就我以前帶產品以及帶徒弟的經驗,我卻認為「這應該是有可能的」。(注意,這裡是講「應該有可能」)

快速帶出職業選手,本身就是業界常態

我本身在業界多年,我是知道這幾件事的事實存在:

  • 幾乎稍微成熟的 Rails 公司是有帶徒弟的套路的。(你不可能招一個零經驗新手,手把手教三個月,才能跟資深程序員一起寫,許多公司如 Facebook 甚至有新人 Bootcamp )
  • 所有的互聯網產品,其實都是有開發流程套路的。只是依不同公司的開發團隊資質,需時從 2 個月到 9 個月。
  • 很多厲害的 developer,本身不是計算機本科出身的,公司一樣帶的起來...

所以,理論上、理論上,如果找到「學習上的瓶頸」「開發上的瓶頸」的相關答案的話。理論上、理論上,應該有一套方法,可以讓這件事(「一組無經驗新手,在八週之內學會編程,並搞出一個實戰等級產品上線」)發生。

我自寸已經知道這其中大多數問題的答案。問題是:我真沒試過,是不是能夠把這些答案組起來,放到一個團隊,按照這樣流程跑,就能達到同樣的效果?而且,即便這應該是可行的,可真沒人相信我。

況且,這世界不存在這樣的公司,也不存在這樣的團隊與機會。

如果我說要開個班說能辦到這事呢,估計許多人都會認為這是大忽悠。

全棧營其實是一場教學上的實驗

這個機會起源於:當時在 Twitter 上,當所有人都在罵李老師時,只有我無心的回一句,我認為絕對是可以的(因為這在西方世界很正常嘛)。

所以李老師就把我叫去北京瞭解看看,這到底要怎麼搞?畢竟這事要是幹成了。就是編程教學的一大突破。

而我當然是一口答應這個機會的。因為:

  1. 四周內培養職業 Rails 工程師,能獨立開發個人產品。這事肯定是能幹成的。我在台灣這樣的班就辦了快十期。
  2. 其餘關於做產品所需的相關知識與坑,這幾年來我做了深入的研究。在我的心中反正是這樣想,我已經離所有的答案都只差最後一步了,只差有人自願讓我做實驗而已。

能有人幫我推最後一哩路,我當然是極其開心的。

最後我就接下這個挑戰的任務,甚至還跟李老師大膽的說:

我不需要三個月,我只需要兩個月。

(估計那時候腦子應該是燒壞的)

但是,我想先在這裡先跟大家透露最後的結論:

其實不需要八週,只需要七週。。。。。。。。。。。

我是如何設計課程的

全棧營的課程表,這樣說吧,真是寫好玩的。這個營,在課表上列的知識都會教,只是絕對不是按照課表上的進度走。這個課表只是為了「政治正確」寫的。

這個營真正的課表是這樣的:

  • 前三週,新兵基礎訓練(我有一套特製的教材保證打底,至於運作原理,那就不在這篇文章範疇之內,改天再提)。這段期間,同學會開發好幾個「個人」項目,確保自己最少有辦法做到獨立的開發。
  • 後五週,團體協作訓練。同學要自己想辦法想出有趣的產品,製作 Landing Page,利用 Landing Page 招募至少四個同學一起實作,然後用課堂上教的專案管理技巧,小組進行敏捷開發實作。最後呢,再利用 Onboarding 技巧收尾。

我壓根就不走也不信全世界培訓班都在做的那一千零一套(也就是上課花了大把時間教基礎知識,畢業前兩三週再做一個玩具 project)。這個班,我就打算走我研究認為有效的那一套,而且要做結業 project 就是全玩真的。

而且,我是開學第一天,才跟班上同學說,上課貼的課表都是假的。不算數,我走的是這一套。他們都懵了。(畢竟學費不是小數目)

這幫學生遠超過大家的想像

前三週的進度,我是非常有把握的。我在台灣就已經能夠這樣幹,一點都不擔心。

但後五週的設計,其實我是完全沒把握的,哈哈 XD

我只是猜「應該可以吧......」,就這樣幹了,但不行也得搞看看。所以我就真的這樣做了....

猜猜到第七週學生跟我抱怨什麼?

「老師我們把項目已經做完了,下週要做什麼?」

老師,我覺得班上畢業氣氛太早了,不太好」

……這也太狂了。我壓根沒想過他們能夠提前做完,還提前一個禮拜!!搞得我最後一週,只好臨時去寫一些投影片墊檔講課 -_-|||

學生作品 1:

人才火箭 http://talent-rocket.herokuapp.com

學生作品 2

HackSchool https://hackschool.herokuapp.com

學生作品 3

GrowthHackCN http://growthhackcn.herokuapp.com

學生作品 4

約霸 http://online-ask.herokuapp.com (留學咨詢項目)

2 天 Hackathon 作品

在畢業那一週,同學還幹了一件更瘋狂的事:兩天 hackathon 又搞一個真實產品出來(含 landing page 與 onboarding)。

濃縮書:http://nongsuoshu.herokuapp.com/ ( by 人才火箭隊組員)

你說這幫同學,兩個月前沒人會寫代碼(20人內只有3人有過去編程經驗),誰相信?

我真不怪其他人不相信,因為是我也不相信!但他媽的他們做到了!

全棧營教了什麼

  • (基礎期)基於認知心理學的編程學習法與正確的自學法。可以快速上手 Rails API,並獨立
  • 如何做 Landing Page
  • 如何寫 User Story,以及 run Standup Meeting 以及優先權排序
  • 每天的收尾會議(仿 thoughbot 內部流程)。
  • 每週的 Retrospetive Meeting
  • 如何寫乾淨的代碼以及設計架構
  • 如何做 Onboarding (如何讓 RD 等級的「屍體級」產品,變成運營等級「活人」產品)
  • 仿 Hackathon 的散彈槍開發法

讀到這裡,讀者們如果識貨(有做過編程工作),應該知道這是什麼樣等級的訓練。其實甚至我都害怕他們承受不了這樣高強度的技巧與操練。結果....

讓我覺得果然教編程還是要教新手,新手沒玩過這些東西就不知道害怕....

(P.S. 給沒有做過編程開發的讀者一些背景知識,這是有靠譜 V.P. of Engineering 的 A 級團隊內部才能夠這樣高效的做產品,可以理解成為我在給新手吃人參)

為什麼要這樣教?

  1. 我自己也相當不認可一般培訓營裡面的課表設計,我認為那些課表是相當不靠譜的,一般人根本就記不住那些無聊知識。花了三個月只做出一個玩具,這是在浪費人的生命。
  2. 許多培訓班的教學方法,是仿大學工業教育設計課表,只因為大家普遍認為大學這樣教,竟然社會上就得這樣教。問題是這根本不是業界培養開發者最有效的方式(社會上是師徒制以及做真 project 的帶練)。既然這個方法不有效,為什麼要這樣教?
  3. 培訓班不教真實的場景以及解題思路,以至於培訓班學員畢業了以後,適應困難。社會上許多人對於培訓班學員有幾個印象
    • 1) 沒有辦法按照真實需求,獨立作業,脫離了培訓之後就失憶
    • 2) 在業界真實協作感到困難
    • 3) 這些培訓班學員之前沒有計算機底子,所以自學遠比野生程序員更慢...

種種原因造成了很多人聽到求職者是培訓班學員,就退避三舍。

所以我非常想照自己的思路,設計一個:我自認非常有效的學習途徑(起碼這條路上學的都是業界實務),培養真的社會上所需要的「容易合作以及善自學的好程序員」。而不僅僅是「只能夠 CRUD。。。。。」。

為什麼挑選這些題目教?

在台灣我做了快十期班,也成功帶出很多程序員。其實我的教法已經非常有效率。

但是呢,我卻發現一件事,這些班下來,我僅僅能教出能夠獨立「寫功能」的程序員。

但是我教不出「能夠做出有靈魂產品」的程序員。

所謂「有靈魂產品」的程序員:指的是他們做的產品一上線,就已經是打磨過的產品,而不是「只有功能,但卻沒人知道怎麽使用的屍體」。也不是只會做功能,還要找運營、行銷來回吵架產品一直搞不上線的程序員。

別說「能夠做出有靈魂產品」的程序員了。因為很多時候,產品準時上線都相當困難。

在這個業界,撿到一個能夠達到這樣要求的程序員就是寶了。

所以,我一直在想,這樣的人能不能夠量產。我想要幫世界量產,這世界需要更多這樣的「全棧程序員」。會項目管理,會做運營的程序員。。。。

這個班就是這樣的實驗。

我很幸運的,實驗如我想像的成功,而且比我想像的還要成功(提前一週做完)。

如何在四周開發實戰等級產品

其實我一直在掙扎,我要不要把這些秘笈公開出來。考量的點有幾個:

  • 一旦公開出來,應該就會有競爭者抄我怎麼做。畢竟我在運營一個教學事業。
  • 但是如果不公開出來?這世界明明就應該運營的更有效率,而且很缺程序員。連我自己都希望業界有大量的這樣等級的程序員可以招。不寫出來我內心始終覺得哪裡很怪....

想了很久,最後決定還是把這個秘方寫出來。我想至少至少,這套秘笈,可以讓許多正在做產品的團隊,加速內部產品開發的速度以及少走很多冤枉路。

做產品的步驟 Step 1: 做 Landing Page 吸引用戶

五週的第一週第一天,我教 Landing Page 製作 (以前在 GrowthHack 班有教)。

之所以為什麼一開始教 Landing Page 而不是項目管理。是因為我以前在做產品時,發現一件事,很多程序員或創業者,做產品時往往都是一頭熱的就栽進去寫 code,快上線了就...

  • 直接上線,但是用戶不會用,直接陣亡 。(此稱「屍體級」產品)
  • 請營銷搞了一個 Landing Page。但是營銷寫的文案與產品內裝,差太遠。營銷認知的「產品價值」,與程序員寫出的「產品功能」差得太遠。首頁文案變成詭異的四不像。

所以:

  • 既然是要做有意義的產品。那不就得在第一天就要搞清楚自己能夠 Offer 使用者的價值嗎?
  • 以清楚的價值觀出發的產品,功能方向開發不是才不會歪嗎?
  • 如果連 Landing Page 都做不出來,表示自己根本不清楚這個產品的價值與這個市場的痛點?如果根本吸引不到用戶使用,甚至隊友一起開發?那麼學敏捷,高效開發出一個垃圾有何意義?

學生必須先製作一個 Landing Page,成功吸引同學這是一個誘人的產品,然後同學進行投票,按照志願分發到他想加入的組。

做產品的步驟 Step 2: 進行項目管理,只做「有價值的功能」

要做一個有價值的項目,是需要很多道加工的。

真實的世界,很多時候,用戶雖然喜歡你能夠解決的方案,但市場窗口是不等人的。必須得在市場窗口關閉之前,做出來並且上線。

所以:

  • 小組進行 User Story Mapping,討論什麼是「Must Have」,什麼是「Could Have」。其餘程序員個人的「私心與貪心」全部扔到抽屜裡,有空再做。
  • 利用 Tower 進行項目分派。
  • 利用 Pull Request 進行代碼協作。

做產品的步驟 Step 3 : 建立程序員的公德心

產品團隊為什麼總是 delay 上線?鑑於這十年內我見過了形形色色的程序員,所以對於開發方向進行這樣的閃坑指導:

  • 大家在協作的主幹 develop branch 必須要是「不會爆炸」的代碼。
  • 大家部署到 heroku 的 master branch 必須是「可操作可驗收」的實際產品
  • 每天晚上六點由團隊主力程序員 Merge,部署 Heroku
  • 每天課程助理會收「各組錄製的產品功能 Gif」,確保隊員交出的當天成果是「可用功能」而不是「亂寫的功能屍體...」
  • 每天早上 Standup Meeting,確保今天的主線是正確的
  • 每週五早上有「產品展示會」,每週開發的產品功能要展示給全班同學看,給全班同學玩,讓大家指教。如果週五交「屍體」的組,會被我在展示會時釘在牆上。。。。。
  • 每週五下午 Retrospetive Meeting,重新檢視每週項目版上的功能「什麼是相對重要的」「什麼相對是不重要的」
  • 每週五下午要開「分享會」,同組成員分享「本週自己學到最好的知識」「本週最坑爹的事」

做產品的步驟 Step 4 : 對產品做 Onboarding ,進行最後一道打磨工序…..

鑑於 Step 2 與 Step 3 ,所以同學的進度是很神速的。大概做到第三週快結束,領先組的同學突然就要求我加入他們的例會討論救他們....。(我大概每週只參加他們的 Standup Meeting 一兩次,確保方向不要歪得太誇張)

因為他們發現即使不管再怎麼努力做功能,做出來的網站雖然精緻,看起來還是像屍體。不知道要怎麽往前推進。

所以我教了他們最後一招: Onboarding (以前 GrowthHack 班有教)。

User Onboarding 「用戶引導」,也就是要讓新用戶註冊後,服務可以透過一系列的互動引導,具體的流程決定了用戶是否會回養成使用產品的習慣並成為回頭客。

利用一系列的 Onboarding 問題,抓老公、男朋友、別組同學、課程助理、微信朋友圈的路人,來當真實 User,對這個網站進行以使用者角度的批判。

  • 不管什麼角度都可以寫,至少寫出 50 條
  • 團隊再拿這 50 條,開個檢討會,一一把 solution 寫出來。
  • 重新檢視這些 solution,哪些是可以做的,哪些事不能做的。
  • 哪些功能做得正確,打磨得更為人性。哪些功能是冗余的,毫不留情地砍掉。

然後,他們再花一週,把這些「Bug 全修掉」。

以這樣的步調,同學有一組是四週就把產品上線了....。最後一週就沒事幹了。

人才火箭 http://talent-rocket.herokuapp.com

乃至於這組最後一週,還花了兩天的時間跟又硬幹了一個小專案當 Hackathon 打,在畢業典禮上展示。兩天能做出的成果真是相當披敵當年我去打 Hackathon 的功力。。。。。。

濃縮書:http://nongsuoshu.herokuapp.com/ ( by 人才火箭隊組員)

隊員日記:http://nfreeness.logdown.com/posts/2016/09/16/like-the-moon-not-the-same-mid-autumn-festival-of-9-15-journal

結語

分享這篇文章,其實真不是想炫耀這個班多牛逼,自己又多會教云云。說實話,我教學的技術並沒有多厲害,我只是教同學:

  • 一般公司應該就得這樣做專案的方式
  • 一個好的程序員,做事基本的態度
  • 分享、檢討,才是前進的加速器
  • 做任何產品與功能應該基於價值
  • 自學的功夫,才是真正應該帶走的精華

我的初衷是:

  • 培養對這世界能做出貢獻的程序員
  • 學編程不該這麼難,這麼花時間。我覺得這世界應該有更有效的方式。
  • 學生「努力」與使用「正確方法」的學習,遠比有沒有計算機背景更重要。

我更感謝同學願意花這麼多時間賭在這個班上,認真的一起搞這個實驗的 Project。

更讓我見識了大陸同學的認真與狠勁,這個班要是辦在台灣,我真不知道有沒人願意一起玩命的這樣「認真投入學習」。

最後,為什麼會分享這一篇文章所談到的教學技術?用膝蓋想都知道我耗費了洪荒之力,才證明出來這個實驗結果。我再會教,也量產也量產不出個什麼鬼。

我只關注 更在乎這個世界的編程教學法,是否能夠被大幅改變

與其關注教學技術是否可以獨佔,我更在乎這個世界的編程教學法,是否能夠被大幅改變。有更多的程序員誕生出來,這世界會變得更加有趣。我更希望人家 clone 我的教學法,一起去改變這個世界。

  • 謝謝耐心看完這篇文章。若有興趣交流,歡迎寫信到 xdite@growth.school

  • 若是想報名,請關注我的微信公眾號 xdite-growth。(我們第二期已經滿了。第三期至少估計要等 2017/1,所以這篇真不是什麼招生廣告文 )

P.S. 2016/09/15 中秋節,這是人生當中過得最開心的一個中秋節。

全棧班的最後一個 slide

學生的優秀博客

(週記每週更新)(基本上我們有 20 個博客,全發大家估計看不完...)

 
10 months ago

我開公眾號了。歡迎掃碼關注!(或微信搜尋 xdite,有貓頭鷹那個 )

這個公眾號會專注更新幾個領域的內容:

  • 認知心理學
  • 學習
  • 自我成長
  • 編程學習理論

歡迎舊雨新知,掃碼追蹤。並分享給朋友訂閱,大家一起升級!

 
12 months ago

過去一年,莫名其妙成了全職的程式教練。大概是天注定,唉。最常遇到的新手問題就是,請問如何入門 XXX 技術。當然,對我來說,寫 Rails 都快十年了。這這個領域東西還真難不倒我,抄了傢伙就幹已經是我這幾年的風格。

不過我一向蠻有實驗精神的。為了要能夠回答這個問題,我特地去重學了新的程式語言( Ruby Motion ),來近距離觀察重新拆解我十年以來的學習反射性動作到底是什麼,來寫一份給新手的參考指南。

Step 1 : 建造時光機

我在學習新技術時,會用到兩個東西。第一個是 Git,第二個是 Redmine。

Git

git 是新手的時光機。我認為如果一般人學習任何程式語言,甚至寫任何筆記,都應該上個 git 版本控制。起碼看你上一次寫了什麼東西。其實 git 一開始也不用學太多指令,練習以下幾個就夠:

  • git init (初始一個 Repo)
  • git add [檔案名稱] (將某某檔案加入版本控制)
  • git commit -m "儲存訊息" (將這次要加入版本控制的檔案,寫入歷史紀錄)
  • git checkout -b "新分支名稱" ( 如果要實作一個蠻巨大的實驗性功能,我通常會開一個 branch)
  • git checkout "分支名稱" ( 切換不同分支 )
  • git push (推送變更到遠端做一次備份,通常是 Github)
  • git pull 拉下遠端的變更

主要是將做過的東西,「每一個 interaction 都做一次備份」,讓自己知道當初為什麼做了這些變動。

Redmine

Redmine 是一套專案管理系統。不過在這裡我是利用它的「樹狀 ticket 系統」去規劃我的練習。

我運用的方法如下:

  • 大致切出第一層,我覺得我想要練習的主題
  • 然後中間要是有遇到難題,大概 30 分鐘解不開,我就會「放棄」,然後開另外一張票,隔天心情比較好再回來學
  • 中間我要是覺得「有個功能實在太棒了」,我應該可以來做。忍住,開出另外一張票,下週再來做。
  • 每一張 Ticket 我拿來記幾個東西:
    • 我這次找到了哪些 link(幾乎是一 google 到一個疑似可以用的資源,就 copy 一份)
    • 這次這個功能寫了哪些 code。(是的,我不止 git 記了一份,redmine 上還複製了一份)
    • 這次我做了哪些改動
    • 我之前的「錯誤做法」,為什麼錯了。bug 的原因是?
    • 為了解 bug 所找到的 stackoverflow 資源

我的 redmine ticket 記這些東西,每張非常的詳盡。(不是指筆記做得好,而是指這當中的過程,我把每一步幾乎都錄下來)

這樣做的好處是:

  • 我不會分心,專注在我當初想練的主題上
  • 我不會被鬼打牆的 bug 打擊到自信心全無
  • 我不會被自己一時的成就產生的「傲慢感」牽走
  • 把每一步包括 bug 都錄下來。bug 的產生以及解法,其實是「重要的知識」。因為 git 「往往只會保留正確的結果」,而不會保留你 debug 的結果。然後下次自己還是會掉進同樣的坑裡面。

Step 2:挑選合適的主題,熟悉基本工具

在無數篇自我的學習部落格我都曾經提到過,在自學過程中保持一定的「成就感」是很重要的。最近,我把我多年來練習題目做了一個總結,找到了一個模式。

超級新手:

  • 一個「單一功能」,CRUD 的練習。
  • 先做 R 再做 C 再做 D 再做 U。

完整做完一輪,搞懂怎麼樣讓這個專案會動的基本因素與語法。

(注意,這個系統內只有「自己」這個用戶)

新手:

以下按照順序

  • 除了 CRUD 外的三個功能
  • 這個系統內只能有 1 個角色,通稱「使用者」。
  • 登入系統
  • 套版
  • 加上一個外掛功能
  • 部署

(這個最實際的例子就是 TODO + 使用者註冊 + 套版 + deploy)。這一系列做出來,起碼可以讓一個人至少可以熟練這個系統的最基本工具,而不太容易絆倒。

中手:

  • 第 2 個角色
  • 開發者認為的 10 個重要核心功能
  • 至少加入 3 個外掛
  • 權限
  • 介接一個第三方 (學會讀文件)

之所以會建議這樣做的原因。是我發現每當建議新手自己找題目練習後,他們自己想的題目反而變成了災難。

說災難的原因是因為他們挑選的題目帶給了他們濃厚的挫折感。而這當中最核心的原因在於失控的 scope。

而 scope 的最主要的控制變因在於「這個系統裡面有幾個?操作角色」。很多人會忽略掉一個重要的事實,開發系統裡面多「引入一個使用者角色」,這個系統的複雜度就會成「等比級數上升」。

舉個例子來說好了:

  • 一個匿名論壇,大家可以上去發表文章。
  • 一個實名論壇,大家必須要登入才能發表文章。
  • 一個實名論壇,大家必須要登入才能發表文章,「並且針對它人的文章留言」。
  • 一個有管理員的實名論壇,管理者可以任意刪除大家的文章以及留言。發文者也可以砍掉自己文章底下的留言。

這四個例子的功能數量是「等比級數的上升」。而一旦新手挑的題目,系統內角色多於 1 人,基本上就注定「打挑戰級難度被王打死」。

而我一向的學習方式,都是會儘量讓難度可以控制在自己「開開心心學習」的程度上(每次逐步加重,而不是一開始就被滅好玩)。我知道唯有己有成就感地學習,學一門技術才不容易中途而廢。

Step 3:將 Redmine 的筆記整理成技術文章

在學完這整套技術後,我會在適當時機,把過去的筆記寫成一篇技術文件。視情節發布給同事或給部落格讀者。

  • 比如說這個專案如果是跟同事協作的,我會在拉 pull request 時,附上快速的一篇 getting started 。
  • 如果是這個技術難度比較高,用一篇 getting started 的方式很難讓對方快速掌握,我會至少做一份 newbie guide ,讓想學的人,透過 guide 帶練至少一次快速衝到新手等級。

因為 redmine 上當初的筆記非常得詳細,在看這些筆記與 git 的時候,我當時的記憶就會被喚醒。甚至上面有現成的 code example 可以直接拿來改編。

而把這些筆記整理成技術文件與指南非常有幫助,因為「寫作」這件事可以幫助我從此把這門新技術「想通」,而且烙印到大腦裡面。

總結

以上的步驟,最後可以總結成三個重點:

  • 建造時光機,與錄下自己學習的過程
  • 做有成就感的題目,透過控制「角色」去控制複雜度,在頭兩個循環就掌握到基本工具,而且做出有成就感的東西。
  • 重新複習,寫成文章,內化成自己的架構。

分享給大家。

 
about 1 year ago

Mocking

在這個例子裡面,我們用了 mock 手法,確認 show 這個 action,真的有去呼叫 Suggestion.find

  • allow(Suggestion).to receive(:find).and_return(suggestion)
  • expect(Suggestion).to receive(:find)
  describe "GET show" do

    it "assigns @course and render show" do
      suggestion = double(:to_param => "123" )
      allow(Suggestion).to receive(:find).and_return(suggestion)
      expect(Suggestion).to receive(:find)

      get :show, :id => suggestion.to_param

      expect(response).to render_template :show
      expect(assigns[:suggestion]).to eq(suggestion)

    end

  end
class SuggestionController
  def show
    @suggestion = Suggestion.find(params[:id])
  end
end

劣勢:順序「反直覺」

但是其實這樣的寫法,對於我們之前提到的 Four-Phase Test:

  • Setup (準備測試資料)
  • Exercie (實際執行測試)
  • Verification (驗證測試結果)
  • Teardown (拆解測試)

有點相違背了。

我們先做了 Verification (expect)再做 Exercise ( get :show) 。

劣勢:容易失敗

而且在拆解階段,我們會將這段測試重寫成這樣。將 expect 寫在 before 階段,但這樣寫的缺點是,expect 如果不如預期,後面測試會因為 except 全死。

  describe "GET show" do

    before do 
      @suggestion = double(:to_param => "123" )
      allow(Suggestion).to receive(:find).and_return(@suggestion)
      expect(Suggestion).to receive(:find)
      get :show, :id => @suggestion.to_param
    end

    it { expect(response).to render_template :show }
    it { expect(assigns[:suggestion]).to eq(@suggestion)}
  end

Spying

與其使用 Mocking 手法,我們可以改用 Spy 手法,將測試改成這樣。(RSpec 使用 have_received 去驗證)

  describe "GET show" do

    before do 
      @suggestion = double(:to_param => "123" )
      allow(Suggestion).to receive(:find).with(@suggestion.to_param).and_return(@suggestion)
      get :show, :id => @suggestion.to_param
    end

    it { expect(response).to render_template :show }
    it "should find suggestion and assign suggestion" do 
       expect(Suggestion).to have_received(:find).with(@suggestion.to_param)
       expect(assigns[:suggestion]).to eq(@suggestion)
    end

  end

Four Phase 順序不但正確,而且是在 Exercise 後,才做 Verification。