A blog about trying to make yourself better at making and designing websites. Also about random shit.

"How do you actually learn the real world stuff?"

So you wanna get your hands dirty, eh? That's great!

So I'm going to assume that you just went through an introductory online course on HTML, CSS, or JS at Codecademy or maybe even a book like Eloquent JavaScript. Now what do you do next? These courses only taught you the basics. How do you apply that knowledge to create real-world stuff? I mean, that's why you're learning this in the first place, right?

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.

So this might not be what you expected. You might have expected me to say "Go to this site to learn how to set up JavaScript projects and then go to this site to set up your Sass and then make sure to use this text editor. Then go to this host to deploy your website."

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.

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:

If you're struggling to find time, check out "There's always time to launch your dream" from Signal v. Noise and "Slay your Schedule" from 30x500.

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.

If you're not into open source and you don't know what to do, you can check out things like JavaScript30 where you build 30 things for 30 days—oh hey that might be enough for you to build a habit!

Find internships

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.

Steal websites

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.

An alternative to this is to go through projects in Codepen and Gomix and check out how your favorite projects are built.

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."

If it grabs you, grab it back.

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:

  1. What tedious, repetitive tasks do I perform regularly?
  2. What tasks do I perform on a regular basis that I sometimes mess up?
  3. 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!