趣味编程
摘要
Christopher Phiri 的演讲稿《娱乐式编程》探讨为乐趣而编程的理念,介绍五种娱乐式编程风格,并鼓励开发者通过低压力实验保持对编程的长期热情。
暂无内容
查看缓存全文
缓存时间: 2026/10/14 00:59
# Christopher Phiri
来源:https://www.cphiri.dev/presentations/recreational-programming
## 趣味编程
你们居然还有钱拿?
## 举手示意:
你们有多少人是因为觉得有趣才学编程的?
## 第 1 部分
## 什么是趣味编程?
## 定义
为了编程本身的乐趣而编程 \- 不是为了工作,不是为了钱,也不是为了外部要求\。
## 它是什么样的:
- 因为好奇事物如何运作而动手构建
- 探索新语言,只为体验一下用起来是什么感觉
- 解决只存在于你脑海中的问题
- 为你实际上并没有遇到的问题创造工具
- 编写让你会心一笑的代码
## 它不是什么:
- 副业或潜在的创业项目
- 为职业发展而提升技能
- 一步\-一步地跟着教程做
- 为面试而埋头刷编程题
- 构建别人期待你构建的东西
**关键区别:**内在动力与外部压力
## 为什么它很重要:
- 通过重新找回内在动力来预防倦怠
- 通过低\-风险的探索培养直觉
- 保持对编程这门手艺的长期热情
- 往往带来意想不到的突破与收获
## 第 2 部分
## 趣味编程的不同类型
## 类型 1:实时探索者
- 通过直播或博客公开构建过程
- 展示混乱的过程:死胡同、错误、推倒重来
- 社区成为督促自己坚持下去的力量和活力来源
- 项目涵盖实用工具到纯粹的实验
## 类型 2:深度钻研者
- 痴迷于理解事物究竟如何运作
- 构建复杂系统的简化实验版本
- 重视学习胜过交付
- 往往有多个“用于学习”的实现版本
## 类型 3:创意技术家
- 将代码用作艺术媒介
- 生成艺术、音乐合成、交互装置
- 让技术服务于创作构想
- 经常将编程与其他领域相结合
## 类型 4:问题解决者
- 用代码解决自己的烦恼
- 制作解决微小却恼人问题的工具
- 采用对自己管用的“够用就好”的解决方案
- 经常无意间做出有用的东西
## 类型 5:语言探索者
- 不断尝试新语言和新范式
- 用不同语言实现相同的概念
- 被不寻常或实验性的语言吸引
- 将代码作为满足求知欲的方式
## 第 3 部分
## 所有类型的共同模式
## 允许自己构建“没用”的东西
- 不需要商业理由
- 好奇心就是充分的理由
- 失败的实验仍然能带来宝贵的经验
**关键认识:**投资回报率不适用于趣味编程
## 跟随热情,而非计划
- 兴奋感消退时就换个项目
- 多个搁置的代码仓库意味着探索,而非失败
- 无聊能告诉你自己对什么感兴趣
**关键认识:**无聊是一种信息,而非失败
## 记录探索历程
- 分享过程,而不只是结果
- 教别人会迫使自己理解得更深入
- 与走在相似道路上的人建立联系
**关键认识:**讲述你做决定的过程
## 拥抱学习过程
- 在新领域保持初学者心态
- 坦然接受自己有所不知
- 过程重于成品
**关键认识:**进步重于完美
## 第 4 部分
## 你的个人编程游乐场
## 环境
- 专门的“实验”文件夹/代码仓库
- 无需考虑生产环境:配置尽量简单,没有 CI/CD 压力
- 快速初始化项目的脚本
- 版本控制可选
## 你可以尝试的方法
- 每周实验\(花 2\-4 小时探索一个新事物\)
- 从零构建挑战\(构建你所用工具的简化实验版本\)
- 解决自身烦恼的项目\(解决你自己的恼人问题\)
- 教学项目\(一边构建,一边讲解\)
- 跨语言挑战\(同一个问题,不同的语言\)
## 心态转变
- 用“如果……会怎样”代替“我应该……”
- 进步重于完美
- 学习重于交付
- 好奇心重于生产力
## 第 5 部分
## 现实中的真实案例
## Zikani Nyirenda \-*实用型实验者*
- 创造各种随兴但实用的工具:浏览器自动化、文件整理工具、Git 实用工具
- 在 Go、Rust、Python、Vue 和 React 之间进行实验
- 以“今天我能解决什么小问题?”的思路编程
- 用代码解决自身烦恼的典范
github\.com/zikani03 (https://github.com/zikani03)
## Jeremiah Chienda \-*全栈实验者*
- 探索不同的架构模式和框架
- 在学习新技术的同时构建解决实际问题的工具
- 展示趣味编程如何覆盖整个技术栈
github\.com/liwoo (https://github.com/liwoo)
## Tsoding Daily \-*实时探索者*
- 每天直播 4\+ 小时,从零构建各种随兴项目
- 构建了自己的文本编辑器、编程语言和光线追踪器
- 展示完整过程,包括失败和调试
- 对一切都抱着“来看看如果……会发生什么”的态度
## ThePrimeagen \-*精力充沛的问题解决者*
- 创建 CLI 工具和 Neovim 插件,优化个人工作流程
- 对开发工具和性能充满富有感染力的热情
- 对其他开发者的代码/方法作出反应并加以点评
- 让优化和工具开发像极限运动一样刺激
## Casey Muratori \-*系统深度钻研者*
- Handmade Hero:通过直播从零构建一款完整的游戏
- 解释每一行代码和每一个系统设计决策
- 不用库,从基本原理出发理解一切
- 展示如何在不使用框架的情况下构建现代软件
## Ben Eater \-*教学型构建者*
- 在面包板上搭建计算机,解释每一个组件
- 制作视频系列,讲解 CPU、内存和网络究竟如何工作
- 花几个月构建花 5 美元就能买到的东西
- 让硬件基础知识通俗易懂、引人入胜
## Dan Luu \-*深度技术探究者*
- 撰写详细的博客文章,探究性能方面的谜题
- 对一切进行基准测试:键盘、终端、编程语言
- 将“为什么 X 这么慢?”的好奇心转化为数千字的研究
- 展示出于兴趣的探究如何揭示整个行业的问题
**每个人都代表着一条重新找回编程乐趣的不同道路**
## 最后的挑战
选择一个实验:
1. 为你每天使用的某个工具构建一个尽可能糟糕的版本
2. 花 2 小时体验一门你一直好奇的语言
3. 记录自己解决一个小问题的过程
4. Fork 一个有趣的项目,随意折腾一下
5. 尝试现场编程或直播你的过程
**唯一的规则:**不再有趣时就停下来\。
## 最后的思考
“目标不是成为这些程序员中的任何一个,而是记住你为什么开始编程,并在发展职业生涯的同时,让那份好奇心保持鲜活\。”
相似文章
Why Am I Still Programming
本文探讨了在行业倦怠背景下,开发者为何坚持编程,强调了社区建设和创造性过程的重要性,而非单纯的代码产出。
享受编程,依然无妨
作者在 Hacker News 上弥漫的 AI 悲观情绪中撰文,主张即使 AI 能自动生成代码,个人依然可以纯粹为了乐趣在业余时间手写代码、探索类型安全与递归模式等编程思想,享受编程并不需要经济上的正当理由。
以理论构建的视角阅读编程
本文推荐 Peter Naur 的著作《编程即理论构建》,主张编程的本质在于构建和传达对软件的心理模型,而不仅仅是编写代码。
编写玩具软件是一种乐趣(2025)
一篇倡导编写玩具程序以深入理解软件并重新发现编程乐趣的博客文章,反对过度工程化和软件开发的工业化。
In Context
一场关于上下文的演讲,主张大多数开发者从事的是“信息编程”而非机制编程:静态类型适合人造的、内部的机制,而面向外部世界的大型系统必须是动态的、灵活的、可观测的,并阐述了 Clojure 的信息导向方法。