CodeLab 漫记

引子

都说悲剧就是将美好的东西砸碎给人看,人们都熟悉这样的叙事结构。可如果美好的东西不是被砸碎而是仅仅凭空消失,叙事中便无法找出一个砸碎美好的恶人,这样找不到恶人的难过,远甚于美好消失本身。我们都太需要一个恶人来承载想象中的阴暗龌龊,因为我们更愿意相信只有阴暗龌龊才会毁掉美好的事物。没有人想要生活在一个美好事物会无缘无故消失的世界,这会令人怀疑当下,更怀疑未来。

在 CodeLab 最后的日子里,我近距离见证了我眼中计算机教育领域最为美好的事物的消失。“难过”是一种过于简单的感情,CodeLab 的解散,更像是一场无疾而终的爱情,当人们谈起它曾经的美好时,会唏嘘慨叹,也会疑惑不解,以及不忍想起的无奈。

从我 7 月 7 日来到 CodeLab,到它 7 月 21 日解散,十五天的时间完全不够了解 CodeLab 的全貌,我能做的也仅仅是用不同的碎片拼凑出它消失之前的样子。

中信广场

CodeLab 的办公室在中信广场,作为广州的老地标,租金不菲。办公室不大,大概 6、70 平的样子,装修得十分简洁。玻璃大门与大楼的玻璃幕墙相对而立,一面墙上打满了柜子,另一面墙上挂了两面镜子以及 CodeLab 的 Logo。办公室的正中间摆了四张宜家买来的可升降办公桌,玻璃幕墙边上还有一个贯通的适合站立办公的吧台。作为一个完全依靠资助运行的非营利组织,办公条件称得上奢侈。

CodeLab 在 14 楼,第一天到访时,我是有些忐忑的,出了电梯口就拍了一张楼层导示。当我真正踏入 CodeLab 办公室时,取代好奇的是一种隐隐的失望,它比我预想中的小,也比我预想中的乱。一开始我很难相信,那些充满想象力的项目就是在这样一个紧凑而杂乱的环境中诞生的。但很快我就发现,杂乱之中隐藏着太多的设备和装置,这里像是一个游乐场,为了下一次更快的开始玩耍,没人会把所有玩具分门别类地收好。

这里拥有计算机教育领域绝大多数的外设。桌子上,柜子里,盒子里,随处可见 Micro:Bit 编程板,还有十多个品牌的配合 Micro:Bit 使用的传感器。Cozmo 机器人也随处可见,摆在一起都像是一群 Cozmo 在密谋些什么。还有各种形态的树莓派,以及数不清的排线,数不清的乐高。整个空间中所有的灯,窗帘,包括门禁都是可以随时操作的外设,门口的两个专业级的舞台灯也能很方便地接入 Scratch 中,对它们编程与对 Micro:Bit 和 Cozmo 编程没什么不同。还有数不清的小玩意儿,比如 Lego Mario,深度摄像头,魔杖,基于 Linux 的开源游戏掌机……

CodeLab 最初的理念是“传递编程乐趣”,在这样的环境中编程很难没有乐趣,这一点我深信不疑。

种瓜

我和种瓜是偶然认识的。当时我写了一篇关于编程教育发展史的文章,被很多业内人士转发,我也被拉进了某个行业交流群,于是在信息流中经常能看到有人分享 CodeLab 的相关内容。一日,某个群里讨论起了 Scratch 和 Squeak 的关系,气氛一度十分紧张,信心膨胀的我便跳出来充当和事佬,向双方提问,期待双方进一步澄清自己的观点。后来群主@了种瓜,种瓜用专业的视角讲解了 Squeak 和 Smalltalk 如何影响 Scratch,以及“消息模块”为什么是 Scratch 中最具价值的指令。

当时的我十分汗颜,感觉自己问出的问题在网络和书籍中都找得到答案,而自己竟还敢大言不惭地谈论编程教育的历史。写第一篇文章时,我只在资料的边边角角里看过 Scratch 受到 Squeak 的影响,甚至没有细查 Squeak 究竟是什么,更不知道什么是 Smalltalk。正是因为这次讨论,我开始关注 Alan Kay 以及更宏大的计算机历史,从 Dynabook 到 Smalltalk 再到 Etoys&Squeak。在查资料的过程中我一度怀疑自己开启了一个我根本不可能完成的选题,但第一篇文章的转发和关注让我不得不继续深挖下去。之后每每遇到和 Alan Kay 或 Smalltalk 相关的疑惑,总会和种瓜请教,他经常会转给我大段大段的笔记以及论文连接,有时我感觉自己是在和一个数据库对话。

