Become a Cracked engineer
Go beyond tutorials. Tackle real‑world projects and develop the raw technical intuition that sets the top 1% apart.
Pick your challenge
Each project teaches you how real-world software actually works under the hood.
Build your own GPT (LLM)
Build a large language model from scratch using neural networks and transformers.
Build your own Redis
Implement a Redis-like in-memory data store with persistence and networking.
Build a Compiler
Create a complete compiler with lexer, parser, and code generation phases.
Build your Git
Learn about git objects, plumbing commands and more.
Build your Claude Code
Build a claude code from scratch with tool use, streaming and agent loops.
Build a Database
Learn about databases by building one from scratch.
Three commands. That's the whole workflow.
No config files. No Docker. No browser IDE. Just our CLI.
# register your hash and pick a challenge
$ bwg init a1b2c3d4
Verified! Welcome, user.
$ bwg list
Cloning into 'build-your-own-redis'... done.
# write your solution — any language, any editor
$ vim server.c
# submit to run tests
$ bwg submit -m "add PING and ECHO"
✓ Stage 1 passed — PING/PONG
✓ Stage 2 passed — ECHO
✗ Stage 3 failed — GET/SET
hint: check your key-value store expiry logic
Why developers choose us
Not another tutorial. Not another video course.
Build real systems
Redis, Git, compilers — not toy apps.
Automated testing
Every submission runs your code against real test suites.
Your own editor
No sandbox. Use VS Code, Neovim, whatever you want.
Ship-ready skills
Understand internals that senior engineers know.
Our philosophy
Our Goal
Make engineers solve real problems by building from scratch.
“What I cannot create, I do not understand.”
First principles engineering
Most developers use tools without understanding how they work. They use Git without knowing how objects are stored. They query databases without understanding B-trees. They call APIs without knowing how HTTP actually works under the hood.
BuildWithGit exists to change that. When you build Git from scratch, you stop memorizing commands and start understanding the system. When you build a database, indexing stops being magic and becomes a design decision you can reason about.
Real problems, not toy exercises
Sorting algorithms and linked list puzzles have their place, but they don't teach you how to build software. Real engineering is about systems — how pieces fit together, where things break, why certain tradeoffs exist.
Our challenges are real systems: Git, Redis, HTTP servers, compilers, DNS servers, SQL databases, LLMs. These are the things that power the internet. Building them teaches you more than any textbook.
Understanding over memorization
When you truly understand how something works, you can debug it, extend it, and build on top of it with confidence. You stop copying Stack Overflow answers and start writing solutions that fit your specific problem.
That's the difference between someone who uses a framework and someone who can build one. Both are valid — but the person who can build one will always make better decisions about when and how to use one.
The engineer we want to build
Someone who sees a system and thinks "I could build that." Someone who doesn't panic when the abstraction leaks because they know what's underneath. Someone who picks the right tool because they understand the tradeoffs, not because it's trending.
That's the kind of engineer the industry needs. That's who BuildWithGit is for.
“The best way to predict the future is to invent it.”
“Everybody in this country should learn to program a computer, because it teaches you how to think.”
“Simplicity is the ultimate sophistication.”
Ready to build something real?
Start with any free challenge. No credit card. No setup.