I wrote a syllabus for learning Python and Django. Four people have gone through it, two are interviewing and one got a job. It's based on using a somewhat even mix of coding challenges, personal projects and books.

Syllabus

Edit July 2021:

It’s been almost a year since I wrote this post. I’ve learned a lot more about learning Python in that time. I up-leveled my own coding skills to prepare for interviews, which I just completed. I also mentored more people. I really want to make a new version of this syllabus but I don’t have the time (I’m starting a new job!). To not let perfect win over good, here are some changes I have in mind.

Start off with some edabit problems. edabit has the easiest problem of all the different code challenge sites I know of so it’s a great place to start and build confidence.

See if I can swap HackerRank mediums for leetcode Easies. The leetcode discussions are great.

Maybe swap out How to Think Like a Computer Scientist for Python Crash Course.

Drop Problem Solving with Data Structures and Algorithms. I generally like the explanations. I really dislike a lot of the code. If you’re doing the syllabus, you should probably just skip it. There is no book I know of that teaches algorithms in Python at the level I want, to the audience I want, in the code style I want. Maybe I’ll have to write it some day. Closest might be Grokking Algorithms. Check it out.

Maybe add How to Solve It. Maybe the best book for getting better at coding that isn’t about coding.

Make a “further reading” section with Fluent Python and Python Algorithms: Mastering Basic Algorithms in the Python Language.

If you have questions about these changes, feel free to message me on reddit. You can also email me at my last name at gmail. Now, on to the original post.

I've helped a few people become software engineers. The ones that learned the fastest used a mix of studying, coding challenges and personal projects. When you do all three of these things, they amplify each other. It also keeps you out of tutorial hell.

Studying (tutorials/videos/books) are how you learn about new topics and get exposed to good code. Coding challenges give you small problems to implement what you've learned and compare your solutions to other people's. Projects let you put it all together and give you something to show off when you're done.

I put together my favorite resources and then iterated on it by mentoring a few people through it. It seems to be working well. The syllabus is free and all of the books together would total up to a few hundred dollars (money very well spent IMO).

It's set up in Notion as a non-linear path. You can copy the syllabus and then mark your progress as you go. You should have 2 or 3 things that are available to work on most of the time.

It's based on my own experience of learning to code. I've taken my favorite study materials and put them in somewhat logical order. By the end of it, you will be able to make basic web applications in Django.

You won't have just created one web app following a tutorial. That can be done from no experience in a weekend. You will have built up enough knowledge to do it on your own. There is hundreds of hours of work in this syllabus.

The beginning is probably a bit fast-paced if you are absolutely new to programming. Give yourself some more time to practice. If you want a really good foundation, check out Harvard's free online course, CS50.

Focus

The first focus is on Python. Python is one of the most popular languages. It's used across many different fields (scripting, web apps, ML, data). It's also one of the easiest languages for beginners. This combination makes it a great first language.

The second focus is on making web apps in Django. Django is a web framework written in Python. Django isn't introduced until more than halfway through the tutorial.

If the goal was just to display web pages, that could be done much sooner. But the goal here is to make real programs and let people interact with them over the internet. A strong foundation in Python is essential for that.

Then what?

This syllabus is light on frontend work. If you want to focus on that, you could switch over to JavaScript when you're done. Your time with Python won't have been wasted.

If you want to stay on backend development, you can just keep making more projects. You could also learn how to make web APIs, maybe with Django Rest Framework.

You could stop on web apps all together and go to some other domain. Python is probably used there. If you already know that's what you want do, this may not be the syllabus for you. You could at least work until Django shows up and then stop.

