The last time we talked, I was telling you about how it can be so frustrating to become a web developer. There are a ton of things that people say that you absolutely need to learn. Stop me if you've heard this before:
- "Definitely try learning jQuery and Bootstrap."
- "You should probably learn React because it's fast."
- "Underscore makes JS sooo much nicer."
- "Either Mustache.js or Handlebars to make HTML better."
- "Node.js so that you'll be able to call yourself a full-stack dev!"
- "Try learning AngularJS. It makes writing web apps a breeze."
- "I highly recommend learning Sass if you already know CSS."
- "Gulp is easy to learn. You should definitely use it!"
Trying to learn all these tools will only give you a false sense of preparedness. While it's true that you at least need to know the basics of web development (this is where code schools come in), there's a point at which learning technologies just won't help you—especially learning technologies without purpose. Also, it's just not as fun. 😜
As I mentioned before, there's a better alternative for learning which gives you constraints (a good thing) and forces you to learn from other people (also a good thing). That alternative is contributing to open source. It teaches you real-world programming and collaboration. Here are some tips for getting the most out of it:
Start building a habit
Set aside a block of time every day or maybe even every week to work on Your Thing™. The most important thing is being consistent because you need to build a habit.
So why are habits important? Because the behavior becomes automatic and you don't have to think about how hard it is. You just do it. (Check out The Power of Habit if you ever get the chance!)
If you think you're too busy and you just don't have enough time in the day, you should check out Amy Hoy's Slay Your Schedule freebie to help you out.
So here's your homework:
- Sign up for Github.
- Spend some time looking for a project that you like. I recommend checking http://24pullrequests.com/projects and http://up-for-grabs.net/ if you don't have any open source projects in mind. If you know a piece of technology that's already open source that you think you can help out in (for example I found CSSgram on Twitter) then that's even better!
- Spend around 30 minutes looking for an issue that you can work on. Leave a comment to tell people that you're working on it. Remember, tackle something small!
- Once you find an issue, block off a set time to work on it. Remember, consistency is key!
Don't get overwhelmed. Cut work into pieces!
When you find an issue that you'd like to work on, you might find that it's a little overwhelming. How does this work? How do I do this? What are these things that I need to install? How do I get this to work? How do I test this? How do I submit my contribution?
Don't fret because this is the part where you learn! This is the part where you start asking questions and searching the Internet for answers. People who work in open source are always willing to help you out.
Also, this is why you should start small. Don't work on big things at this stage. It will just burn you out and you'll get stressed. Small wins is key 🔑.
Don't be afraid because you have the whole Internet at your disposal! Ask the project maintainer. Ask in forums. Afraid of making a mistake in public or asking "dumb" questions? Don't be because it's all part of the learning process.
Repeat. Repeat. Repeat.
I don't want to repeat myself, but the most important thing to remember is consistency.
I've said this before, but it's akin to someone teaching you how to squat or benchpress or deadlift. Learning how to do it is just the very first step!
Programming is hard. Don't rush it.
It takes repetition. It means learning from your mistakes. It means work.
Further reading & resources
Confused? Need help?
Like I said, asking questions help you learn! So if you need any help, send me an e-mail. Ask away!