Maybe you just went through an online course from Codecademy or Treehouse or Code School that taught you how to build a website. But now you're wondering: "What do I do now?"
I won't lie—going through a code school is tough. I've gone through a bunch of them myself. But what's even harder is actually moving on and finding some real use for your new skills.
Why is it harder? Because unlike coding schools—or any school for that matter—there are no levels to accomplish or tests to go through or points to get. There are no teachers checking up on you and there are no progress bars to see. It's scary as fuck to be on your own.
So what's next?
If you've lurked on the Internet before, you've probably heard that you need to learn Git. You also need to use a real editor now like Vim or Emacs if you want to be serious about programming. Oh and if you want your website to be fast, you might want to learn React. Oh, and Ruby on Rails too. Did I mention jQuery yet? If you want to have a faster workflow use Gulp or Grunt. Just run npm install. If you want cleaner CSS, try using Sass or Less. They make your life waaaaay easier.
You still there? Programming doesn't have to give you a heart attack. With all this on your plate, you're not going to get anything done! This has happened to me. I got stuck learning new things all the time, but never really making anything useful. You feel like you're achieving something because you are learning, but it all ends up being a waste of time.
So, if you're lost and confused, I'd like to offer an alternative. Forget about trying to learn as much as you can before you start. That's not going to get you anywhere! There's simply too much out there.
Ignore all the "use this use that" advice from the Internet.
Focus on a goal, and learn on the job
"Yeah, of course you need a goal. Duh, Jag."
Well, it's not that simple because you need to figure out two things:
- Do I want to spend my time doing this?
- Is it a small enough task?
By "job" I don't mean an actual job as a professional programmer. If you already work for a software company then congratulations! My only advice to you is to constantly learn from the people around you. Now if you're not doing that, there's another kind of "job" that you can do in your spare time where you'll have access to incredible people and learn a shit ton from: open source.
The first open source project I contributed to was DuckDuckHack, and that's actually how I ended up landing a real job working at DuckDuckGo.
"But don't you need to know stuff first before you can start working on something?"
Here's an example: I wanted to add several Instagram filters in CSSgram, but I didn't know how CSS Filters worked. So since I had a goal in mind (adding a fancy new filter 💁), I went off and read about CSS Filters. And when I knew just enough, I submitted a pull request. And you know what? Learning didn't stop there. I also got a bunch of tips and adjustments from Una to improve my code.
So yes, you don't need to know everything to get started.
The thing about open source projects is that people are usually eager to help you out if you have any questions, and they point you to resources that you need to learn. Now all you need to do is to find things that you can improve or fix.
This is where "Is it a small enough task?" comes in. You have to pick a task that isn't too hard, but at the same time it has to challenge you. The community usually labels easy-to-tackle tasks for beginners for you to get started. The book called The Power of Habit says that it's all about the small wins. Don't worry about how small your contributions are. As you gain more experience, you'll be able to handle more complicated tasks.
I think open source is the best place to learn if you're looking to up your game. Access to people and the whole community is simply irreplaceable.
That said, there's another alternative which is to do your own projects! If you have the goal of making a website for your aunt or designing your own blog, then go for it. This is a lot harder though, and I don't recommend it unless you've had experience already. For one, it's harder to learn from other people since you're not actually working with them. People in websites like Stack Overflow won't be as invested in your work compared to an actual reviewer.
Another reason is that you won't have any constraints. You might think that it's better to have complete freedom over your project, but if you're inexperienced you'll end up in the same rabbit hole as before. You'll be inundated with Internet advice that tells you to learn this and that or whatever is hot right now.
Finally, it's important to start small. It's simply too easy for things to become out of hand when you're on your own.
As web developers, we're blessed by the browser gods with the power of Dev Tools. Every browser has it. It allows you to see how a site is built, how a certain widget is styled, how elements are animated, and much much more.
So if you're curious about learning the inner workings of a website, whip out your Dev Tools and find out! This is not easy, so in the following weeks, I'll be talking about how you can take advantage of what's already out there.
Till next time!