Git, Docker, 데이터베이스, 운영체제, React 등 매일 쓰는 기술을 밑바닥부터 만들어 보는 튜토리얼 큐레이션 모음집.
파인만의 한마디로 시작하는 학습 모음.
대부분의 강의·튜토리얼은 기존 도구를 쓰는 법을 가르친다. 그런데 진짜 기반 기술 — 운영체제, 데이터베이스, 컴파일러, 브라우저 — 이 어떻게 동작하는지는 책 한 권, 영상 한 편으로 끝나지 않는다. build-your-own-x는 "한 주제를 처음부터 직접 만들어 보는" 튜토리얼만 골라 모은 거대한 목차다.
레포 자체에는 코드가 거의 없다. 본체는 README 한 장(약 500줄, 46KB). 그 안에 31개 카테고리, 380개 이상의 외부 튜토리얼이 정리되어 있다. 1990년대 인터넷 초기의 "Yahoo! 디렉토리"가 웹사이트를 분류했다면, build-your-own-x는 개발자가 직접 만들어 봐야 할 것들을 분류한 셈이다.
한 문장으로 줄이면.
build-your-own-x는 단순 링크 모음이 아니라 "직접 만들기"라는 학습 철학의 카탈로그다. 31개 카테고리, 380개 이상의 외부 튜토리얼을 단일 README로 큐레이션해, 어떤 기반 기술이든 "처음부터 만드는 레시피"로 진입할 수 있게 한다.
레포 자체의 코드량은 거의 0이지만, GitHub 트렌딩에 121회 등장하고 50만 스타를 받은 이유는 "제공하는 가치 = 누군가의 시간을 얼마나 절약해주는가"를 증명한 사례이기 때문이다.
시대적 배경 + 경쟁 우위.
대부분의 강의는 how to use(쓰는 법)에 머문다. build-your-own-x의 튜토리얼들은 모두 why it works(왜 그렇게 동작하는지)에 답한다. 도구를 쓰는 사람 → 도구를 만드는 사람으로 도약시키는 자료다. AI가 코드를 대신 써주는 시대일수록 "왜 그 코드여야 하는가"를 판단할 수 있는 엔지니어의 가치가 오히려 올라간다.
3D 렌더러, AI 모델, 블록체인, 데이터베이스, Docker, 게임 엔진, Git, 운영체제, 컴파일러, 브라우저, 웹서버 — 진짜 개발자가 알아야 할 기반 기술이 거의 다 들어 있다. 같은 주제를 C·Go·Python·Ruby·Rust 등 여러 언어로 비교 학습할 수 있어, 언어의 본질적 차이를 체감하기 좋다.
| 자료 | 장점 | 한계 |
|---|---|---|
| freeCodeCamp | 웹개발 입문에 강함 | "기반 기술 직접 만들기"는 거의 없음 |
| YouTube 튜토리얼 | 영상으로 따라하기 쉬움 | 품질 편차 큼, 한 사람 관점에 갇힘 |
| MIT OCW 등 대학 강의 | 이론 깊이 ↑ | "분석" 위주, 접근성 낮음 |
| build-your-own-x | 한 주제를 끝까지 직접 만든다 | 학습자가 동기·시간 관리 필요 |
2018년 Daniel Stefanovic이 시작 → 2026년 현재까지 꾸준히 새 튜토리얼이 추가되고 죽은 링크는 제거된다. 커뮤니티 기반 PR 흐름 덕분에 평균 품질이 높게 유지된다. 현재는 CodeCrafters 팀이 메인테이너 역할을 한다.
레포가 다루는 카테고리와 자주 등장하는 언어.
build-your-own-x는 특정 기술 스택을 쓰는 프로젝트가 아니라, 거의 모든 기술 스택을 다루는 인덱스다. 카테고리를 영역별로 나누면 다음과 같다.
| 언어 | 강세 분야 | 대표 튜토리얼 |
|---|---|---|
| C | OS · 컨테이너 · 메모리 · 네트워크 | kilo (텍스트 에디터), os01 |
| C++ | 게임 · 3D 렌더러 · 에뮬레이터 | Ray Tracing in One Weekend, NES Emulator |
| Python | AI/ML · 인터프리터 · 웹서버 | Norvig의 lisp.py, Let's Build A Web Server |
| Go | 분산 시스템 · CLI · DB · BitTorrent | BitTorrent in Go, Build Your Own Redis from Scratch (Go 구현 별도) |
| Rust | OS · 브라우저 · 컴파일러 · DNS | Writing an OS in Rust (phil-opp), Hecto |
| JavaScript | 프론트엔드 · 게임 · 블록체인 | Build your own React (pomb.us) |
| Java / Kotlin | JVM 언어 · 컴파일러 | Crafting Interpreters (book) |
코드는 단순한데, "왜 이렇게 만들었는가"가 핵심.
┌─────────────────────────────────────────────────────────────┐ │ GitHub Repository (codecrafters-io/build-your-own-x) │ │ │ │ ┌────────────────────────────────────────────────────┐ │ │ │ README.md ← 거의 전부가 여기 (~500줄, 약 46KB) │ │ │ └────────────────────────────────────────────────────┘ │ │ │ │ │ │ (목차로 분기) │ │ ▼ │ │ ┌────────────────────────────────────────────────────┐ │ │ │ 30개 카테고리 섹션 │ │ │ │ ├─ #### Build your own `Database` │ │ │ │ ├─ #### Build your own `Docker` │ │ │ │ ├─ #### Build your own `Git` │ │ │ │ ├─ ... (총 31개) │ │ │ │ └─ #### Uncategorized (잡다한 80여 개) │ │ │ └────────────────────────────────────────────────────┘ │ │ │ │ │ │ (각 항목은 외부로 링크) │ │ ▼ │ │ ┌────────────────────────────────────────────────────┐ │ │ │ 외부 튜토리얼 (380+ 개) │ │ │ │ ├─ 블로그 글 (medium, 개인 블로그) │ │ │ │ ├─ 오픈소스 가이드북 (raytracing.github.io 등) │ │ │ │ ├─ YouTube 영상 시리즈 │ │ │ │ ├─ 깃허브 워크샵 레포 │ │ │ │ └─ 책 PDF / Leanpub │ │ │ └────────────────────────────────────────────────────┘ │ │ │ │ GitHub Issues ←── 새 튜토리얼 제안 / 죽은 링크 제보 │ │ Pull Requests ←── 커뮤니티가 PR로 항목 추가 │ └─────────────────────────────────────────────────────────────┘
Docusaurus·Gatsby 같은 정적 사이트 생성기로 만들면 더 멋있어 보이지만, 그러면 "새 튜토리얼 한 줄 추가하기"의 진입장벽이 올라간다. README는 마크다운 한 줄만 추가하는 PR이면 끝이다. 이 단순함이 10년간 활발한 기여를 유지한 비결이다.
Wikipedia가 "누구나 편집 버튼만 누르면 기여"되는 것처럼, build-your-own-x는 "PR 한 줄 = 기여 완료"라는 마찰 없는 흐름을 택했다. 디자인 정교함을 포기한 대신 기여자 수를 얻은 셈.
* [**언어**: _튜토리얼 제목_](URL) * [**Go**: _Build Your Own Redis from Scratch_](https://...) * [**Python**: _A 3D Modeller_](http://aosabook.org/...)
언어를 굵게 표시하는 컨벤션 덕분에 독자는 "내가 쓰는 언어 / 배우고 싶은 언어"로 빠르게 필터링한다. 일종의 UX 디자인이 마크다운 컨벤션에 녹아 있는 셈.
사용자 ──┬─── 새 튜토리얼 발견
│
├─── Pull Request로 README.md 한 줄 추가
│ │
│ ▼
│ CodeCrafters 팀 리뷰 (품질 / 중복 / 카테고리)
│ │
│ ▼
│ Merge → 즉시 README에 반영
│
└─── 죽은 링크 발견 → Issue 제출 → 정기 정리
CC0 라이선스 → 누구든 자유롭게 fork, 학습자료로 재배포 가능
"이거 진짜 멋진 사이트로 만들면 더 잘 될 텐데" — 이 유혹에 빠지면 본질이 흔들린다. 정작 기여자가 PR을 안 보내게 되면 큐레이션이 시들고, 그 순간 콘텐츠 자체의 가치도 무너진다.
"새 항목을 추가하는 데 30초 이상 걸리면 안 된다"는 원칙. README 한 장 + 줄 추가 PR이라는 가장 단순한 흐름이 10년간 콘텐츠를 살아 있게 만들었다.
실제 폴더는 의외로 매우 단순하다.
build-your-own-x/ ├── README.md ← 본체. 모든 내용이 여기 있음 (~500줄, 약 46KB) ├── ISSUE_TEMPLATE.md ← Issue 템플릿 (루트 직배치) ├── .gitattributes └── codecrafters-banner.png (끝!)
화려한 기술 스택 없이 50만 스타 + 47,000 포크를 달성한 케이스. 별을 찍는 이유는 코드의 복잡성이 아니라 제공하는 가치의 크기다. "내가 만들 수 있는 작은 리스트가 누군가의 학습 경로를 바꾼다"는 점을 기억하자.
# Build your own <insert-technology-here>
- 인용구: 파인만의 "What I cannot create, I do not understand"
- 30개 카테고리 목차 (앵커 링크)
## Tutorials
#### Build your own `Distributed Systems`
* [Java]: ...
#### Build your own `3D Renderer`
* [C++]: ...
* [Python]: ...
... (31개 섹션 반복)
#### Uncategorized
* [C]: ...
## Contribute
- PR 보내는 방법
## Origins & License
- CC0 라이선스 표기
- 원작자: Daniel Stefanovic
- 현재 유지: CodeCrafters, Inc.
전부 다 할 수는 없으니, 자기 분야에 맞춰 골라 들어가는 법.
실습: 위 자료로 만든 미니 LLM을 본인 일기 데이터로 파인튜닝 → "내 글체로 쓰는 챗봇" 만들기
실습: "내가 만든 React + 내가 만든 Web Server"로 todo 앱 한 페이지 띄워보기 (라이브러리 없이)
실습: bocker(100줄 bash로 만든 Docker)를 따라 만들고 네트워크 분리 기능 추가
실습: Ray Tracer 1주 만에 완성 → 자기 사진을 ASCII art로 변환하는 미니 렌더러로 확장
대부분 노트북 한 대면 충분하지만, 카테고리별로 다르다.
| 카테고리 | 최소 사양 | 필요 도구 |
|---|---|---|
| 대부분의 튜토리얼 | 일반 노트북 (RAM 8GB↑) | 해당 언어의 컴파일러/인터프리터 + 텍스트 에디터 |
| Build your own OS | RAM 8GB↑ · Linux/macOS 권장 | QEMU(에뮬레이터) 필수, GDB 익숙하면 좋음, Windows는 WSL2 |
| Build your own AI Model (LLM) | Apple Silicon M2↑ 또는 NVIDIA GPU 8GB↑ | Python·PyTorch, Colab/Kaggle 무료 GPU도 가능 (속도 ↓) |
| Build your own Processor | FPGA 보드 필요 | Lattice ECP5 또는 Xilinx Arty A7 (10~30만원). Verilator로 보드 없이 시뮬도 가능 |
| Build your own Docker | Linux 호스트 (커널 4.x↑) | cgroups/namespaces 지원, macOS는 일부 기능 제한 |
"Build your own OS / Docker / Network Stack" 류는 Linux 커널 기능에 의존한다. Windows에서는 WSL2 (Ubuntu)를 먼저 설치하고 그 안에서 진행하는 게 정신건강에 좋다. macOS도 Docker 관련 튜토리얼은 일부 제약이 있어 Linux VM 권장.
난이도별 실습 — 입문 → 중급 → 도전.
1) Bot 카테고리에서 Python Slack/Discord 튜토리얼 선택 2) 매일 본인 GitHub 커밋 수를 Slack에 알려주는 봇 작성 (단 30~50줄) 3) GitHub API 호출 + 메시지 포맷 4) cron / GitHub Actions로 매일 자동 실행
배우는 것: 외부 API 호출, OAuth 토큰, 스케줄 실행 — 주말 2~3시간.
1) Command-Line Tool 카테고리에서 Go CLI 튜토리얼 선택 2) 터미널에서 ASCII 소가 말을 거는 그 프로그램을 직접 작성 3) CLI 인자 파싱(flag 패키지), 파이프 입력 처리 4) go build로 단일 바이너리 빌드
배우는 것: CLI 인자 처리, 파일 입출력 기본기, Go 빌드 시스템 — 주말 하루.
1) Front-end Framework 카테고리에서 pomb.us 튜토리얼 선택 2) Step-by-step으로 createElement → render → 동시성 → Fiber → Reconciliation까지 구현 3) 만든 미니 React로 간단한 counter 앱 띄우기 4) 실제 React 소스코드와 비교
배우는 것: 가상DOM·Fiber·Reconciliation 동작 원리. 그동안 마법으로 느껴졌던 React가 명확해짐 — 1주 (저녁 1~2시간).
1) Docker 카테고리 → Linux containers in 500 lines of code 선택 2) namespaces / cgroups를 직접 호출해 미니 Docker 작성 3) 격리된 환경에서 bash 실행 → 호스트와 분리된 PID/네트워크 확인 4) 메모리 제한 / CPU 제한 추가
배우는 것: Linux 커널 격리 기능, Docker 동작 원리, k8s 학습의 기초 — 1~2주.
1) AI Model 카테고리 → rasbt의 책 챕터별로 진행 2) 토크나이저 (BPE) → 어텐션 → 트랜스포머 → GPT-2 크기 모델 직접 구현 3) 본인 일기 데이터로 파인튜닝 4) "내 글체로 쓰는 챗봇" 데모 만들기
배우는 것: 트랜스포머 내부 구조, 파인튜닝 워크플로우. "나는 LLM을 처음부터 만들어 본 사람"이라고 말할 수 있게 됨 — 3~4주.
리스트가 너무 길어서 "오 이것도 재밌어 보이네, 저것도..."를 반복하다 정작 하나도 끝까지 못 가는 함정에 빠지기 쉽다. 350개 튜토리얼 다 안 해도 된다.
한 달에 카테고리 하나만 정해서 끝까지 한다. 끝낸 다음에야 다음 항목을 고른다. 1년이면 12개 — 인생 학습 곡선이 완전히 달라진다.
"직접 만들어보며 풀스택 + AI 기반 다지기" 코스.
Bot 카테고리에서 Discord/Slack 봇 1개 + Go로 CLI 도구 1개. 목표는 "끝까지 만드는 습관" 만들기. 작은 성공 경험이 다음 단계의 연료가 된다.
pomb.us의 Build your own React를 끝까지. 가상DOM/Reconciler 이해 → 평소 React 코드 리뷰 수준이 한 단계 점프한다.
Build Your Own Redis from Scratch 완주. 자료구조·네트워크 IO·persistence 패턴 한 번에 흡수. Supabase/PostgreSQL을 다룰 때 깊이가 달라진다.
Linux containers in 500 LoC 완주. Kubernetes/Docker Compose 운영 시 "이게 왜 이렇게 동작하지?"의 답을 알게 된다.
Python으로 미니 Git 작성. blob/tree/commit 객체 모델 이해 → merge conflict가 더 이상 무섭지 않게 된다.
Python 11줄 신경망 → CNN → 미니 GPT. "AI는 마법이 아니다"는 자신감 획득. 다음 단계로 rasbt의 LLMs-from-scratch 책으로 자연스럽게 진입.
레포의 튜토리얼에서 자주 등장하는 용어들.
레포 본체 · 베스트 단일 튜토리얼 · 관련 커뮤니티.