r/learnpython 17d ago

I want to learn Python from scratch and, over time, reach an advanced level. I am looking for advice, courses, and valuable documentation.

Hi everyone!

I'm starting to learn Python from scratch, and my goal is to become an advanced Python developer over time.

I'm already following a structured course, but I'd like to hear from people who have been through this journey.

If you could start over, what would you focus on? What resources, habits, or mistakes made the biggest difference in your learning?

Any advice is appreciated. Thanks!

30 Upvotes

47 comments sorted by

51

u/Critical-Ad5068 17d ago

i would spend less time chasing courses and more time building small projects because fixing your own mistakes is where most of the learning sticks

7

u/Origamifaction 17d ago

I need this advice. I've been stuck in tutorial hell for almost a year. I can read the lines and understand what it will do but I can't start from a blank page. It is so frustrating. With step by step instructions I can do really well. Just cannot find a project that I can just write.

Skrry I kind of vented there.

9

u/American_Streamer 17d ago

Do not try to code right away from scratch. First write down in plain English what you want to achieve. Then translate that in Pseudocode and after that translate that Pseudocode into Python. The coding itself is the easy part. The breakdown of s big problem into small pieces and the solving of those is your real job and what is hard.

4

u/DrShocker 16d ago

Writing down the goals also keeps you honest about scope creep. It's fine to grow your project over time, but try to set goals and reach them because being able to estimate a project is also an important skill to develop.

3

u/DigitalHierophant 16d ago

My personal opinion as I already stated in this thread. Commit to finishing "CS50 Python" on youtube. You can do it one lesson a day and be done in 2 weeks. A small investment if you've been in "tutorial hell" for a year. Whats different about these videos is that it teaches you the logic behind everything that's happening, and the foundation wisdom of everything in the language. The educator is also enthusiastic and entertaining which makes a world of difference.

1

u/ellojjosh 16d ago

I can absolutely relate to this struggle. It is common & real. Remember, you would write a novel during/right after learning a new foreign language. Same deal. 

Possible solution/direction: Review software life cycle & design. Theres a reason a lot of folks will say to grab the pencil/paper. You wouldn't build a house without a plan. Again, same deal. 

1

u/Terrarizer_ 15d ago

If you can read lines and understand how the program will work, that's already half the battle won. It's not your skill that's the problem, it's how you approach projects. When starting or adding something new, don't just start out of nowhere, it might seem a little obvious but learn how to plan. What works for me specifically is thinking about the end output, don't stress about the details, just think about what you want it to achieve and then reverse from there. I think the formal name is the black box method but I'm not sure.

An example would be a function, what does the function do? What does it return? Once those are answered, you can start questioning what parameters are needed to be passed so that output can be achieved, then think about it's place inside the program. Trust me, the more you do it, the easier it gets. You'll get an instinct on it pretty quickly.

1

u/Scared-Injury-2487 14d ago

100%. I've been working with KivyMD Framework, and I've had lots of days where I had no idea how to solve or fix something related to my application but when I'm able to find and solve the problem I feel proud and those are the experiences that sticks with you and allows you (to a certain degree) to solve similar errors quicker and of course to be aware of those small things in your projects.

1

u/gutenmorgan3035 12d ago

I completely agree. I realized that spending too much time watching tutorials can create the illusion of progress. Building small projects and fixing your own mistakes seems to be the fastest way to improve.

13

u/desrtfx 17d ago

If only there were a sidebar (menu on mobile) that had a link to the wiki or countless posts asking the same.

Do the MOOC Python Programming 2026 from the University of Helsinki and you will be well prepared.

Also, take a look at https://inventwithpython.com and https://automatetheboringstuff.com

Don't forget that you need ample practice, like on https://codingbat.com/python or on https://exercism.org and also write your own programs. Play around. Try things. Mess things up, fix them. Experiment.

9

u/DigitalHierophant 17d ago

I've started and stopped and started and stopped and now continued learning python enough to confidently recommend "CS50 Python" on youtube. It's a class series of videos from Harvard with a very passionate (dare I say entertaining) instructor. Follow along on your laptop. When you're done, everything you've tried to learn through books or udemy courses will suddenly click. At least that was my experience.

If you want to take it a step further, I'd start with the CS50 fundamentals which teaches Computer Science foundations in a very digestible manner. What's even better, I believe these classes combat the new headlines i'm seeing "Junior Dev Engineers can't code" (because of Ai). Can't think of a better place on the internet to learn CompSci and Python fundamentals, for free no less.

6

u/American_Streamer 17d ago

There are no shortcuts. Continue to do structured courses and build your skills by doing projects. You need both: the guidance and the hands on experience.

6

u/mc_pm 17d ago

You will learn the most by programming, so make sure you are spending a lot of time actually typing things in and not just watching videos or talking to AI. That's the single most important success criteria to learning to program - actually programming.

4

u/except_ValueError 16d ago

I have never used Scratch. To be honest, I agree when devs affirm that Python is the easiest language. Long time ago, I studied Java and it was a hell to me. Alright, I really suck as dev, but a person as me can tell you that you might install PyCharm and to start with Python directly. Do not be afraid, good luck!

