如果我的余生一直做这些事,我会感到快乐和自豪,因为它们重要到我非做不可 –《爆裂》

长途旅行

我于2017.10.22晚从南京出发,之后环了大半个中国,目前长途旅行接近尾声,我在深圳,作为一个maker,在此乐不思蜀。

途中有几件事对我影响很深:

  • 泸沽湖的风景
  • 给喜欢发明创造的老杨安利积木化的软硬件,积木化的软硬件有"低门槛,宽围墙"的特质,方便用来改造生活以及表达创意
  • 途中阅读的书籍:《爆裂》、《牛津通识读本:数学》、《牛津通识读本:维特根斯坦》
  • 与@Eric、@MT、@izuo的持续交流
    • 与十年前创建MBA社区的Eric聊到准备以《爆裂》中提到的"拉"资源的思路来运作公司
    • 与MT聊到社区的构建和约翰·杜威主张的"教育即生活"
    • 与izuo聊"抽象"、程序语言以及罗素
  • 与@崔老师碰面交流以及将来的合作
  • 在深圳参加Maker Faire
    • 在会上结识了几家开源硬件服务商,商讨了技术上可能的合作方式(他们的技术实力和提供的服务都超出我的预期)
    • 结识了几位有趣的maker
    • 结识的技术团队,技术实力足以hack 树莓派/microbit的底层硬件,他们实际参与设计了microbit
    • 结识了一家硬件供应商,能以低价拿到所需的硬件
    • 图形化编程界面方面(scratch、blockly),有几家团队也走在全球前沿(与开源社区保持密切联系),都很open,互留了联系方式
  • 阅读了MIT Media Lab在medium上的文章、学习LCL课程并加入LCL中文用户组
  • 在深圳与@M的交流中,梳理了《程序语言,一种理想语言》的论点和文章大纲。这篇正在写作的文章也是我决定做少儿编程教育的原因之一
  • 途中在技术层面打通了我喜欢的几个异构系统(软硬件),将它们融为一个整体,涵盖软件、硬件、AI。而《爆裂》一书和Mit Media Lab又给了我一个做编程教育的整体框架和信念

下段旅程

出发前和@cc约了两次饭,最初和@cc的结识是在折腾Open edX的时候。谈到我们在少儿编程这块的兴趣和理想,以及对这个领域的看好,一拍即合。他提议给我一笔投资成立新公司来做这件事,渠道用他这边现成的,用户量级是个很大的数字,至于公司和团队控制权在我,他们不会干预。

我说我有好些疑虑的点,我在这段旅途中也好好想想,等行程结束给你答复。我的疑虑主要包括:

  • 创业太辛苦,折腾过的人都懂
  • 技术方案的选择有一些犹豫的地方,选择的多样带来选择的困难
  • 我准备同时采用多个系统,但这样一来一致性很糟糕。如果使用单一的系统(诸如选择scratch),所能做的事又很受限
  • 技术团队的构建(我希望是小而美),合适的人并不好找
  • 硬件解决方案以及供应商

其中因为《爆裂》、Media Lab以及深圳Maker Faire之行(特别感谢陪我逛的两个老同学@zyq、@zx),我之前最关心的几个问题途中都有了满意的答案,所以在行程的尾声,我可能会开始这家新公司,把想做的事情梳理一下,也希望能引起你的兴趣。

Just for fun

linus在他的自传《Just For Fun》中说

一小堆简单基本的建筑材料,结合起来就能创造出无限的复杂表述。

又说

物理的规则亦是如此。你努力找出基本的规则,而这些规则都是相对简单的。从那些简单的规则中,通过相互作用产生令人不可思议的复杂性。

以及

简单需要特别的设计和很高的品味。

当我看到少儿编程的先驱们所做的工作时(Logo/scratch/blockly/microbit),觉得linus的这些话简直是在赞叹它们

通过对积木的拖拖拽拽,孩子们几乎可以构建出整个世界

我们打算做什么

学习是必须亲力亲为的,教育则是外界加诸你身上的

我们打算做STEM教育,确切地说我们准备做少儿编程教育。

离开PaperWeekly的时候,我曾考虑过去当一名少儿编程老师。

如果你曾经到过到一个课堂里,对着一群天真的孩子,演示编程所打开的新世界大门。当你看到TA们脸上那种难以置信的表情、一探究竟的决心,以及掌握操作之后,立即试图用这些工具去表达创意的愿望,你会对此着迷

这个想法我和创业之前的老板聊过(当时我在负责技术团队),我说我如果回来继续少儿编程折腾这块,我想当一名老师,而不是工程师

我们为何要做这件事

《爆裂》中有一则故事很有意思。

“知识就是力量”(Knowledge Is Power Program,KIPP)项目的前任首席执行官斯科特·汉密尔顿说,有一回,在学校里,有一个女孩问他:“我想要成为一名服装设计师,我为什么要学代数呢?”,汉密尔顿当场被问住了。

