Educational Resources for Beginners in Python
This list is mostly Python-specific since that’s how I learned to program, but some of these resources are language-agnostic. Feel free to try some out and then drop them if they don’t work for you! The important thing is that you’re learning, so find a learning tool that fits your style and needs.
Treehouse and Lynda are both subscription websites that have tons of educational videos and practice material for you to follow along. I’ve never used Lynda for this purpose, but Treehouse is beginner-friendly and covers a lot of topics, has forums to ask questions if you get stuck, and has workspaces where you can write and run code on the website instead of needing to store it on your computer. Treehouse also has a blog you can see without having an account and might have some helpful information.
If you need free resources, MOOCs (Massive Open Online Courses) are your friend. Websites like Khan Academy, edX, and Coursera have a bunch of educational videos that are organized into courses. Some courses have a syllabus, homework, and projects. Many have forums where you can ask questions.
Learn Python the Hard Way is a free online resource, although you can pay for a physical book or tutorial videos. Zed Shaw has a very opinionated teaching method, and tends to make you do things before explaining them. This works very well for some people, but not so well for others. (He also has a variety of other Learn Code the Hard Way resources for learning Ruby, SQL, C, and regex.)
If you’re comfortable with the basics in Python and can write and use classes and short programs on your own, try going through Python Module of the Week. It’s a website based on a set of blog posts where the author went through each module in Python’s standard library. Each post has example usages for the module and its methods, and a lot of people find the organization very helpful.
A Practical Introduction to Functional Programming by Mary Rose Cook. If you’re not sure what functional programming is, check out that post and this Quora answer, and keep in mind that functional programming and object-oriented programming are not a dichotomy. You can use elements of both in the same program! Another of her blog posts, “My speech to new Recursers,” includes some great general advice (at the bottom) about what to focus on when learning how to program.
She also has “Git in six hundred words” and an extensive essay called “Git from the Inside Out,”. These are most helpful if you’re already familiar with the most common git commands, such as
git branch, etc, and want to know what git is doing under the hood when you type them. If you just want to figure out how to use git, you might find Atlassian’s git tutorials useful instead.
Relatedly, if you’re confused by how git works, that’s okay! Entire articles have been written on how unintuitive git’s interface is. I highly recommend learning the basics of how to use git from the command line and how it works under the hood at some point. But if not knowing git means you’re being blocked on writing new programs, feel free to use the desktop client in the meantime. The GitHub team has worked hard to make the desktop client easy to use, so use it if it helps!
If you’re ready to build something on your own, building a Twitter bot is usually a good start. There are a lot of resources that can help. Sumana Harihareswara’s blog post “Fisher-Price’s My First Twitter Bot” is a great tutorial in Python. Disclaimer: Twitter bots are a fun and interesting project, but learn from my mistake: make your bot either opt-in (people follow it/tweet at it/etc) or non-interactive. Nobody likes a bot that spams people.
Finding a Mentor
It’s tough to learn how to program without personalized help from a real person. Local meetups are a great way to meet both other beginners and people who can help you. Meetups specifically designed to help beginners are probably your best bet. Pyladies is an awesome group that focuses on supporting female Python programmers, has a bunch of locations, and is incredibly beginner-friendly.
I live in Portland (OR), and there’s a group here called Mentorship Saturdays that’s open to everyone and aimed at beginners who need coding help or career advice. And although you can use Meetup to find local groups wherever you are, in Portland we also have Calagator, an open source calendar specifically for tech events.
Speaking of open source, if you’re interested in contributing to an open source project (it’s great experience!) but aren’t sure how to start, Open Hatch is a great website that aims to connect beginners in open source to beginner-friendly open source projects. Open Hatch itself is open source and written in Python, so that’s one project you could work on!
Finally, the Recurse Center has just announced a new initiative called RC Start, where beginning programmers can sign up for a mentor and receive three 45 min one-on-one sessions (via Skype or in person). Go to the blog post for more info.