5b. Getting started

How do I even get started?

(This is a cross-post of a blog entry originally found here. It was written in 2014, but still holds up well today!)

A little over a year ago, I began to teach myself to code for my new job at a startup. This was, psychologically at least, a daunting task – I had no programming background except for a C++ class taken eight years ago in high school. But, I had two great support networks in place: very patient coworkers (patient even when I, a lifetime Windows user up to that point, asked where the ‘command’ key was on my new Macbook), and all the great online resources for learning how to code.

In my first couple of weeks, I roughly followed this post with an 8-week curriculum for learning how to code. Some of those links were great, but others were already a bit outdated. So, I wanted to refresh that list a bit and add some additional resources for anybody else ready to start coding but unsure of where to begin.

Note that these resources are generally geared towards the language Python and the web framework Django which is built with Python.

The basics

  • If you are completely new to programming (e.g. if you have never seen an if/else statement or for loop), here are some friendly, general introductions to computer science:
  • If you have had at least a bit of basic programming before and want a Python-focused introduction, try one of:

Learning Django

  • The Django documentation has a great “Writing your first Django app” series
  • realdjango will not only walk you through Django, but will also help you install your local development environment (which as we know, is painful)
  • After going through some of these Django resources, I found it helpful to work on a small, toy project of my own to practice what I just learned

Skills You’ll Need with Django

Because Django is a framework that helps you build web apps, you will need a bit more than Python. For example, your web page templates will be in HTML, with design styles dictated by CSS, and cool responsive events written with Javascript or a library on top of that called jQuery. Some additional learning resources to support your Django development:

For Later: Other Cool Learning Resources

After I had the very basics of coding down, other topics in computer science began to seem less daunting. Here are some other cool resources that have an educational bent:

  • If you’re curious about machine learning, or want to learn some cool skills for data analysis, I highly recommend Andrew Ng’s Coursera course on Machine Learning. It’s a great mix of video lectures and hands-on assignments.
  • If you like algorithms and math challenges, check out Project Euler, which has 400+ problems that involve both coding and mathematical reasoning
  • If you’re a bookworm, there are impressive lists of free programming e-books, such as this one or Hacker Shelf

Two notable resources that do this post, but better

If you’re looking for other guides to structure your learning, here are two cool websites that also aggregate and organize learning resources for coding:

For the lover of clean designs: bento