演讲开场反问观众你们竟然有报酬?并让大家举手示意,有多少人最初是因为觉得有趣才学编程。接着第一部分解释什么是 Recreational Programming:为编程本身的乐趣而写码,不为工作、金钱或外部要求。它可能表现为因好奇而构建、探索新语言或解决只存在于自己脑中的问题,而非副业、职业发展、跟着教程做或面试刷题;关键区别在于内在动机与外在压力。
正文
休闲编程
你们居然还有钱拿?
举手看看:
你们中有多少人是因为好玩才学编程的?
第一部分
什么是休闲编程?
定义
编程本身就是为了编程的乐趣——不是为了工作,不是为了钱,也不是为了外部要求。
它长什么样:
- 因为好奇某样东西的原理而去把它做出来
- 探索新语言,只为看看它写起来是什么感觉
- 解决只存在于你脑子里的问题
- 为你实际上并没有的问题造工具
- 写出让你自己会心一笑的代码
它不是什么:
- 副业或有潜力的创业项目
- 为职业晋升而提升技能
- 一步步跟着教程做
- 为了面试刷编程题
- 做别人期待你做的东西
关键区别:内在动机 vs. 外部压力
为什么重要:
- 通过重新连接内在动机来防止倦怠
- 在低风险的探索中培养直觉
- 维持对手艺的长期热情
- 常常会带来意想不到的突破和学习
第二部分
休闲编程的光谱
风格 1:直播探索者
- 通过直播或博客公开构建
- 展示混乱的过程:死胡同、bug、重来
- 社区成为责任感和能量来源
- 项目从实用工具到纯实验都有
风格 2:深潜者
- 执着于理解事物真正的运作方式
- 构建复杂系统的玩具版
- 重视学习甚于交付
- 常常有多个“教学用”的实现
风格 3:创意技术专家
- 把代码当作艺术媒介
- 生成艺术、音乐合成、交互装置
- 技术服务于创意愿景
- 常常把编程和其他学科结合起来
风格 4:问题解决者
- 用代码挠自己的痒处
- 做一些解决小烦恼的工具
- 对自己管用的“够好”方案
- 常常意外做出有用的东西
风格 5:语言探索者
- 不断尝试新语言和范式
- 用不同语言实现同样的概念
- 被不寻常或实验性的语言吸引
- 把代码当作求知欲
第三部分
所有风格的共同模式
允许做“没用”的东西
- 不需要商业理由
- 好奇心本身就是充分理由
- 失败的实验也能教会有价值的东西
关键洞察:ROI 不适用于休闲编程
跟着能量走,而不是计划
- 兴奋感消退时就换项目
- 多个被放弃的仓库是探索,不是失败
- 无聊是关于你兴趣的数据
关键洞察:无聊是数据,不是失败
记录过程
- 分享过程,不只是结果
- 教学会迫使你理解得更深
- 能和走在相似路上的人建立连接
关键洞察:讲述你的决定
拥抱学习过程
- 在新领域保持初学者心态
- 能和“不知道”安然相处
- 过程重于产品
关键洞察:进步重于完美
第四部分
你的个人编程游乐场
环境
- 专门的“实验”文件夹/仓库
- 没有生产环境顾虑:最小配置,没有 CI/CD 压力
- 快速初始化项目的脚本
- 版本控制可选
可以尝试的方式
- 每周实验(花 2-4 小时探索一个新东西)
- 从零造轮子挑战(给你在用的工具做个玩具版)
- 挠痒项目(解决自己烦人的小问题)
- 教学项目(一边讲解一边做出来)
- 跨语言挑战(同一个问题,用不同语言解决)
思维转变
- 用“如果……会怎样”代替“我应该……”
- 进步重于完美
- 学习重于交付
- 好奇心重于生产力
第五部分
现实中的真实例子
Zikani Nyirenda——实用实验者
- 做各种随机但有用的工具:浏览器自动化、文件整理器、Git 小工具
- 在 Go、Rust、Python、Vue 和 React 之间做实验
- 以“今天我能解决什么小问题?”的方式写代码
- 是用代码挠个人痒处的完美例子
Jeremiah Chienda——全栈实验者
- 探索不同的架构模式和框架
- 一边学新技术,一边做解决真实问题的工具
- 展示休闲编程如何贯穿整个技术栈
Tsoding Daily——直播探索者
- 每天直播 4 小时以上,从零做各种随机项目
- 自己做过文本编辑器、编程语言、光线追踪器
- 展示完整过程,包括失败和调试
- 对一切都抱着“我们看看如果……会怎样”的态度
ThePrimeagen——高能问题解决者
- 为个人工作流优化做 CLI 工具和 Neovim 插件
- 对开发工具和性能有着感染力极强的热情
- 反应并点评其他开发者的代码/做法
- 让优化和工具开发看起来像极限运动
Casey Muratori——系统深潜者
- Handmade Hero:在直播里从零做一个完整游戏
- 解释每一行代码和系统设计的决策
- 不用库,从第一性原理理解一切
- 证明不用框架也能做出现代软件
Ben Eater——教育型构建者
- 在面包板上搭计算机,讲解每一个元件
- 制作视频系列,讲 CPU、内存和网络究竟怎么工作
- 花几个月去做你花 5 美元就能买到的东西
- 让硬件基础变得易懂又迷人
Dan Luu——深度技术调查者
- 写详细博客文章,调查性能谜团
- 什么都做基准测试:键盘、终端、编程语言
- 把“为什么 X 这么慢?”的好奇变成数千词的研究
- 展示休闲式调查如何能揭示整个行业的问题
每一个都代表着重回编程乐趣的不同路径
最后的挑战
选一个实验:
- 给你每天用的工具做一个最烂的版本
- 花 2 小时试试你一直好奇的某门语言
- 记录自己解决一个小问题的过程
- Fork 一个有趣的项目并随便改
- 试试直播写代码,或把你的过程直播出来
唯一规则:如果不再有趣,就停下。
最后的想法
“目标不是成为这些程序员中的任何一个,而是记住你最初为什么开始写代码,并在职业生涯中保持那份好奇心。”
评论
讨论整体温暖而自省,多数人从这份“娱乐编程风格”的演讲里认出自己,并捍卫为兴趣、学习和折腾而写的价值;主要分歧在于:半成品的玩具项目是否还需要走向“对他人有用”,以及人工智能究竟是在复兴还是终结这种纯为乐趣的编程。
认为娱乐编程的价值在于为兴趣折腾和学习,不该被完成度或职业回报绑架
- 这份演讲把多种风格摊开后让人释然:有人承认自己会照着大项目开个小型复制品,然后寄托过大期望,反而因为没完成而愧疚,甚至被“不许碰别的东西”困住;但也有人以现学 Common Lisp、用 CFFI 去接 GTK4、终端转义序列和 libssh2 为例,说明探索过程比产物重要。做了二十多年业余项目的人也表示,自己追的就是乐趣,不该期待转行或金钱回报。(较多人) > 我追求的是乐趣,因此本来就不该期待职业转换或金钱回报。(@markus_zhang)
认为只为自己写的玩具项目终会带来空虚,应该尝试做对他人有价值的软件
- 重新发明轮子本身很有趣,但如果一直对一堆半成品感到不满足,就该考虑写别人真正会用的东西;努力满足他人虽然常失败、令人沮丧,但看到有人享受自己的软件,会带来自豪、被需要和成就感。(少数人) > 为自己写程序和让别人觉得有价值的程序,前者只是好玩,后者才让人感到成就与被需要。(@GMoromisato)
认为“解决问题型”不是一种风格,而是把编程融入日常的生活状态
- 有人反对把“解决问题”降格成风格之一,认为它打破整个前提:真正的问题解决者像对待木工、缝纫或做饭一样,每天和代码生活在一起;如果有人觉得不用人工智能写代码难到必须把它从日常生活里隔离出来,那才奇怪。(少数人) > 如果有人觉得不用人工智能写代码难到必须把它从日常生活里隔离出来,那我怀疑他们能不能给自己做顿早饭。(@sublinear)
认为复古计算机和亲手输入代码的体验才是编程乐趣的本源
- 在 MiSTer 上进入 TI-99/4A 模式、用 TI BASIC 重定义字符和画图,会让人像普鲁斯特尝到玛德琳蛋糕一样,突然想起自己为什么爱上编程;从 8 位家用机、杂志长列表和汇编起步的回忆,也会被描述为“只是觉得好玩”的初心。(少数人) > 在 MiSTer 上用 TI BASIC 重画字符时,我想起了自己为什么爱上编程。(@bitwize)
认为人工智能正在终结娱乐编程,带来存在主义焦虑
- 有人觉得过了今年这一切都结束了,因为人工智能把一切都“杀死”了;也有人承认大语言模型让自己对把编程继续当爱好产生了存在主义式的迷茫。(少数人) > 可惜过了今年这一切都结束了,因为人工智能把一切都杀死了。(@Hydraulix989)
认为大语言模型反而让娱乐编程进入更好的时代
- 有人从拨号上网做网页一路走来,表示如今大语言模型带来的变化令人惊叹,业余程序员从未有过更好的时代;关键不只是做项目,而是展示如何驾驭新工具。(少数人) > 作为从拨号上网时代做网页的人,我对大语言模型感到无比惊叹,这是当业余程序员最好的时代。(@monkmartinez)
认为业余编程曾是招聘信号,却也暗含下班后继续用爱发电的期待
- 业余编程过去是从业招聘的加分项,内在动力有时比学历更值钱,公司甚至鼓励带薪做副业防倦怠;但也有从业者反感这种期待——似乎下班后还得靠爱发电才能跟上。如今大语言模型又让“会用人工智能做业余项目”变成新的能力证明,给初级开发者造成两难。(少数人) > 业余编程曾是从业招聘的加分项,但也有人反感:似乎下班后还得靠爱发电才能跟上。(@prophesi)
认为演讲网站本身体验糟糕,导航和配色都在劝退
- 不少人吐槽这个展示网站:滚动和导航让人觉得受限,键盘操作提示也不清晰;还有人直说网站很痛苦,并建议把伤眼的白字黑底换成灰底黑字。(较多人) > 这个网站用起来挺痛苦。(@vandyswa)
有价值的补充
- 有人回忆自己 1981 年从 Radio Shack 买回一台几乎买不起的 4K 8 位电脑接上电视,靠杂志上的黑白长列表和排错入门;为了学汇编,竟按电话簿打给摩托罗拉,对方免费寄来处理器手册,那张紫色参考卡他至今留着。第一个赚钱程序是在本地用户组卖 5 美元一张的磁盘工具,一早上赚了 140 美元并拿到首批 28 个客户;此后四十年、三家创业公司、上百万客户,起点只是觉得好玩。
- 有人给出一个精巧类比:画家拥有画布,程序员拥有的则是缓冲区。(@xyzzy_apps)