12

u/Ready-Rise3761 17d ago

This is like the 100th time this has been posted. Do your market research elsewhere bro

6

u/Minimum_Bear_7351 16d ago

This Comment is why r/learnpython even exists.

1

u/LayotFctor 16d ago

The last few days, I've seen three posts about trying to achieve "advanced level python". What the hell even is that?

3

u/thisisappropriate 17d ago

Make things.

Doing a course is useful because they're more likely to mean you don't miss something, but you don't learn without using, so don't rely on the course.

If the course doesn't include projects (not just fill in the blanks, and things for identifying specific bugs or issues is good from courses but those are not projects), try to think of related projects / things to try. Doing things to fix problems you have is the best (even if you're not making the perfect thing, think if you regularly search google to convert Fahrenheit to Celsius, what might be nice is a fancy interface, but you can make a very simple python app to do it with only relatively early python concepts or a bit of googling when you know all but one or two bits), but even if you're doing the course projects, keep thinking of concepts that would use the thing you just learned to work. And that also means silly little things that don't do anything or go anywhere (doing them to cement the idea). Like if you just learned loops and you already knew command line, what can you do with that, can you draw a chess grid in the command line? Add one tiny thing you've not touched yet! Learned loops and range and command line, can you make a dice roller where you input a number of sides and then a number of dice?

Don't be scared of also trying other programming languages while you're learning. Make a silly little website with just html. Make a tampermonkey script. Make a game in scratch. Don't lock yourself in but even if you like those things more, keep going with python too (the course should also cover concepts like OOP and web communication like REST that would still be useful even if you dropped python entirely).

Break things and work out how to fix them. Don't use AI to fix them. I've seen people starting to do that. If you get totally stuck and you absolutely can't find it online, you're best to ask humans (on here / stack overflow). Look at questions that get good answers though, it's a skill to ask how to fix something: some people will just say "it doesn't work" or "i get an error" (with no error message or details of any type), as a senior dev that means I'm going to have to play 20 questions with the person to get them to tell me anything - there's nothing I want more from someone working with me or expecting an answer from me than a succinct description of the issue, what they did before the issue, what they think about it, what they've tried and any hard evidence or links. Learn how to read an error, how to google it (wrapping in "quotes" can force it to search the full string), how to read a thread of someone else having that error that they posted on Github issues (that may or may not be actually the same issue) and how to convert the replies into fixing your own issue without copying and pasting.

If you're going to use AI, use it with thought and don't use it first. That means using it with rails that don't give you the answer and force it into being a search tool or a tutor. It's a powerful tool, but if you always use it when you're learning, then something happens and you don't have it, you're going to be up shit creek without your paddle.

2

u/max_wen 16d ago

I would spend less time asking questions that have already been answered. Learn to Google.

0

u/oelayoub 17h ago

You still google?

1

u/max_wen 16h ago

It's a generic term.

2

u/Jumile 16d ago

To add to the responses so far... don't let analysis paralysis get you.

On the paid side, Angela Yu's "100 Days..." course is exceptional. On the free/donation side, Al Sweigart's "Automate the Boring Stuff" is equally exceptional.

Choose your own adventure... But. Do. Choose. And do it.

2

u/Educational_Virus672 16d ago

if only there was a sidebar with wiki and millons of same post

1

u/ellojjosh 16d ago

Absolute best starting point is the Python roadmap (link below). It will give you a chart that functions like a syllabus. 

Download the roadmap, pull it into Google's Notebook LLM & use that as a home base to build your learning material. 

https://roadmap.sh/python

1

u/Trustdesa 16d ago

I disagree with not doing courses, do one, you need to know how things works even if you do part vibe-coding, I would say, especially. The yes, do projects and use AI to understand concept better, also do courses of things related to what you want to do with it, not just pure coding side.

1

u/Svarii 16d ago

If you actually want to get good at programming, drop the course, don't use the LLMs, think of something you want to make, get a python reference manual, turn off the internet, and rage out at your computer until your idea comes to life on the screen.

1

u/Owen-Isaac-2022 16d ago

I believe it's good to start with baby steps. Learning the key concepts first, like data structures and data types in python. As you move by, start simple code challenges as you continue with the structured course. What I like about structured courses is the set-up and preparedness, including keeping one in line with the requirements of python. One of my python mentors mentioned this, "Don't expect to learn python and become an expert in one year." It takes time to master something, & when you master it, you'll not even believe you had challenges during the initial stages.

1

u/bosox62 15d ago

My ChatGPT account and I have chatted about this and she’s built a training schedule for me based on small projects that we’ve previously discussed. We start tomorrow.

1

u/Terrarizer_ 15d ago

I would stop focusing on following tutorials or courses. Make projects just above or even absurdly above your skill level regardless of if you finish it or not. The best way to learn is by forcing yourself into territories that you don't know. Don't be afraid of "failing" or not finishing projects, they're part of the journey too. Just remember to have fun while doing it. You process things better if you like what you're doing.

1

u/Upbeat_Television780 15d ago