此次来广州并不是和种瓜第一次见面,在 2020 年重庆教育装备展我也短暂地和他有过交流,那时的他讲起 Smalltalk 就充满激情。这次来到 CodeLab,更加发现他不仅充满激情,而且对计算机领域充满了哲学性的思考。他读过罗素大部分的书,称自己是不可知论者。在思考问题时,他几乎不会从自己出发为观点寻找证据,而是不断地对问题的本质进行发问。他对很多东西都有深刻的理解,但并不会为这些结论所累,仍然能对问题保持开放,随时准备校正认识与现实的偏差。

他和我说起他成长于 Unix 社区,在那样的黑客文化中代码至上,即使很早知道 Alan Kay 发明了 GUI 用户界面,也并没有对这个人产生什么兴趣,还是将图形界面看作给无能(不会写代码)的人的玩具。但当他读到《爆裂》之后开始关注 Scratch,然后又在一本日本人写的 Scratch 相关的书的附录中读到了 Alan Kay 1972 年设想 dynabook 的论文。种瓜惊讶于 Alan Kay 在当时就表述了现代的计算机,他的想法影响了现今的整个计算机产业。更夸张的是现代的计算机即使外形和功能上和 Alan Kay 描述的差不多,但 Alan Kay 的理念更加宏大,完全可以导向一个更好的现实。为所有孩子准备的电脑对种瓜冲击极大,也终于理解了 Scratch 为什么会出现。然后继续读到 Mindstorms 建构主义的视角,开始反思黑客社区中经验性的方法论。说到兴起时,还会拿出讲解 Unix 社区文化的《大教堂与集市》,曾经他也会特别讨厌“大教堂”,但现在他也接受 Smalltalk 设计上的方法论,认为某些结构是必要的。这样的例子还有很多,这两周时间里,我看到了种瓜很多次展现出这样的能力。

snownstone

snownstone 是位北方姑娘,本科学习心理学,研究生学习认知神经心理学,她是被种瓜在做的东西吸引到 CodeLab 来的。据说最初她的 coding 能力并不熟练,但现在她在做的项目我是根本看不懂的。snownstone 在管理 CodeLab 的微信、博客和知乎,第一次认识时仅仅是沟通转载文章。她平时很安静,但当伙伴们有需要时会十分热心地帮助别人。当 kaikai 回来之后,是她提出收拾桌子,甚至腾出她的位置位置给我,她则搬到桌子边上。当我找不到摄像头时她会帮忙一起找,当我的 Scratch 崩溃后她会找后端的开发帮我恢复文件,当我连不上舞台灯时跟我一起 Debug。当麦可要发布新的博客文章时,snownstone 会认真地看完然后提出自己的疑问。但她也会骑马,登山,听摇滚乐。我还记得见面后她问我第一个问题是四川有很多好玩的地方,你喜不喜欢户外?我的回答十分局促,也十分不当,感谢她的包容。

据种瓜说,CodeLab 里很多富有表现力的项目都是 snownstone 做的,包括 CodeLab 的网站。她介绍自己做过一些音乐相关的项目,用音乐控制灯光,现在想要分析音乐中的情绪。

麦可

第一天来到 CodeLab 时,只有麦可和种瓜在。他一言不发,一直在研究 scratch 项目,反复修改课程。他曾在一家做少儿编程教育的公司做课程设计,同样被种瓜在做的事的丰富性吸引,去年招募了一批孩子上暑期课,前几个月在 CodeLab 从头到尾做完了创意计算和交互计算的课程并无偿发布在网络上。谈到下一步的计划,他说到他想在小洲村做一个面向社区的编程俱乐部,继续把编程带给更多的孩子。我们几乎每天都会一起吃饭,在餐桌上他会谈起很多自己对教育的思考,他认为那些处在社会不利地位的孩子更有必要接触计算机,这将为他们提供更多的可能性。

kaikai

