488k Star、GitHub 历史第一仓库,我用了一年告诉你它到底值不值

0 阅读9分钟

一、先说结论

488,000 个 star。

GitHub 上没有哪个技术学习类仓库的星标数能接近这个数字。它长期占据 GitHub Trending 榜单首位,在 Hacker News 被讨论过不下二十次,几乎每隔几个月就有人重新”发现”它然后引爆一波转发。

我第一次看到这个仓库是 2024 年底,当时的第一反应是:这不就是一个 Markdown 文件收集了一堆链接吗?

我错了。

用了将近一年之后,我愿意说这是我见过的最诚实、最有价值的程序员学习资源之一。但它也有明显的局限性,有些局限性随着 AI 工具的普及变得更加突出。

这篇文章是我真实使用一年的完整记录。


image.png 一、这是什么项目,一分钟说清楚

build-your-own-x 是一个由 CodeCrafters, Inc. 维护的开源仓库,核心内容就是一份精心策划的教程清单——教你从零手写各种你每天都在用的技术。

项目以费曼的一句话为题眼:

What I cannot create, I do not understand.
——理查德·费曼

目录涵盖 30+ 个技术领域:

  • 3D 渲染器、AI 模型、BitTorrent 客户端
  • 区块链、数据库、Docker、模拟器
  • 前端框架、游戏、Git、内存分配器
  • 网络协议栈、神经网络、操作系统
  • 物理引擎、处理器、编程语言、正则引擎
  • 搜索引擎、Shell、文本编辑器
  • Web 浏览器、Web 服务器……

每个分类下都有按编程语言分组的教程链接,语言覆盖从 C/C++ 到 Python、JavaScript、Go、Rust、Haskell,甚至 Nim、Crystal。

二、我实际用了什么,体验是什么

2.1 从”手写 Git”开始

我用的第一个教程是 Build Git — Learn Git(JavaScript 版),以及配合的 Python 版 ugit

选择从 Git 开始的原因很简单:Git 是我每天都在用的工具,但 .git 文件夹里到底装了什么,我一直说不清楚。

两个星期之后,我把 commit、branch、merge 的底层结构全部手写了一遍。收获不是”我能用 Python 写一个 Git”——而是此后再遇到 rebase conflict、detached HEAD、reflog 这类问题,脑子里会自动浮现出那些 blob/tree/commit 对象的关系图,处理起来快了很多。

这就是 BYOX 最核心的价值:不是给你一个可以用的东西,而是给你一个更清晰的内部地图。

2.2 手写数据库(最硬的一次)

之后我尝试了 Build Your Own Redis from Scratch(C++ 版)和 Let’s Build a Simple Database(C 语言版,SQLite 仿写)。

这次难度陡增了好几个量级。C 语言版的 SQLite 教程一共 15 章,我卡在第 5 章关于 B 树实现的章节足足三天,中间产生了好几次”这不是我该做的事情”的念头。

但正是这次挣扎让我对以下内容的理解从”知道”变成了”明白”:

  • 为什么数据库写入要先写 WAL(Write-Ahead Log)
  • B 树的节点分裂是怎么一回事
  • 为什么索引会占额外磁盘空间,以及为什么不该乱建索引

做完之后半个月,我在工作中优化了一个慢查询,从 13 秒降到了 0.4 秒。那次我知道我找对方向了,不是因为碰运气,而是因为我看得见问题所在。

2.3 手写神经网络(AI 从业者必做)

作为一个长期关注大模型的人,这部分我格外认真。

推荐的资源是 Andrej Karpathy 的 Neural Networks: Zero to Hero 系列(归在 Python/神经网络下),以及 SlowTorch(从零实现 PyTorch 自动微分引擎)。

Karpathy 的系列是我见过把反向传播讲得最清楚的教学内容。在那之前,我能用 PyTorch 写 Transformer,但如果有人问我”为什么 loss.backward() 能更新参数”,我其实说不利索。

做完这个系列之后,我在看 LLM 的技术报告时,理解深度明显不一样了——那些关于 gradient clipping、learning rate schedule、attention 计算复杂度的讨论,开始有了更具体的物理感。

2.4 手写操作系统(我放弃了一半)

诚实说:我在 OS 这个分类上彻底失败了。

我尝试了 Writing an OS in Rust 和 The little book about OS development,撑了两周,在 memory mapping 和 interrupt handler 的部分彻底卡住,选择了放弃。

这个体验本身也是有价值的:它让我清楚地知道自己的知识边界在哪里。OS 开发需要汇编基础、计算机体系结构基础、以及相当强的调试耐心,三样我都不够。这不是项目的问题,是我准备不足。

三、项目内容的客观评价

优点

策划质量极高。  这不是随便收集链接的 awesome-list。每个收录的教程都经过筛选,步骤清晰、有实际产出、不是纯理论。拿数据库一节来说,同样是”手写数据库”,C 版和 Go 版选择的是不同侧重点的教程,有互补关系。

