Most people reach for a framework. I reach for a blank file.
That's not contrarianism — it's curiosity. When you build something from scratch, you stop treating the computer like a black box. You start to understand why things are slow, why things break, and what's actually happening when you call a function someone else wrote.
The Game Engine Problem
When I started building my 3D engine, I could have used Unity or Unreal. Both are incredible pieces of software. But I wouldn't have learned anything I didn't already know.
Instead I'm writing my own scene graph, my own rendering loop, my own math. It's slower. It's harder. And every bug I fix teaches me something a tutorial never would.
Abstraction is Borrowed Understanding
Frameworks are abstractions. Abstractions are useful — but borrowed. When something breaks at the abstraction layer, you're helpless unless you understand what's underneath it.
Building from scratch is how you earn that understanding.
It Makes Everything Else Better
The strange thing is: after spending time at the low level, high-level tools become more useful, not less. You use them with intention. You know when to reach for them and when to step around them.
That's the goal — not to avoid abstractions forever, but to never be afraid of what's beneath one.