CodeCrafters 的 73 个硬核编程项目清单:一份按经典论文组织的自学地图
阅读时间: 大约 15 分钟
CodeCrafters 的 73 个硬核编程项目清单:一份按经典论文组织的自学地图

2025 年 4 月 14 日,编程学习平台 CodeCrafters 的开发者 Karan Kalra 与 CEO Sarup Banskota 在官方博客发布了一篇 18 分钟阅读量的长文《73 Programming Project Ideas to Inspire and Challenge You》。与网上常见的”做个待办清单、做个天气应用”式创意列表不同,这份清单的每个项目都明确指向一份权威规范、经典论文或权威教程:BitTorrent 项目直接挂官方协议规范,Raft 项目挂 Raft 论文,Diff 项目挂 Myers 1986 年论文,SQL 优化器项目挂 DuckDB 优化器讲解。本文基于官方全文逐篇通读,对清单做归类、机制拆解与适用性分析。
一、背景动机:为什么是”从零实现”而不是”调 API”
官方开篇直接批评互联网上的项目创意”basic and dull”(基础且乏味),主张选择”teach a lot and are fun to build”(能教会很多东西、做起来有趣)的项目。这背后是 CodeCrafters 一贯的产品立场:通过从零复刻真实系统(Git、Redis、Docker、SQLite 等)来理解底层,而不是在现成框架上堆叠业务代码。
清单的组织逻辑不是按语言、也不是按难度,而是按”你将掌握什么底层原理”来描述每个项目。例如 BitTorrent 客户端条目写的是”learn how P2P networking works”,容器条目写的是”kernel namespaces, chroot, process isolation”,SQLite 条目写的是”B-trees”与”how SQLite stores data on disk”。也就是说,项目名只是载体,论文/规范才是学习目标。
二、73 个项目的领域归类
通读全文后,可以把 73 个项目归入六个大致方向(官方原文并未分类,以下归类为本文整理):
| 方向 | 代表项目(官方编号) | 挂靠的权威资料 |
|---|---|---|
| 操作系统与系统底层 | 5 容器、18 FUSE 文件系统、35 GDB 调试器、58 Malloc、63 Shell、65 Make、56 无锁数据结构 | 容器原理文章、GDB 内部结构、Marwan Burelle 的 malloc 教程、Make 非递归论文 |
| 网络与分布式 | 1 BitTorrent、8 DNS 服务器、10 Raft、41 NTP 时间同步、45 Mesh VPN、51 Kafka Broker、55 TCP/IP 协议栈、57 负载均衡、73 去中心化互联网 | BitTorrent 规范、Raft 论文、RFC 5905、Kafka 协议指南、IETF TCP/IP 文档、Scuttlebutt 与 IPFS |
| 数据与存储 | 12 Bitcask、21 Redis 克隆、25 SQLite、42 HyperLogLog、43 SQL 优化器、52 知识图谱、38 Wikipedia 搜索 | Bitcask 论文、Redis 官方文档、Google HyperLogLog 论文、DuckDB 优化器文章 |
| 图形、游戏与仿真 | 14 Dangerous Dave、47 光线追踪、54 GBA 模拟器、37 国际象棋、70 OpenGL 渲染器、33 立体视觉深度估计 | GBATEK 文档、《Ray Tracing in One Weekend》、chess programming wiki、Middlebury 数据集 |
| 算法与 AI | 2 Wordle 求解器、19 量子门模拟、36 从零神经网络、62 随机森林、31 进化设计、15 Myers Diff | 信息论/熵、Bernstein-Vazirani 与 Simon 算法、Karpathy 教学视频、遗传算法资料 |
| 完整应用复刻 | 27 Dropbox、40 TikTok、49 Messenger、59 Netflix、50 亚马逊配送路径、28 Google Maps、30 去中心化协作文档 | 系统设计文章、R-tree 原始论文、CRDT 数据结构文章、VRP 算法对比 |
三、几个代表性项目的机制拆解
3.1 Raft 共识(#10)与 Kafka Broker(#51)
Raft 条目要求”implement the RAFT protocol from scratch to support distributed computing”,学习目标明确写为 consensus、failure recovery、fault-tolerant distributed systems;Kafka Broker 条目则要求实现 topic 创建、produce/consume 请求,重点是并发、竞态条件与分布式日志。两者构成分布式系统学习的一对:前者解决”多副本如何达成一致”,后者解决”日志如何被生产和消费”。
3.2 负载均衡与”双随机选择”(#57)
负载均衡项目要求实现请求分发、健康检查与会话保持。官方在配图旁直接引用了”power of two random choices”(双随机选择)这一经典结论:不从全部后端中挑最优,而是随机取两个、选负载较轻的一个,效果接近全局最优。

图中横轴为 Cached load refresh interval(缓存负载刷新间隔),纵轴为 Mean queue time(平均排队时间):Random pick 曲线在约 18 的位置几乎走平,Best of 2、Best of 3 随间隔缓慢上升,而全量 Best 曲线随间隔拉长急剧恶化——这正是”只看两个候选”在工程上性价比极高的直观证据。需要注意,这张图是官方为说明算法引用的外部研究图,并非 CodeCrafters 自己的实测数据,坐标轴刻度也未标注单位。
3.3 Google Maps 与空间索引(#28)
地图引擎项目要求索引道路、地形、地标与行政区,学习空间索引、范围查询与缩放层级抽象。官方建议先实现 R-tree 原始论文,或用更简单的 Quadtree(四叉树)替代,数据可使用 Natural Earth 与 GeoFabrik 开放数据集。

四叉树把二维空间递归四等分,查询时只遍历与目标范围相交的节点,是比 R-tree 更易上手的入门方案。
3.4 程序化生成与确定性宇宙(#11)
程序化填字游戏条目顺带引出 No Man’s Sky:官方称该游戏是”largest deterministic game till date”,其程序化开放世界包含 18,446,744,073,709,551,616 颗行星(即 2 的 64 次方),所有星球由种子算法确定性生成,无需手工建模。官方建议可从 Wave Function Collapse 算法入手。

3.5 Git(#34)与 Malloc(#58)
Git 条目要求实现 init、commit、diff、log、branch,学习内容寻址存储、哈希与树;官方特别提到 Linus Torvalds 用 10 天写出 Git,推荐《Write yourself a Git》。Malloc 条目则从指针、堆、对齐、碎片与系统调用入手理解内存分配。这两个项目正是 koala-oss 点评中最推荐”彻底解耦黑箱”的方向。
四、关键事实核对
| 事实 | 官方出处口径 |
|---|---|
| 清单规模 | 73 个项目(标题与正文编号 1–73 一致) |
| 发布时间 | Apr 14th, 2025,标注 18 min read |
| 作者 | Karan Kalra(Developer, CodeCrafters)、Sarup Banskota(CodeCrafters CEO) |
| No Man’s Sky 行星数 | 18,446,744,073,709,551,616(官方原文引用,即 2^64) |
| Git 历史 | 官方称 Linus Torvalds built Git in 10 days |
| NTP 规范 | 指向 RFC 5905 |
| 压缩包规范 | 指向官方 .zip specification |
五、这份清单的评测方式与偏向
需要说明:这篇文章本质是”创意汇编”而非评测报告,官方没有给出任何完成率、学习时长、难度评级或对比基准,因此不存在”官方评测方法”可供批判。它的偏向体现在选材上:
- 偏向系统与底层:73 个项目中操作系统、网络、存储、分布式占比明显高于前端、移动端与纯业务应用,反映 CodeCrafters 平台自身的课程重心(从零实现系统软件);
- 偏向英文资料生态:所有挂靠资源(论文、RFC、YouTube 视频、英文教程)均为英文,非英语学习者需要额外翻译成本;
- 配图以梗图为主:正文穿插大量 meme 图(如量子计算条目配”我不敢问量子计算机是什么”表情包),用于调节阅读节奏,并非技术示意图,不能当作学习材料。
六、适用与不适用场景
适合:
- 已有一门语言基础、想从”会用框架”进阶到”理解原理”的初中级工程师;
- 准备系统面试(系统设计、分布式、数据库)的人,可把 Raft、Kafka、Redis、负载均衡作为专项;
- 自学者按图索骥,配合 AI 答疑与官方论文自行推进。
不适合:
- 完全零基础的新手:清单没有语法教学,直接做容器或 TCP/IP 栈会无从下手;
- 想要带测试、带验收的结构化课程的人:清单只给方向和资料链接,不提供 CodeCrafters 平台课程里那种逐步测试驱动的反馈闭环;
- 只想做产品、不关心底层的应用开发者:73 个项目几乎都是”造轮子”,与业务交付距离较远。
七、客观分析:优势与局限
优势:
- 每个项目都锚定权威一手资料:论文、RFC、官方规范优先于二手博客,学习路径不容易被错误认知带偏;
- 项目之间可组合成体系:DNS、TCP/IP、Web Server、负载均衡、Kafka、Raft 串起来就是一套完整的后端分布式知识网;
- 难度梯度客观存在:Wordle 求解器、BMP 编解码适合入门,Raft、量子模拟、TCP/IP 栈适合进阶,可自行挑选。
局限(官方未明说、通读后可核实的口径偏差):
- 没有难度分级与前置依赖说明:#2 Wordle 与 #10 Raft 并列编号,新手无法从编号判断先后,官方也未给出推荐顺序;
- 是 idea list 不是课程:不提供分步指导、测试用例与验收标准,完成质量完全靠自驱和自查,这与 CodeCrafters 付费课程的体验有本质区别;
- 外部链接长期可用性无保障:论文 PDF、YouTube 视频、个人博客分散在各处,清单发布于 2025 年 4 月,部分链接未来可能失效;
- 领域覆盖不均:前端工程、移动端、数据工程、安全实战(除 #53 Malware 与 #44 匿名投票外)着墨很少。
八、它意味着什么 / 谁该关注
这份清单的价值不在于”73 个”这个数字,而在于它示范了一种学习方法:用一个可运行的小系统作为载体,反向读懂一份经典论文或规范。对在职工程师而言,每年挑 1–2 个与自己工作相关的项目(如做后端的选 Kafka 或 Raft,做数据库的选 SQLite 或 Bitcask),比泛泛刷教程更能形成长期记忆。CodeCrafters 本身提供带测试的付费课程,但即使不付费,按清单挂靠的公开资料自行尝试也并非不可完成——这一点 koala-oss 条目亦有提及。