覆盖广度令人叹服。  30+ 个技术大类,300+ 个链接,涵盖从嵌入式(Game Boy 模拟器)到分布式(Kafka-like 系统),几乎没有明显的遗漏。

语言选择丰富且务实。  对于每个技术,主流语言基本都有对应教程,Rust 的覆盖尤其完整,这对想学 Rust 又需要实质项目的开发者非常友好。

与 CodeCrafters 平台协同。  仓库背后有 CodeCrafters 这个付费平台(提供真实测试用例、自动化验证的交互式版本),仓库本身免费,平台是可选的进阶。两者配合比较自然。

局限性

中文资料几乎为零。  所有教程都是英文,且相当一部分需要具备一定的英文技术阅读能力。

质量参差不齐。  虽然整体策划质量高,但具体到某些小众分类(比如 Voxel Engine、Augmented Reality),教程的步骤细化程度明显不如主流分类。

无结构、无进度追踪。  它就是一个 Markdown 文件,没有学习路径规划,没有完成标记,没有难度排序。如何选择、如何安排顺序完全靠自己。

部分教程已经老旧。  有一些链接最后更新是 2015-2017 年,技术细节(比如特定语言版本)可能已经不准确。这在静态 Markdown 仓库里很难系统性维护。

新手劝退风险高。  仓库名叫”Build Your Own X”,新手容易低估难度直接上手,然后在第一个报错面前放弃。它的受众其实是已经有编程基础的中级开发者。

四、AI 时代,这个项目的价值变了吗?

这是我认为最值得认真讨论的一个问题。

一种声音说:BYOX 过时了。  ChatGPT、Claude 可以一句话生成一个 Redis 客户端,何必自己造轮子?

另一种声音说:BYOX 比以前更重要。  在人人都能让 AI 生成代码的时代,能真正理解这些代码、审查这些代码、在它出错时知道为什么出错的工程师,才是真正稀缺的。

我的观点:两种说法都有道理,但方向不同。

AI 确实降低了”产出可运行代码”的门槛,BYOX 里的初级项目(手写 Web 服务器、手写 Git 基础)在这个维度上被部分替代了——你可以让 AI 给你生成,然后读懂它。

但 BYOX 最深层的价值从来不是”产出代码”,而是”通过痛苦的实现过程,在大脑里建立对某个系统的直觉模型”。这件事 AI 还没办法帮你代劳——它可以告诉你答案,但没办法替你经历那个”卡住三天最终想通了”的时刻。

更重要的是:BYOX + AI 的组合,学习效率比以前高多了。卡住的时候问 Claude,它能精准解释你卡在的那个具体问题,然后你继续动手。这比以前独自啃文档、发 Stack Overflow、等回复的方式快了不止一个数量级。

结论:AI 没有让 BYOX 过时,但改变了最优的使用方式。

image.png 五、我的使用建议

怎么选第一个项目

不要选”最想做的”,要选”最能形成闭环的”。

我见过很多人一上来就选 OS 或者编程语言,然后卡在第一周放弃,之后再也没打开过这个仓库。

建议按这个顺序考虑:

  1. 从 Git 或 Web Server 入门——步骤细、语言选择多、产出明确
  2. 第二个项目选你工作中天天用但不懂原理的东西(数据库、Redis、框架)
  3. 等你有了两个成功经验,再挑战 OS 或编程语言

和 AI 工具的最佳配合方式

不要让 AI 帮你写实现代码。

用 AI 做这些事情:

  • 遇到报错,让 AI 解释错误的含义(而不是直接给你改好的代码)
  • 实现完一个模块,让 AI 给你的代码做 code review,指出概念上的缺陷
  • 读完一个章节,用自己的话向 AI 解释你理解的内容,让它指出你的漏洞
  • 实现了某个功能,问 AI “真实的 Redis/SQLite 是怎么处理这个问题的,和我的实现有什么区别”

这套流程下来,学习深度比单独做高很多。

关于”做完”这件事

BYOX 没有终点,不存在”做完”。

我的建议是:每次选一个项目,给自己定一个”最小完成标准”(比如”能跑通核心功能的80%“),达到之后就可以收手。完美主义在这类学习项目里是最大的敌人。

image.png 六、最终打分

评分维度得分说明
内容质量9.0策划水准极高,几乎每个链接都经过人工筛选
覆盖广度9.530+ 技术类别,几乎没有重要遗漏
学习深度8.2做完真的有深度,但需要主动投入
新手友好度5.5对完全没有基础的人不太友好,有被劝退的风险
维护活跃度7.2整体稳定,但部分老旧链接没有及时清理
社区生态8.8488k star 本身就是一种背书,社区讨论活跃
综合评分8.4 / 10开发者书签必收,值得长期使用

七、一句话总结

它不会让你成为大师,但会让你在那些关键时刻——面试、线上排查、技术决策——比其他人多一层看穿问题的能力。

在一个到处都是”AI帮我写的”代码的时代,这层能力比以前更值钱,不是更廉价

文中所有学习体验为个人真实经历,不代表适用于所有人。