kaikai 是我最后见到的 CodeLab 成员,那天他来了就很兴奋地向种瓜分享自己新买的电脑如何符合自己想需求,安装 Linux 之后如何获得不亚于苹果的体验。snownstone 和麦可看到这个情景会相视一笑,只有种瓜认真地回应着 kaikai 的技术狂热。直到最后一天我都没有和 kaikai 说过很多话,但最后的散伙饭上,我问了他为什么来到 CodeLab。他给我讲了很多,从他儿时的学习经历到他高考结束后参加黑客马拉松,再到后来频繁参加各种技术沙龙。他对技术的热情十分纯粹,搞明白,做出来,对他都有极强的吸引力。他认识种瓜是因为他在查 Smalltalk 相关的内容时,几乎都会指向种瓜的博客,所以选择来这里向高人学习。于是我问他 CodeLab 是否满足了他的预期,他说 CodeLab 大大超出了他的预期。

非营利组织

CodeLab 的性质是非营利组织,资助它的人是一位富豪,不仅承诺持续资助,而且给予大家充分自由。所以 CodeLab 的压力并不来自外界,更多是来自每个人的内心。种瓜说,每个人都会间歇性地陷入焦虑,尤其是做不出东西的时候。虽然没有人会评价,但如果不做出些什么就会陷入对自我价值的怀疑,花费这么多时间精力,做出来的东西到底产生了什么价值?或者是否真正产生了价值?种瓜还说,很长一段时间,CodeLab 的成员们会折腾到很晚,因为太想把项目做出来,有些同事会折腾到凌晨三点,甚至周末回家也停不下对于项目的思考和实验。我能理解他的描述,因为我在这里的第二个周末就在 CodeLab 的办公室里泡了两天。在这里驱动大家的不是 KPI 或 OKR,而是单纯的“我想做”。按照马克思的解释,劳动本身是人类的需求,并且劳动是改造世界的过程。那么 CodeLab 的工作状态就是一种完全不被资本异化的劳动,每个人都在按照自己的想法让世界变得更加美好。

这种松散的探索是很有意义的,在任何一个人的方向上都有意义,也都共同构成了作为整体的 CodeLab。但是这样的方式却无法让人感受到同伴的支持,因为每个人的想法和关注重点各不相同,也都极其克制不去占用他人的时间和精力。是的,CodeLab 的成员身上都有一种极为克制和内敛的气质,这可能是最为可贵的品质,而他们每一个人都比我见过的人更加克制和内敛。他们每个人都十分愿意帮助他人,但又都不愿意占用他人的注意力。因为他们对自己的注意力十分珍视,几乎不会有人连续看手机超过五分钟,这种对注意力的珍视让我也不忍打扰他们。甚至吃饭这样的事,他们也会不打招呼各吃各的,看似冷漠,实则是对个人边界无限的尊重,初来乍到的我则更像是闯入者,在一开始并未完全理解这种行为背后的逻辑。

并不是人们不想帮助彼此,而是无法帮助彼此,于此同时每个人又都在各自的想法中加速燃烧。

价值危机

由于 CodeLab 成立之初的愿景描述过于模糊,所以很难对所做的事情形成稳定的价值评估。但我始终觉得清晰明确的目标一定不能聚集这样一群人。过于清晰的目标从来不令人兴奋,那只是一个技术问题。种瓜说有时他会反问自己,如果自己仅仅做自己感兴趣的事情,那为什么不在家研究?为什么在不确定产生的东西是否有价值的情况下接受资助?

价值危机本身其实是一种奢侈,很多人有生存危机,很少人有价值危机。能够感受价值危机隐含的前提是相信自己能够创造价值。

结束

最后一天的时候我并不知道该以何种情绪面对,甚至不知自己如何表现才是得体的。我贪婪地将自己在这里做的东西收集起来装进包里,那是一些用于机器识别的 Marker 和作为基座的方形纸板。种瓜还送我两个彩光灯泡,我也没有拒绝。其实前一天他说每个人都可以从 CodeLab 选一件东西带走时我就隐约觉得他们并不会带走其中的任何东西,只有我作为外来的闯入者有着这样怪异的收集癖。我并未真正进入和成为 CodeLab 精神的一部分,所以只能抓住一些形而下的东西作为留念。要离开的时候,snownstone 拿了一把 CodeLab 的贴纸,我看到后也拿了一把,但我觉得我可能并不敢高调地宣称自己与 CodeLab 有什么关系,因为与之相比,我显得庸俗且乏味。