汉密尔顿打电话给研究教育的认知科学家丹·威林厄姆(Dan Willingham),询问为什么高中生要学习在他们生活中应用极少的代数。威林厄姆回答:“首先,代数是大脑的体操。”他接着说了更重要的原因,“代数教大脑如何将抽象的理论应用于实际”。换句话说,代数是座桥梁,连接柏拉图的理念世界和我们居住的纷乱世界。学生,包括所有人,都需要这座桥梁。

ps: 这里我插一句,自柏拉图以后,数学一直被摆在很高的位置,在教育中也是一种占着极重要地位。柏拉图信仰的那个超感的理念世界的信念本身可能就根源于数学,关于这点在文末附录里细说

“那么我们的教授方法是最好的吗?”汉密尔顿问道,“因为如果有其他有趣且由学生驱动的方法,我可以把这些方法整理出来。”

对于这个问题,作者继续说,幸运的是,现在有一款应用实现了这个目标(Scratch)。

关于Scratch(退一步说是编程)是比数学更好的工具,用来教学抽象,可能很多人会觉得作者大言不惭。

就我而言,我十分赞同。说来惭愧,可能是我愚笨,学数学的那么多年,多数时间都用在解题技巧上,并没怎么学会抽象地思考(最近在读蒂莫西·高尔斯的《牛津通识读本:数学》,作者是菲尔茨奖获得者,文风简洁有趣,读这本书时,发现自己之前对数学的理解简直谬以千里,也是这本书让我重拾了数学的兴趣)。

高中构思长篇小说时,发现涉及的情节和事件太多,需要用一个好的容器来"盛放"他们,抽象地表示出虚拟的小说世界,能让我以上帝视角看它们,而不至于因为大脑的内存有限,出现前后矛盾的情节。我上网查很多办法,也试着自己用各种拓扑结构来表示它们,把人物归类,按地理位置组织,按事件组织…我不仅希望能看到每个时间切面的全局状态,也希望能看到按时间展开的过程。最好情节写的不好能回溯到之前的时间点,重新开始支线情节…

结果我发现,我根本没有办法处理这些千头万绪的事情,也没有能力把他们模块化/抽象化,以便分治它们,情节发展到中途时,根本无法控制这么发杂的一个系统,换句话说,它们失控了。

等后来学了编程,尤其是在学习面向对象和读SICP时,发现我其实在构建一个复杂系统。在程序语言中处理这些复杂关系并不困难,编程的核心就是控制复杂度,抽象则是达到这个目的最重要的工具。通过模块化、通过遵循高内聚、低耦合的设计原则,我们足以构建极其庞大复杂的系统。

我后来找到我的小说情节碎片(放在超大信封里的一叠便签),用python构建了小说的虚拟世界。之后我便可以在遗忘的时候,向程序询问人物的年龄身份,当前所在的城市,前女友是谁,上个月一共花了多少钱。接着我发现我还可以进一步把它写成类似文字冒险游戏,交互式地去写作(《黑客 计算机革命的英雄》中也有提到这种写作方法)

结果我发现了比写小说更好玩的东西,同样是构建虚拟世界,程序要好玩多啦!那么问题来了,我为什么要写小说呢,再之后我就没继续写了 :(

据说金庸老先生在写作《天龙八部》这部人物情节庞杂的小说时,有意无意用到了面向对象的方法:),至少从结果来看和面向对象构建的系统如出一辙 (有一篇文章严肃地讨论这个,感兴趣可以google一下)

即便金庸来先生没有用到面向对象这种方法(至少不自知),我们也可以用这种方法很快将天龙八部的人物/世界关系表示出来,甚至可以轻易让他们流动起来。当我们把天龙八部作成一个游戏时,我们其实就在做这件事

我相信程序语言就是罗素所期待的理想语言(我最近在写《编程语言,一种理想语言》),它清晰判然,不会像自然语言一样陷阱重重,误导你去思考那些"毫无意义"的哲学问题(维特根斯坦所消灭的哲学问题)。今天的编程语言,诸如scratch,不仅是一套抽象的符号系统,还能实际运行,与现实世界交互。当你在用它表达想法创意时,你的观念将变成现实,控制天上的四轴飞行器或是击败李世乭。程序语言连接你脑袋里的抽象世界和现实世界,这几乎就是魔法一样的存在,你输入一些咒语,面前的这个发光盒子作出反应让地球另一边的机器人一脚射门。而这种魔法面向所有人开放,你不需要取得霍格沃茨的录取通知书

关于编程的意义,我喜欢Scratch创始人雷斯尼克教授所表述的

学习编程能帮你组织、表达和分享你的想法,就像学习写作一样。这对于所有人来说都很重要。这不是学习为了编程,而是编程为了学习”