How to use the Syllabus

  1. Go to the Syllabus page.
  2. Duplicate it (there's a link in the top right).
  3. Pick an assignment with a green check mark next to it.
  4. Click on the assignment to see the notes and URL.
  5. Do the assignment.
  6. Check off the "Finished" box.
  7. Pick a new assignment with a green check mark and repeat.
  8. Refer back to the original Syllabus to see any changes
  9. When you get stuck, unstick yourself.

When you don't know how to do something

  1. Read the documentation
  2. Search
    1. Google
    2. Stack Overflow
  3. Post
    1. Stack Overflow
    2. Subreddits

FAQ

Do you have this for X?

Check out The Odin Project for a version of JavaScript, optionally with Ruby. I don't know any others well enough to recommend.

How long will it take?

Two people going full time finished it in a little over three months.

Syllabus

Duplicate it on Notion if you want tracking.

How to Think Like a Computer Scientist
Skip sections 14 and 15.

CODE: The Hidden Language of Computer Hardware And Software

HackerRank: 30 Easy
Never spend more than 10 minutes stuck on a problem! Do even less if you're sure you can't get anywhere.
If you're stuck, just look up the answer in the comments section or online.
Prerequisites: How to Think Like a Computer Scientist

The Hitchhiker's Guide to Python: Getting Started With Python
Prerequisites: How to Think Like a Computer Scientist

The Hitchhiker's Guide to Python: Python Development Environments
Prerequisites: The Hitchhiker's Guide to Python: Getting Started With Python

Mastering PyCharm: Why PyCharm and IDEs
Prerequisites: The Hitchhiker's Guide to Python: Python Development Environments

Mastering PyCharm: Course setup
Prerequisites: Mastering PyCharm: Why PyCharm and IDEs

Mastering PyCharm: PyCharm Projects
Prerequisites: Mastering PyCharm: Course setup

Mastering PyCharm: The Editor
Prerequisites: Mastering PyCharm: PyCharm Projects

First Python Project
If you can't think of something useful, just make something fun. This should be a project that takes about 2 days.
Prerequisites: Mastering PyCharm: The Editor, HackerRank: 30 Easy

HackerRank: 60 Easy
Prerequisites: HackerRank: 30 Easy

Mastering PyCharm: Debugging Python applications
Prerequisites: First Python Project

Git Tutorials
https://rogerdudler.github.io/git-guide/
https://guides.github.com/introduction/git-handbook/
https://github.github.com/training-kit/downloads/github-git-cheat-sheet/
Just the intro and 5 minute summary: https://trunkbaseddevelopment.com/
This is a pretty high level overview. Just enough to get started.
Prerequisites: First Python Project

Mastering PyCharm: Source control
Prerequisites: Git Tutorials

Second Python Project
Prerequisites: First Python Project, HackerRank: 60 Easy

HackerRank: 90 Easy
Prerequisites: First Python Project, HackerRank: 60 Easy

The Hitchhiker's Guide to Python: Writing Great Python Code
Prerequisites: First Python Project, HackerRank: 60 Easy

Mastering PyCharm: Refactoring
Prerequisites: Second Python Project

Mastering PyCharm: Tool windows
Prerequisites: Second Python Project

Third Python Project
Prerequisites: Second Python Project, Mastering PyCharm: Source control, HackerRank: 90 Easy, The Hitchhiker's Guide to Python: Writing Great Python Code

Effective Python
Skip chapters 7 and 9
Prerequisites: Second Python Project, HackerRank: 90 Easy, The Hitchhiker's Guide to Python: Writing Great Python Code

HackerRank: 120 Easy
Link and link
Prerequisites: Second Python Project, HackerRank: 90 Easy, The Hitchhiker's Guide to Python: Writing Great Python Code

Fourth Python Project
Prerequisites: Third Python Project, HackerRank: 120 Easy, Effective Python

Python Cookbook
Skip 7.10, 7.11, 8.10, 8.11
Skip chapters 9, 11, 12, 15
Prerequisites: Third Python Project, HackerRank: 120 Easy, Effective Python

SQL Course
Skip chapters 16, 17 and 18.
Check for coupons! You should be able get it for like $15.
Prerequisites: Second Python Project

Mastering PyCharm: Databases
Prerequisites: Second Python Project

Django for Beginners
Prerequisites: SQL Course, HackerRank 120 Easy, Fourth Python Project

Mastering PyCharm: Server-side Python web apps
Prerequisites: Django For Beginners

Django Tutorial
Step 0: Set up the Django project in PyCharm. Call it "mysite" to match the tutorial.
https://www.jetbrains.com/help/pycharm/creating-django-project.html
Prerequisites: Django For Beginners

First Django Project
Use https://github.com/travisjungroth/django-base
Prerequisites: Django Tutorial

Heroku Django Deployment Tutorial
Prerequisites: Git Tutorials, Django Tutorial

Test-Driven Development with Python
Prerequisites: Django Tutorial

Mastering PyCharm: Unit testing
Prerequisites: Django Tutorial

Second Django Project
Prerequisites: First Django Project, Test-Driven Development with Python

Django For Professionals
Prerequisites: First Django Project, Test-Driven Development with Python

Third Django Project
Prerequisites: Second Django Project, Django For Professionals

HackerRank: 20 Medium
Prerequisites: Second Django Project, HackerRank 120 Easy

Problem Solving with Algorithms and Data Structures using Python
Prerequisites: CODE: The Hidden Language of Computer Hardware and Software, HackerRank 120 Easy

HackerRank: 40 Medium
Prerequisites: HackerRank: 20 Medium, Problem Solving with Algorithms and Data Structures using Python

Fourth Django Project
Prerequisites: Third Django Project, HackerRank: 40 Medium