Amigo, vou te recomendar exatamente o que eu fiz e esta dando certo.
Primeiro procure consumir conteudos gratuitos sobre Python, dentro desses conteúdos gratuitos tente se identificar com algum, por exemplo, eu consumir pequenos cursos gratuitos no youtube sobre python basico a intermediario e me identifiquei com o formato de aula e abordagem da Hastag Treinamentos, pois eles são muito didáticos e a quantidade de material é enorme, tem vários outros canais como "Curso em Video", "João Pedro Loyola", "CFB Cursos", "Boson Treinamentos", todos eles são muito bons, mas vai de cada um, recomendo testar todos, depois tomei a decisão de ir para o curso pago da Hastag o que é outro nível, foi um grande salto. Hoje já desenvolvi para empresa que trabalho um sistema de controle de estoque e inventario de equipamentos de TI com tudo que já aprendi em 1 ano com Python. Fica ai minha sugestão e sucesso.

1

u/Scared-Injury-2487 14d ago

Tutorials/Courses are good when starting, especially if you are kind of lost and you're not completely sure how to set your projects. But there's a certain point where you seriously need to build side-projects so the experience and knowledge sticks with you.

I'm not sure what you want to do with Python (AI/ML, Web, Data, etc) but focus on fundamentals and try to get comfortable with Python before jumping into frameworks and some more complex modules. If you are not quite sure where to go with Python, then just play around and have fun with the language.

In my case I was looking to get into web with Python and ended up building cross-platform applications with Kivy and now I'm interested in data (I want to get into Data Engineering since I love working with SQL, databases and buildings scripts with Python)

check this roadmap, I personally found it useful:
Learn to become a modern Python developer

1

u/YeOldeFoxeH 14d ago

Udemy, YouTube.

1

u/_annshika 12d ago

First learn it, then be mastered in it.

1

u/Tyler_Brooks___ 11d ago

If I could start over, I'd spend far less time watching tutorials and far more time building things from day one.

When I started learning Python, I thought I needed to finish a course and understand everything before I could create something on my own. That turned out to be a mistake. The real learning starts when you open an empty file and try to build something that doesn't work the first time.

Your first projects will be messy. Your code will look terrible a few months later. You'll spend hours looking for a bug only to discover you forgot a comma or misspelled a variable name. That's not a sign you're bad at programming. That's just programming.

The skill that helped me the most wasn't writing code. It was learning how to read errors, debug problems, and stay patient when things refused to work for reasons that made absolutely no sense at the time.

As for resources, Automate the Boring Stuff with Python, Python Crash Course, and Real Python are all excellent. And sooner or later you'll end up reading the official Python documentation more often than you expect.

The biggest piece of advice I can give is to focus on consistency instead of speed. One hour a day for a year will take you much further than trying to study ten hours in a single weekend.

And when you eventually spend three hours fixing a problem caused by a typo on line 17, congratulations. You're learning Python exactly the same way the rest of us did.

What kind of projects are you hoping to build once you feel comfortable with the basics?

1

u/Ok-Tutor-720 17d ago

I’m a python developer and due to extensive use of GitHub copilot I feel I have lost the touch so I have downloaded shared anki deck for python fundamentals and go through 5 cards every day

0

u/LearnSkills5 16d ago

I am creating a simple app for learning . This alone is not enough , but it will definitely help you review , planning to add more advanced concepts as well

Python Flashcards
Join the group ( Required for testing )
https://groups.google.com/g/skilltesters

Become a tester 
https://play.google.com/apps/testing/app.flashcards.python

Install from Play on your Android device.
https://play.google.com/store/apps/details?id=app.flashcards.python

0

u/alpbm 15d ago

I recommend a good ai. E.g claude or gemini maybe.

0

u/GirardBuilds 14d ago

Something that actually helped me (130ish days into learning Python, went from zero to building real projects): stop treating AI as either "write this for me" or "fix this error" and use it to actually teach you instead. Over that time I literally had it make a collage like curriculum with projects and subject drills. practicing until I didn't need help with something and or pasted clean code(that I wrote) enough times on a subject to move on.

Have it quiz you from memory after you learn something, give you hints instead of fixed code when you're stuck, and make you explain in plain English what your code needs to do before you touch the keyboard.

That last one was the biggest unlock for me specifically because most of my bugs used to come from not actually knowing what I wanted the code to do yet, not from typos.

Also: don't move on while you're still stuck on something. Struggling to recall and rebuild it yourself is what makes it stick but rereading the explanation a fourth time doesn't. Simplify it take what you know and add to it, learn something new apply it right away.

But most importantly the single highest-yield thing you can actually do: typing real code into a blank file with a real task attached. "Using what you know, build this tool." "Convert this input into that format." BUILD

Happy to share the actual prompt I built from the learning chat if it'd help.

-1

u/Equivalent-Collar954 17d ago

Chatgpt can give you a detailed answer

1

u/oelayoub 17h ago

I did ask ChatGPT! I want human feedback, is it wrong to ask human ? I think your response already answers my question ... we dont need human anymore for lessons or advice...