So you wanna get your hands dirty, eh? That's great!
Unfortunately, this is where things get messy. Learning real-world stuff is hard! It's not just a matter of mastering a certain language—there's more to that. Waaaaay more. You'd have to:
- Learn how to work well with other people. (clients, coworkers, customers, managers, designers, you name it)
- Read and review code written by other people.
- Thinking about trade-offs of different solutions and learning how to compromise.
- Be familiar with the different environments that your code is going to run on. I'm talking about browser compatibility.
- Making something that people actually want.
- Testing code and preventing any regressions.
But the truth is, these things are the easy part. You can learn these things in a day. The hard part is learning these "soft" skills that you won't be able to find in any code school.
Why do we call them soft skills when they're so hard— Sarah Drasner (@sarah_edo) December 5, 2016
This is the part where we leave the structured world of school and enter the messy, dirty, and confusing part which is the real-world. This is where you go off on your own, and all I can give you is a little advice. There is no map here. You make your own map. If you're feeling overwhelmed, that's totally normal.
Let's do it!
Contribute to open source
I wrote a whole article about the benefits of open source, but I think it's worth repeating because it's soooo important! Contributing to open source will help you—actually—force you to work with other people. You'll be reading other people's code, and you will also be thinking about the trade-offs of your solution. You'll learn how the project is organized and set up and you'll learn the tools that they use whether it's React or Backbone.js or just plain jQuery!
What I like about open source is that it also motivates you. In a TED Talk about motivation, Dan Pink says that there are three elements needed to motivate people: Autonomy, mastery, and purpose. I think open source satisfies all three. Especially purpose.
If you're looking for a project to work on, check out my post for a list of projects that you can check out.
Find time and build a habit
Create a habit of making stuff, and the best thing to do this is doing small things and rewarding yourself for it. Whether it's sharing a small thing that you made with friends or it's checking off an item in a list or even if it's just tweeting, it's important to build a habit.
The book called "The Power of Habit" is really eye-opening if you're interested in checking it out. Here's a short video about the cue -> routine -> reward loop that I was talking about:
Practice. Practice. Practice.
This one is hard especially if you don't do programming professionally yet. How do you apply the things that you learned without forgetting them? The answer is doing them often.
I know, I know. You might think to yourself: "Why would anyone want to hire me as an intern when I'm not even that good at programming yet?" You might be surprised. I know people who don't have a lot of programming experience, but because they showed that they could learn and finish things, they were able to get the job.
Try applying! At the very least, you'll learn what skills these companies are looking for in their job posts and you can try again. Learning on the job and with a mentor will really help.
Another way to learn how websites are built is to use your browser's DevTools. This opens up a whole world of information on how different parts of the website work such as:
- The markup used to create this widget.
- Frameworks and libraries used like Bootstrap or jQuery.
If you'd like to dive into this, check out the article that I wrote about it.
Scratch your own itch. Make your own projects.
Sometimes, you get inspired to make something. You say, "You know what? I can make this."
Just remember to not bite off more than you can chew here. Slow down, and try to accomplish a small part of it.
What kinds of projects will get you hired? An article from RubySteps says that you should think about these problems:
- What tedious, repetitive tasks do I perform regularly?
- What tasks do I perform on a regular basis that I sometimes mess up?
- What apps could I build that would completely or partially solve those problems?
Work with a friend.
If you have a friend that you're learning with, try to work on a project with them. See if you can create things together. What's great about this is that you're learning from each other and you're learning about how you work as well.
If you don't have friends that are into programming, go to Meetups and find someone. It might be tough at first, but you got this.
So as you can see, there are a lot of things that you can do to learn—there's no single path that you can take. So it's up to you now. Good luck on your journey!