这也是我们的信念,教学编程不是要让一个孩子成为程序员,就像教学写作不是要让一个孩子成为作家,我们试图教会小孩去表达想法、分享创意以及用编程去改变生活(“教育即生活”)

我们准备怎么做

从理论上讲,理论和实践没有差别。 而在实践中,却有差别。

我喜欢Media Lab的终生幼儿园小组,喜欢他们的《爆裂》一书,也喜欢它们提出的4P方法: 项目(Projects)、同伴(Peers)、热情(Passion)、玩耍(Play)

我们会围绕这些方法构建社区和产品,Mit Media Lab在这方便已经走的很远。我们在国内想去实践它们的这些理念,目前还没有看到国内这样做的公司,如果你有看到或者你在做这件事,麻烦告诉我呢 :)

至于新公司本身的组织架构,也准备采用《爆裂》中提到的"拉"的策略来构建

我想保持核心团队的精简,我们将与开源社区进行广泛而深度的合作。对这件事有热情的朋友,我们也随时希望能把大家吸纳进来,至于方式可以很灵活,如果你对此有热情且觉得能力足够,我们随时可以沟通或是碰面。我写这篇文章本身,便是出于"拉"资源的目的,这个重要的资源就是阅读文章的你。

我想保持公司的扁平,我们甚至会把用户视为其公司组织的一部分,让他们参与社区和产品的设计中来

我不知道要做好这件事的具体路径是什么,但我相信我找到了“指南针”

尽管通向目标的道路是曲折的,但比起在既定的线路上前进,你会更快地抵达终点。选择指南针而不是地图,可以让你探索其他线路,更加充分、有效地利用绕道的机会,发现意想不到的宝藏。

我希望团队成员都喜欢这件事,我们热爱编程,喜欢捣鼓各种好玩的东西,从软件到硬件到AI,我们乐于分享,也渴望把这种愉快的体验作为一种礼物(我们的产品)带给小孩,让TA们在入门的时候,能体会到这种趣味和热情。

创业有风险,前方可能天寒地冻、路远马亡,但我们跻身在这新兴领域,也会有很多机会。但无论怎样,如果我们是出于兴趣和热情,即使是在最糟糕的情况下,我们至少依然在做着自己喜欢的事情。

以Alan J. Perils的这段话结束

我认为,在计算机科学中保持计算中的趣味性是特别重要的事情。这一学科在起步时饱含着趣味性。当然,那些付钱的客户们市场觉得受了骗。一段时间之后,我们开始严肃地看待他们的抱怨。我们开始感觉到,自己真的像是要负起成功地、无差错地、完美地使用这些机器的责任。我不认为我们可以做到这些。我认为我们的责任是去拓展这一领域,将其发展到新的方向,并在自己的家里保持趣味性。我希望计算机科学的领域绝不要丧失其趣味意识。最重要的是,我希望我们不要变成传道士,不要认为你是兜售圣经的人,世界上这种人已经太多了。你所知道的有关计算的东西,其他人也都能学到。绝不要认为似乎成功计算的钥匙就掌握在你的手里。你所掌握的,也是我认为并希望的,也就是智慧:那种看到这一机器比你第一次站在它面前时能做得更多的能力,这样你才能将它向前推进。

ps: 公司的英文名应该会用just4fun

附录

《西方哲学史》的卷一.古代哲学里谈到毕达哥拉斯时,罗素在章末里说:

我相信,数学是我们信仰永恒的与严格的真理的主要根源,也是信仰有一个超感的可知的世界的主要根源。几何学讨论严格的圆,但是没有一个可感觉的对象是严格地圆形的;无论我们多么小心谨慎地使用我们的圆规,总会有某些不完备和不规则的。这就提示了一种观点,即一切严格的推理只能应用于与可感觉的对象相对立的理想对象;很自然地可以再进一步论证说,思想要比感官更高贵而思想的对象要比感官知觉的对象更真实。神秘主义关于时间与永恒的关系的学说,也是被纯粹数学所巩固起来的;因为数学的对象,例如数,如其是真实的话,必然是永恒的而不在时间之内。这种永恒的对象就可以被想象成为上帝的思想。因此,柏拉图的学说是:上帝是一位几何学家;而詹姆士·琴斯爵士也相信上帝嗜好算学。与启示的宗教相对立的理性主义的宗教,自从毕达哥拉斯之后,尤其是从柏拉图之后,一直是完全被数学和数学方法所支配着的。

引述这段的目的是想说明,在哲学上,尤其是形而上学,数学重要性毋庸置疑,它坚定了许多伟大哲学家的信念,从柏拉图到康德。数学让它们相信一个超感的世界的存在和坚固性。但抛开形而上的理由不谈,就学习抽象来说,我相信学习编程,或者说学习程序语言是更好的路径