Let’s begin! The first section is for those of you who haven’t touched Python yet, or are just starting out and need an extra push.
When you first start learning a skill, there’s huge enthusiasm and a period of fast learning and progression, followed by a big void of uncertainty, doubt, and impostor syndrome.
In other words, you go from, “This is great, I’ll be a Python master in no time!” to, “Why do I even bother, I could never be a developer...”
Once this happens, many people stop trying to learn and abandon their quest for knowledge.
That’s why it’s important to start with a clear goal in mind. In that spirit, the first site we want to recommend is “Automate the Boring Stuff.”
It’s a book you can read online for free, or buy a physical copy. In it, software developer and teacher Al Sweigart takes you through the very basics of Python, then teaches you how to scrape the web for information, analyze documents, automate email sending, and a bunch of other useful things.
The material is designed to be understood by non-programmers, so it’s great for people who have no previous experience with coding or programmers looking for an easy starting point to get acquainted with Python.
What really sets “Automate the Boring Stuff” apart from other courses is that it gives you a clear path to follow. You learn concepts and get to apply them in real-world examples. It teaches you practical applications of Python, proving how powerful and useful the language can be.
Most importantly, it will help you stay on the right learning track.
Next, the most basic—and most often overlooked—part of learning any programming language: the documentation.
When you’re learning a programming language, the documentation is the first place to look for answers to questions you have or things that are unclear to you. The Python Docs are comprehensive and a lot of work has been put into making them as useful as possible.
In the Docs, next to descriptions of everything, you’ll find:
These things will save you a lot of time when you’re trying to grasp the basics and should be your starting point when you encounter a problem you can’t solve.
Before you go ask a question on Stack Overflow, look for an answer in the Docs and do some googling (which will probably direct you to existing threads with answers on Stack Overflow).
Still no answer? Stack Overflow it is.
In the early stages of learning, when even the simplest code seems like arcane dragon magic, it helps to gather multiple perspectives. That’s why it’s useful to have several courses where you can look up the same concept and collect different answers for a deeper understanding of the issue at hand.
This way, the fundamental concepts of Python will be etched into your brain, which will help a lot when you move on to the intermediate stage.
A great resource for beginners, with detailed tutorials on Python fundamentals and some higher-level stuff that will get you excited about what Python can do.
The tutorials are well written, in the form of blog posts accompanied by images and screenshots.
This is a course on the basics of Python, from a site that has plenty of courses for higher skill levels, as well.
A bit different from Guru99, this one has a video for every tutorial and an article with code examples explaining the concepts.
You might have to spend a bit to get access to premium materials here, but there’s a lot of great free stuff you’ll find really useful, too. Especially when it comes to the very fundamentals.
Real Python has both video courses and article-form tutorials with code examples and quizzes to test your knowledge.
Let us now move away from recommendations for Python beginners and on to the next part.
You’ve been learning Python for a while. You have a good grasp of the fundamentals. You’re eager to start building something more.
Where should you go?
It’s easy to get stuck in a cycle of going through different tutorials in order to really understand the fundamentals. For a while it might even be beneficial, but if you get caught up in the basics for too long, it will get really hard to push through to the next stage of your Python education.
Most programmers will agree that the best learning experience is doing something practical. That’s why “Automate the Boring Stuff” is so great for beginners, because you get to use Python in real-world examples very quickly.
The intermediate level is the trickiest when you’re learning a new skill. You know the basics, but you don’t know how to apply them to solve complex, real-world issues. You might not even be sure what type of issues you can solve with your knowledge. What’s worse, tutorials and guides don’t tutor or guide you anymore.
There’s very little online in terms of good materials for intermediate Python programmers. Luckily, we know of at least one great site.
Fortunately for the intermediate Python programmer, there’s a great resource called Full Stack Python. It provides tutorials and explanations for everything that goes beyond the Python basics, including different types of Python frameworks, databases, tools, and best practices for building, testing, and rolling out Python applications in the real world.
So now, the same way you looked up Python Docs whenever you didn’t know something about the language, you can look up Full Stack Python whenever you need to understand anything beyond Python fundamentals.
There are several definitive paths you can take as an intermediate Python developer. Your best bet will probably be a combination of all of them (if it’s possible):
Just think of an application you’d like to build and... start building it! Sure, it will be scary at first, but with Python documentation, Full Stack Python, and Stack Overflow to help, you’ll get it done eventually and learn a ton on the way.
At this level, you might get hired for an internship at a startup or software house. If you do, it will provide you with a clear path to expanding your education and you’ll already be earning real-world coding experience.
Find open-source projects that interest you and are based in Python. Analyze the codebase and try to become a contributor.
We’ve mentioned PythonProgramming in the beginners’ section because they offer a solid Python basics course. But that’s not all that they offer.
You’ll find plenty of courses there that will guide you toward different domains where you can use Python:
Pick a topic that interests you and dive right into it. Whichever domain you pick, try to find real-world problems and build your own apps to solve them. That’s the best—and fastest—way to get from an intermediate Python enthusiast to a professional Python developer.
Another important thing for intermediate Python programmers is learning third-party tools used daily by professional developers. These can streamline your work and come in handy in your personal projects, too.
One big part of software development is learning to use Git to manage your codebase. To learn the best practices for Git, check out LearnGitBranching. It’s an interactive course that’s beautifully designed, engaging, and provides a practical way to learn the best ways to use Git.
Another big thing is Docker. Our favorite go-to resource here is Play with Docker, which is essentially a collection of videos and educational materials regarding Docker, neatly categorized from the basics to the advanced stuff.
Finally, there’s a great series by professional programmer Ali Spittel on Dev.to, offering plenty of useful advice for intermediate-stage Python students. You’ll find no code there—just soft stuff that will give you the courage to start new projects and help you stay motivated.
We’ve talked about educational resources for beginners and intermediates. Only one part remains: sites and courses for professionals.
You’ve built several applications. You know the ropes. You’re probably working as a developer.
How do you keep improving your mastery of the language?
Now that you’re a professional Python developer, it’s important not to get complacent. There’s still a lot you can learn, either by challenging yourself or teaching others.
If you’re looking for a rewarding learning experience, you can’t go wrong with Codewars. It’s the go-to practice website for many STX Next developers, and there are several reasons why.
Standard online courses always include an element of community. It might be a forum, Facebook group, or Discord channel. The idea is for people to motivate themselves by learning from each other.
Usually, though, the community is only a small part of the course.
Codewars is different. It is purely community-driven. Users create code challenges and come up with various solutions for them. You can post problems with challenges, suggest fixes, or just ask questions about things you don’t understand.
High-ranking users manage content and moderate discussions to ensure a non-toxic environment.
The main thing you do on Codewars is solve Katas. The Codewars brand is strongly rooted in Japanese martial art culture, which is why a challenge is a Kata, ranks are in Kyu and Dan, and so on.
You can also do a Kumite, which is a bit more complex than a Kata. You post a bit of code while other people refactor or add things to it. This is for challenges that aren’t well specified yet. Once Codewarriors work it out, it can be changed into a Kata.
Many challenges aren’t code-specific, which, if you know multiple programming languages, can be particularly useful for understanding the mechanics of how Python does things compared to other scripts.
Another great feature that makes Codewars a game changer in your educational pursuit is that users can vote for the best solution. Ultimately, yours can become promoted as a best practice.
Trust me, there are few more enlightening experiences for a developer than discovering one line of code that solves a problem that took you 20 lines to solve. It keeps you humble—and humble is exactly what you should be when you’re at this stage of your Python education.
Codingame is a sound alternative to Codewars. They’re generally quite similar, with one exception: Codingame also offers a game representation of your code. What does that mean?
You get coding challenges of varying difficulty, but all of them are represented by a game scenario. This gives you a visual representation of what your code is doing.
Coding challenges in Codingame aren’t language-specific, so just like in Codewars, you can see how Python does things compared to other languages.
While Codewars seems to have no ulterior motive, other than providing a place for coders to improve, Codingame has a job-hunting component to it.
You can practice different challenges or even compete on those challenges with other developers. The best one earns the top spot in the leaderboard, which gives you bragging rights when you’re trying for a new job.
Codingames also has a simple job-search function where you fill out four inputs in a form: where you want to work, minimum salary, preferred job, and your tech stack. If and when your skills are needed, a recruiter gets in touch with you.
This concludes our list of top sites and courses for learning Python. It’s by no means comprehensive, since we only focused on the ones we’ve tried ourselves and can vouch for.
A lot more online resources offer Python education, but we wouldn’t want to promote them without being sure their quality is up to standard.
We hope our recommendations will help you on your way to becoming a master of Python. Also, if blogging’s your thing, we have a companion piece to this article that lists the best blogs to get you started on Python. Check it out here.
But maybe you haven’t yet settled on Python as your programming language of choice? If so, take a look at the many applications of Python and how it compares to other popular languages.
Are you happy with our list of Python resources? Do you think we missed something and shouldn’t have? Leave us a comment below, and we’ll get right back to you.
Last but not least, as always, if you have any other questions or concerns—don’t be a stranger! Our door is always open.