A guide to picking up new programming skills

Fill up the slots in your utility belt


“How do you learn all of these frameworks and languages?”, asked a friend during a hackathon recently.

“So basically, you just find a project worth doing that fits what you’re trying to learn and go for it”, I responded.

“Really? Just start building anything?”, he asked curiously.

“Yup, and ask the right people for advice. Smart people are usually very cool about teaching and helping others.” I told my friend while thinking (I really should write a blog post about this).


The single most important thing someone who wants to work in tech should learn is how to learn. I’ve been trying to figure this out for a long time. I’ve talked to a bunch of very smart people on learning and acquiring skills. Also I spend a decent chunk of time giving mentoring/advice to my friends and colleagues on how to learn. I plan to break down some tips in this blog post.

Let’s assume you want to learn this language/framework/api/tool/thing, you just don’t really know where to start. Here’s how I would go about it, maybe it will also help you.


1. RTFD — (Read The F***ing Documentation)

The most important part of using any language or framework is being familiar with it’s docs. Go to the homepage of the thing you want to learn and go through their getting started / quickstart tutorial. If they don’t have one (which is rare), or their docs suck (which is not as rare) try to find what experts suggest. Usually there’s a third party tutorial that will show you what you need to know.

Don’t be afraid to dive head on into something new. You’d be surprised how easy it is to pick it up.

2. Find a Project worth building

You need to build something that you’re passionate about to be really motivated into learning. If you already have something in mind then go for it! If not then here’s a couple of tips on finding a project.

I’ll be honest, I’m not very good at finding something to build when I want to learn new things. To compensate for that I ask other people for ideas until I come across one that excites me. My friend Yamil Asusta always has interesting ideas for me to tinker with, and recently he’s given some talks on this topic. I want to share two of his thoughts here:

  1. If you’re trying to learn a programming language, learn how HTTP requests work in that language. The way you interact with other tools is mostly through http, and this will give you a grasp on how the language itself works.
  2. Have a pet project that you can build using different tools. Have a pet webapp of moderate complexity that you can build with other frameworks to learn how they work. Building the same thing using different tools will allow you to see how the tools are different from each other.

Finally, if you can’t find a project, try to think of something that can only be built with the framework or tool that you are trying to learn and start building it.

3. Start building your project


The hardest part is actually getting started. Don’t put it off until later. Start with as much time as you can dedicate.


Start from wherever the tutorial left you and build your own thing. Fleshing out your project will require searching SO, asking friends and more RTFD. Don’t just write random code thinking “that’s how the framework is supposed to work” based on past experience. Read the docs, invest time into figuring out common design and architecture patterns.

4. Ask questions to people who know

Don’t be afraid to ask. The worst that can happen is that you’ll have to wait longer to get an answer. Even the best experts were beginners at some point, and most of them feel the need to give back to the community by mentoring and helping out.

http://xkcd.com/293/

It is imperative though that you don’t waste anyone’s time. Invest in asking the right questions. Nobody wants to be asked somethings that’s just a Google search away. I was recently talking with Hector Ramos, who spends a lot of time helping people with Parse, and he mentioned the two easiest type of questions he likes to be asked.

  1. I’m trying to implement this with Parse, with this part of the documentation, it’s not working (and I’m getting this error). Can you help me out? Here’s a code snippet of what I’m trying to do.
  2. Can I do x with Parse?

Asking questions is about making it easier for the other person to give you an answer. Learn to identify the right people to ask your questions. Usually this happens by learning what type of problem you’re having, and more than usually the type of people you can ask fall into one of two categories:

  1. Those who know A LOT about one specific thing.
  2. Those who know a decent amount about a lot of things.

Learn to identify these people within, or outside, your network. Don’t hesitate to send them a tweet or a Message.

5. Deploy your Project

Get your project to a state that you consider it “done”. It doesn’t have to be perfect, 100% finished or pretty. You project should be at a point where you feel proud of what you made and are willing to show other people how awesome you are (if you’re reading this it means you’re awesome).

After you finish your project, be sure to put it up on Github and deploy it somewhere for people to see. Having it up somewhere will allow others to critique your work, and will make you accountable for making good stuff. Also it’s a go to place when you want to show future employers your past experience.

Even if you think your code sucks, the fact that your putting it out there says a lot about yourself as a developer. And you’re 1 step ahead than other who have NO code to show.

If you asked someone questions, let them know how your learning process is going and show them your work so they know the time they invested in you was not in vain. Finally, after finishing your first project, move on to the next one. The only way to learn how to code is by writing code. The only way to learn a new framework is to write code in that framework. So keep working and keep hustling.


These are the steps I follow when I want to learn new tools. I leverage my time as a student and build my technical portfolio by following these steps. If you’re a CS student looking to learn new things, like me, I’m confident following these steps will give you a solid start.

I’m a student from Puerto Rico, playing the big leagues in San Francisco this summer. Feel free to send me a tweet and recommend this post if you feel it helped you in the slightest.