Skip to content

Re-inventing the Wheel Is How You Learn

Sep 3, 2026 3 min read #business #programming

Sometimes I look back at my older open source work, or talks, and feel a little bit ashamed.

“That’s not right.” “That’s not how you’d do it” (or not how I’d do it now).

And the times I re-invented the wheel when packages were already there…

As embarrassing as that seems now, there was a good reason for that.

Doing things that others have done, but in our own way, is a synthesis that helps us learn.

Let’s not forget about that.

I wrote about the evolution of a PHP programmer a while ago. But I think it’s even more important to revisit this now. It’s not strictly related to PHP programmers, either. It’s any programmer.

The way we learn, the way we program, is changing. Gone are the years of paging through the online manuals (or even worse, the printed copy - yikes!). We had simple code generation and auto complete for a while - which was already a change. But now, we have full AI generated code. Is there still room for this old way of learning and building it yourself? Is there still even time?

Yes, and yes. But it has to evolve.

We should still be re-inventing the wheel. This is how you learn. You need to understand the basics of the underlying code, the underlying decisions, and the trade-offs and risks of choosing your mechanism. You get this by building some stuff yourself. Trying it, analyzing it, seeing its failures and choosing to do it better (now, or next time).

With AI assistance, it can be easy to think that you’ve just got the best solution immediately. But that’s wrong - for two reasons.

You don’t know if it’s the best solution. It’s just the most popular one - based on training data - which is published. Yes sometimes the AI can synthesize other solutions - but it’s a weighting problem. Sometimes the best solutions are not the ones that everyone does - but something new and different. You find this out by trying new and different things yourself. It’s called innovation.

It was written correctly, so you don’t fail so hard. This is the worst part. It looks right. It feels right. (See all of those defensive behaviors the LLM put in? So many null checks…) Even the failure doesn’t feel like a failure. But it is. The code didn’t work, there’s a bug, etc. You should feel that viscerally. That’s consequence, that’s how you learn, that’s how your brain is shaped and impacted to do things right the next time. If you don’t make these mistakes, you’re giving up your agency and just accepting the middle of the road.

You’re better than that, right?

Sometimes, humans will make shit code. And that’s ok. That’s how we learn. We don’t know what exists, so we make it ourselves. We learn what we did right, we learn what we did wrong. We re-invent that wheel so many times. At some point, we come to the final realization that yes, a wheel is the correct solution, but maybe ours is slightly better. Or maybe we should buy that one off the shelf instead - because it solves our problem. Either way, we know, because we learned from ourselves, and the people before us.

Keep re-inventing the wheel. It’s how you learn. It’s not a waste of time.