Raquel Moss

Continuing your learning as a post-beginner programmer (part 1)

If you’re anything like me, your process for learning something new — say, a javascript framework, a design pattern, or a language — looks something like this:

  1. Read the documentation, check out a basic tutorial, and get Hello World up and running, pat yourself on the back.
  2. Look up several tutorials, pick the least intimidating-looking one, and make a basic app — something like a To Do List.
  3. ???
  4. Profit?

We’re going to focus on the ??? part. By the time you’ve reached step two in the process, you’re probably feeling pretty damn good about yourself. You’ve glimpsed some of the potential of The New Thing, you’ve implemented a few basic concepts, and perhaps you’ve even solved a few problems. You’re probably excited to start building stuff with The New Thing. Let’s do it!

Umm…. okay. Now what?

First, Don’t Panic.

In my experience, if you panic, you will dither, and you will never get anything done. This part is scary — there’s a whole world of options to explore and decisions to be made. You might feel a bit like you do when you’re at the supermarket — dazed by all the bright lights and trying to select a pack of toilet paper from a wall full of options.

Let’s mitigate that panic somewhat.

First things first:

Be kind to yourself.

Please remember that all of the following things are totally okay:

  • Abandoned repos
  • Not coding for weeks or months
  • Getting completely stuck
  • Deciding you don’t actually want to learn The New Thing
  • Failure

Seriously. If you try to make some things with code and it doesn’t work, no one is going to sit you down and tell you you’re failure, or a terrible person, or that you’ll never be worthy. I can almost guarantee you that people are going to be extremely impressed that you are trying and learning new things, being creative, and tackling problems. If yourself tries to tell yourself that you suck, please try to stop yourself.

Okay. We’re not panicking, we’re okay with the possibility of failure. Now, what do we build?

Figuring out what to build can be pretty intimidating, right? You want to make something useful, or cool, or innovative, or creative. If you don’t have a specific idea, though, don’t try to force an idea to materialise, and don’t let that discourage you from forging onwards. My suggestion is to have a standard app that you build when you’re learning something new. For me, it’s a messaging app. I try to make an app that has users, who send messages to each other. Maybe the messages have different states (‘sent’, ‘read’).

Why do this?

  • Because you can start right now! You don’t have to wait for an amazing idea to come (incidentally, don’t worry — the ideas will come. Be patient).
  • If it’s something you’ve made before, you can relax a little because a whole lot of decisions have already been made for you (for instance, your data model). You can focus your brainspace on The New Thing.
  • You could even clone something that already exists — Reddit, Twitter, IMDB, for example

My second piece of advice is to have an app that you continually add to as you progress in your learning. It’s a lot less intimidating than starting a fresh project each time, and it will give you experience in maintaining and improving projects, which is a huge part of life as a professional developer. Your learning progress might look something like this:

  • Build a Ruby on Rails app
  • Create a snazzy front-end for your Rails app with a Javascript framework, like React
  • Implement a Flux-type architecture so that you can organise your React in a way that makes more sense
  • Learn how to test Javascript and add tests to your React
  • Make your app responsive by learning and implementing Flexbox and Sass

Iterating continually over an existing project can be really satisfying — you improve your project, you improve your skills, and each time you’re able to focus directly on The New Thing you’re learning.

In part two and part three, we’ll be looking at other types of projects you can build while you’re learning, taking detours, and what to do when you get stuck.