There’s a specific kind of shame that comes with copying a pattern you don’t fully understand.
You paste it. It works. And instead of feeling good, you feel like a fraud.
Like you cheated on a test nobody was giving you.
I lived in that feeling for longer than I’d like to admit.
Waiting to feel ready
I used to have this rule for myself - unspoken, but firm:
Don’t build until you understand.
So I’d go back to the tutorial.
Re-read the documentation.
Watch the explanation one more time, slower this time, taking notes this time… surely this time it would click.
And then I’d sit down to build and still feel unready.
The thing about waiting to feel ready is that the feeling never actually comes.
It just shape-shifts.
First you need to understand functions.
Then you need to understand scope.
Then you need to understand why your code works before you write more of it.
It’s a very convincing trap.
It looks exactly like learning.
When I finally just built something
When I started building my first real project , not a tutorial, not a follow-along, something I actually wanted to exist - I ran into a wall almost immediately.
I knew what I wanted it to do.
I had no idea how to make it do that.
So I did something that felt wrong at the time:
I found a pattern that looked like it would work, and I used it without fully understanding why.
It worked.
And I moved on.
There were functions in that project I couldn’t fully explain.
Bugs I fixed by trying things until something stuck.
Logic that made sense in the moment,but would have taken me an hour to explain to someone else.
And slowly, without me planning it, something shifted.
The second time I used that pattern, it felt less foreign.
The third time, I started seeing why it was shaped that way.
By the fourth time, I’d modified it into something that actually fit what I was building.
Understanding didn’t come before the building.
It came through it.
The question that changed for me
For a long time, my question before touching anything new was:
“Do I fully understand this?”
The answer was almost always no.
So I’d go learn more.
Come back. Still no.
Go learn more.
At some point, I replaced it with a quieter, more honest question:
“Do I understand this well enough to try?”
That’s a question I can actually answer.
And the answer is almost always yes.
What building teaches that reading can’t
When you’re only reading and watching, everything stays abstract.
Neat. Clean. The examples always work.
But when you actually build something, the mess shows up. And the mess is where the real questions live.
Why is this breaking when the input changes?
Why does this work here but not there?
Am I making this more complicated than it needs to be?
Those questions don’t come from tutorials.
They come from being stuck inside something you’re genuinely trying to make work.
That’s the part no amount of pre-reading can give you.
Where I am now
I’m still a beginner.
There are entire parts of what I’m building that I don’t fully understand yet.
But here’s what I know now that I didn’t know before:
The understanding isn’t somewhere ahead of me, waiting until I’m ready.
It’s inside the work.
It always was.
You don’t find it by waiting.
You find it by building.
Top comments (0)