This post is intended for people who don’t know the first thing about programming but who have an interest in learning in order to make web applications.

This was a boat I found myself in a couple years ago. I don’t have a computer science background at all; I studied poetry in college and never took a programming course. I decided to learn how to code somewhat on a whim and quickly became taken with it. Writing good code is not unlike writing good prose: what matters is clarity of expression and correctness of thought, where the latter is a natural consequence of the former.

Thus, programs must be written for people to read, and only incidentally for machines to execute –SICP

TL;DR:

If you don’t want to read the whole post, here’s the lowdown on what resources you should use to learn to code:

  1. Learn basic syntax and how to run Python programs on your computer: Learn Python the Hard Way
  2. Optional: Udacity’s Introduction to Programming course
  3. Practice thinking with code by tackling Project Euler problems (warning: these can be hard)
  4. Learn basics of web development with Udacity
  5. Come up with an idea for your first web application and start building it with django, which is a popular Python framework for building web applications

The Long Version

Before we start, I want to give two pieces of advice:

  1. Start coding immediately. (check out my friend Suneel’s post about this.) If you’re learning French, you don’t need perfect grammar to buy a baguette. The best thing you can do when learning a new language is use it as much as you can. Programming is the same way, except there are way fewer words and grammar rules to learn. So don’t worry about the subjunctive, just get your groceries.
  2. Get used to the feeling of not knowing. It’s an integral part of web development. No one knows everything, and the landscape shifts so rapidly that no one has a chance to orient themselves fully with their surroundings anyway. Not being discouraged by not knowing is one of the greatest assets you can have as a programmer.

First Steps (1-2 weeks)

Let me settle the question for what programming language you should learn first. Learn Python. It’s clear, easy to use, and has great libraries for every use case, including web development.

Now, check out Learn Python the Hard Way. It’s a Python tutorial that doesn’t just teach you Python syntax; it also teaches you how to write and run Python programs on your own computer. I only did the first 40 or so modules; the important thing here is to get a sense of Python syntax and how to interact with your computer like a hacker.

You might want to orient yourself a little bit too. You’re going to hear a lot of terminology thrown around, and it’ll be overwhelming at first. Suneel’s blog post was really great starting point for me, just to make familiar some of the words I had heard thrown around.

If you want more practice, also check out Udacity’s Introduction to Programming course. I’d watch the first module anyway, since it has some mind-blowing facts about how fast computers are.

Learning about Web Apps & Thinking with Code (2-4 weeks)

Now that you’ve seen Python and you have some sense of the syntax, you’re ready to start learning how to make web applications. Note that you don’t have to be fluent in Python to jump into this. Like all skills, you get good by practicing.

And a great way to practice Python is to work on some Project Euler problems. These are difficult math problems whose solutions you arrive at by writing code. I like them because they get you thinking with code, using programming language paradigms to work through knotty puzzles.

At the same time, check out this Udacity Course on web development. This is the best online course I’ve ever taken. You’ll learn all the fundamental components of web development through building a blog pretty much from scratch. You’ll implement primitive instances of the fundamental units of web development, so you’ll get a sense of tools that you’ll later rely on third-party libraries for.

Step 3: Start Building with Django (2-4 weeks)

Now that you have a general idea of how webapps work, start building your own web application with Django. You might want to do some of the chapters in the Django book to understand how Django implements some of the things you learned about in the Udacity course. I haven’t tried Django’s official tutorial, but I imagine that’s good too.

Next Steps

At this point, you’ll be able to make a simple web application. The first one I made (click “some”!) was pretty silly, but I learned a lot doing it.

You might want to learn more about JavaScript and CSS. Libraries like Bootstrap and Foundation make it pretty easy to make applications that look nicer than they should.

You’ll want to learn a little git, which is a tool to help you version your code. Set up a github account to show off your apps or Project Euler solutions.

But really, the best thing you can do to keep learning is try to get a job doing web development. Working on a large scale web application with other people helps you understand, viscerally, the problems that popular software sets out to solve (for example, I didn’t truly understand git until I started working). You’ll also get to work with programmers that have a lot more experience than you. You’ll get to read other people’s code, and get a sense of how other people work through some of the challenges of web development.

Other things you should do include: