Learning to Code (Part 3 of 3): Doing It
A proposed curriculum & list of online resources for somebody who is learning how to code. (Geared towards Python + Django)
(This is a cross-post from my blog; come visit the original!)
(This is part two of my short series about my experience learning how to code. First post can be found here, and the second here.)
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:
- Harvard’s Introductory CS Class, CS 50 — note that you can toggle past semesters’ content at the upper rightUdacity’s Introduction to Computer Science, or one of their other introductory coursesA Codeacademy course
- If you have had at least a bit of basic programming before and want a Python-focused introduction, try one of:
- Learn Python the Hard Way, which is a good refresher of basic programming concepts Google’s Python Course, which moves a bit faster through the basics
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:
- Codeacademy has a course on pretty much all of the above topics:
- HTML / CSS / Javascript / jQuery
- Treehouse has a track dedicated to web design, which encompasses HTML, CSS and more
- The website w3schools has HTML, CSS, and jQuery tutorials. Though the site may not be as smooth as some others, I find myself often getting directed when Googling questions!
- Since HTML, CSS and Javascript are so fundamental to web development, there are many other quality resources out there.
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 nerdier: Dungeons & Developers
- For the lover of clean designs: bento