I'm here to tell you about how I started learning to code. This is not a promo post, don't worry, @IndieJames suggested I write more about my experience so here goes.
I know for many IH that's a debate they're having with themselves daily. I also know how frustrating it is to have an idea and to feel your hands tied because you can't build it the way you want. That frustration is what pushed me to start my journey to become a dev.
I started off as a designer. I can design the hell out of any interface. I could make websites with no-code builders in no time. But when it came to more complex ideas, it felt like my hands were tied. I wanted to learn how to handle data. How to build web apps. How to make my own products.
So I started learning to code.
Like many of you who tried that, the first wall you bump into is - what should I learn first?
So the first few months I spend just figuring out what I wanted to get good at. I started with what I wanted to build and worked my way backward. What can I learn to be able to make what I wanted?
The Basics
I wanted to make web apps - so I got what was pretty obvious out of the way first - HTML, CSS, and basic Javascript. You can easily learn those through freecodecamp or the Odin project. I had some experience with HTML & CSS as a designer, so I just had to polish my knowledge a bit.
Javascript is a different beast. You'll hear from many seasoned devs that you don't stop learning JS.
And even though that seemed like an overstatement, I tend to agree. I started with freecodecamp, but the course that really made things click was Anthony Alicea's course, JS: Understanding the weird parts.
Frameworks
Before I was remotely comfortable with JS, I started looking into what frameworks I can learn. Most devs advise against this. If you're pursuing a career in ComputerScience I agree. But I just wanted to build my own tools, and I wanted to get there fast.
So I checked all modern frameworks and meta-frameworks people recommended - React, Vue, Angular, Next, Remix, Svelte, Nuxt. And I just picked the one that seemed that will get me where I want the fastest. In my case, that was Next JS, which is based on React.
Luckily, there are plenty of resources, including official documentation, available for free. One tip is - read through the documentation! You will not understand it. It will be frustrating. It will feel like your brain is in a frying pan. But at some point, it will click.
Documentation docs are also usually up to date. Many tutorials have outdated content for frameworks that changes every month.
I also learned a lot of tricks, like using Tailwind to give my CSS superpowers. And to use pre-made primitives for my designs, like Headless UI, Radix, or Next UI.
6 months in, I could build my first very simple web app.
I tied a Next JS interface deployed on Vercel to an Airtable and I had my first co-founder database.
Then I went on to try developing complex products (not gonna link them here since this is not a promo post). I also got involved with a team working on a great book app, with developers way more experienced than I am. Learning to code meant that I was able to help build the interface and understand the front-end, leaving time for them to focus on other vital parts of our startup.
Okay, this was a long one, but here are some key takeaways:
If you're thinking of learning to code - do it!
If it seems impossible - narrow it down, only learn what helps you achieve what you want. You're not learning for a CS degree.
Learn no-code as well. I learned to code because I haven't found a no-code tool that allowed me the freedom I wanted. But that doesn't mean you can't do so much with no-code.
Code also helps you with no code, as it gets you familiar with the structure and architecture of software or web apps. It literally changes your mental patterns.
Ask for help. I was always reluctant to ask for help. But you will see that developer communities are very keen to answer your questions.
You'll always feel overwhelmed. Get used to it. Even senior devs feel that way. Code is ever-evolving and you always learn.
Being consistent is more important than making progress. 8 times out of 10 you'll feel stuck. But you'll always get unstuck one way or another.
Go fast. Learn things you're not ready for yet.
This is my advice. Hope it helps all you junior devs on your journey.
What worked for me was diving in head first. When you immerse yourself with coding, you’ll definitely pick up something. As time goes on, you’ll learn what’s what and how’s and all that.
BTW, coding isn’t something that you can cheat your way into. Even if you do, you’ll be competing with dudes who put thousands of hours into the craft.
Yep, that's what works for me as well. I found that I always learn by trying to solve problems, instead of learning synthax. You learn that along the way.
And I agree, I can definitely say that it's one of the things where you can't fake your way into, especially if you want to get a job in the field. You just have to put in the time.
Great advice! I've done a few free coding courses online that hold your hand through the content which is great for your ego and motivation but when it comes to building something you feel like you havent learnt anything.
The takeaway I got from this is to learn by doing.
Thanks!
Yeah, I can relate. Some tutorials are great, when they overlap with what I'm trying to achieve and I can just use them for reference.
But I feel the same about most courses. That knowledge doesn't really seem to stick.
Great post, thanks for sharing.
All great advice, but 5) Ask for help is my favorite– in the beginning, you don't even know what to google. A quick discussion can make the basics click much faster.
Thanks!
Yeah, exactly. I can't tell you how many times I was stuck on StackOverflow because I just didn't know how to word something properly.
Discord communities and Reddit were the most helpful places where I could get good answers.
I'm also sharing a resource I've worked on over here:
https://airtable.com/shrTwo96zdnlx8pre
It's an Airtable with 27 resources where you can learn to code (many for free).