I didn't go to university for computer science. No bootcamp, no structured course. I just started building things, got stuck constantly, and kept going. That's pretty much the whole story.
It sounds simpler than it was. There were a lot of evenings staring at error messages I didn't understand, following tutorials that assumed things I hadn't learned yet, and finishing projects I couldn't fully explain. But I kept going, and at some point it started to click.
Why self-taught in the first place
I wanted to build something specific. I didn't want to spend three years in a classroom before I was allowed to start. So I just started. I had an idea, looked up what I needed to know, started building, hit a wall, figured it out, and repeated that cycle until I had something working.
What surprised me was how much faster the cycle got over time. The first time I got stuck it took days. Six months in it took hours. A year in, minutes. You're not really learning syntax when you learn to code. You're learning how to find your way out of problems you've never seen before.
What didn't work
Tutorial dependency is a real thing. You complete a course, follow along with a video, finish all the modules, and it feels like progress. Then you sit down to build something from scratch and nothing comes. That was me for a while.
The issue is that tutorials are someone else's project. You're following a known path to a known answer. Actually building something is the complete opposite of that. The only way to get better at it is to do it.
What actually worked
Shipping things publicly. When a project is live with your name on it, you care differently. You fix bugs faster. You notice when something feels off. It's a level of accountability that just doesn't exist when something is sitting locally on your machine.
Every project on this site went through the same cycle: I built it, broke it, fixed it, redesigned bits of it, and eventually shipped it. The Life Manager app has been rewritten twice. The weather app's original CSS was bad. That's fine. You keep going.
On using AI tools
I use AI tools while I'm building and I don't think it's worth pretending otherwise. Using them to get unstuck faster or understand an unfamiliar API is just good tooling, same as using MDN or Stack Overflow.
But AI doesn't know what you're actually building. It can't tell you which tradeoff matters for your specific project, or feel when something is clunky. That judgment only develops by building things and paying attention. There's no shortcut for that part.
What I'd tell myself at the start
- Start with something you actually want to exist. Motivation matters a lot more than people say. Build the specific thing you want, not a generic tutorial project.
- Ship before it's ready. A live, imperfect project teaches you more than a perfect one that never leaves your computer.
- Being stuck is fine. It's not a sign you're doing it wrong. It's just part of the process. Every developer is stuck on something right now.
- Read other people's code. GitHub, open source projects, anything. Seeing how someone further along solves a problem is one of the fastest ways to level up.
- Build the same thing twice. Finish a project, wait a month, rebuild it from memory. The second version will be cleaner and faster and you'll understand why.
It took longer than a structured course would have. But every project on this site exists because I decided to figure something out myself. That's a habit worth building.