Mar 15, 2026
The concept of grind coding
Many people Ask Me™
Many people ask me (well, to be honest, it may or may not have been just one) what is the right approach to learning for junior and mid-level developers today.
I was thinking about this today. I rarely write code anymore. I realized that I never got as far with Rust as I wanted. Does it still make sense for me to open Rustlings and just... grind through it?
Everyone talks about vibe coding
Describe what you want, accept what the AI produces, move on. It works. Things get built. Velocity looks great.
The problem is subtle. There's a well-known model for skill development — four stages of competence:
- Unconscious incompetence — you don’t know what you don’t know.
- Conscious incompetence — you realize what you don’t know yet.
- Conscious competence — you can do it, but you have to think about it.
- Unconscious competence — you can do it without thinking.
Vibe coding creates a fifth stage nobody planned for: false competence. The solution works, but you never went through the earlier stages. Debugging it yourself, reading an error and understanding why it happened — that builds real understanding. Skip it long enough, and the skill atrophies.
The research backs this up
Anthropic ran a controlled trial with 52 junior engineers learning an unfamiliar python async library. The AI group finished slightly faster — not significantly — but scored 17% lower on comprehension. Fifty percent versus sixty-seven. The biggest gap was in debugging — exactly the skill you need when things break in production.
How they used AI mattered more than whether they used it. Those using AI for conceptual questions scored 65%+. Those delegating code generation scored below 40%.
Grind coding
The answer isn't to avoid AI. The answer is to earn the right to use it.
Let me introduce grind coding. Before you reach out to your herd of agents, spend real time in the uncomfortable stages:
- Read the docs, the books, the discussions. Form an opinion before you generate anything.
- Build something yourself, manually grind through it.
- Debug something yourself. Learn to use a debugger. Read the error. Form a hypothesis. Be wrong a few times.
- Then use AI — and you'll know when it's cutting corners.
Vibe coding gets you to a result. Grind coding builds something else: you understand why things work the way they do, you form opinions, you develop architectural instincts. Good architecture is about choosing the right tradeoffs. When an agent builds something for you, a statistical model is making those choices. You got working code. You didn’t gain understanding.
Conclusion
Whether you're starting out or you're a senior, when you pick up something new, grind through it. AI is the elevator. Grind coding builds the legs.
It’s faster to buy bread. And yet people still bake their own. Maybe one day there’ll be an “artisan code” movement — not because it’s efficient, but because the process matters.
For me, the next step is git clone git@github.com:rust-lang/rustlings.git