What actually helped you improve faster in Python: tutorials, projects, or competitions?
Posted by Pangaeax_@reddit | Python | View on Reddit | 31 comments
I noticed something interesting while learning. Watching tutorials made concepts feel easy, but solving problems without guidance was a completely different experience.
Small projects helped with confidence, but timed challenges and scenario-based problems exposed gaps much faster, especially around debugging, data handling, and thinking under constraints.
Curious what worked best for others here:
- building projects?
- contributing to open source?
- coding challenges?
- or just learning on the job?
What genuinely accelerated your Python skills the most?
Python-ModTeam@reddit
Hello from the r/Python mod team!
I'm afraid we don't think your post quite fits the goal we have for the subreddit in terms of quality or aims so we've decided to remove it. For more information please contact the moderators using the ModMail system.
Thanks, and happy Pythoneering!
r/Python moderation team
AutoModerator@reddit
Your submission has been automatically queued for manual review by the moderation team because it has been reported too many times.
Please wait until the moderation team reviews your post.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.
Motor-Ad2119@reddit
projects with a real problem to solve. The moment you have a real use case you care about, you stop copy pasting and start actually reading docs, debugging properly, and learning why things work the way they do. Tutorials are fine for syntax, but they don't teach you how to think through a problem
NotACoderPleaseHelp@reddit
In general? Projects.
aloobhujiyaay@reddit
Timed challenges helped me think faster, but real projects taught me more Things like deployment problems, weird environment bugs, performance bottlenecks ended up teaching more than algorithm questions for me. Also I had some good mentors to guide me I actually used Runable AI recently while testing multiple Python environments for a side project because reproducing dependency/version issues locally across setups was getting annoying fast
morganpartee@reddit
Projects are big, you'll never learn without application.
Exercism and codewars helped me the most though. All those little problems help you learn to think like a programmer. Python is easy when you get that lol
VEMODMASKINEN@reddit
Codecrafters is good too.
Zulban@reddit
I read a complete book, then lots of projects over years. Not toy projects, real stuff.
Ok-Lifeguard-9612@reddit
(sry for my non-perfect english. I'm not native.)
I was lucky enough to find a job after 6-month Python's bootcamp, but what really separate me from some of my colleague back then was the projects done in my free time.
There was no AI, so I had to put time and effort to read articles, find forums and trying to understand other's situations to let mine proceede.
What I specifically did was Conway's Game Of Life (which then led me to game dev and other good stuff).
About the "real scenario" part of your post, well...only hands-on experience could help but, trust me really well on this, every minute put into a personal project will come 1000 times back to you in positive (excerience, salary growth, connection with the community, ...).
HalfBurntToast@reddit
Projects. Specifically, an emulator. I think that writing an emulator, even for a simple CPU/VM architecture like the 6502 or CHIP-8 exposes you to a huge chunk of any language.
hotboii96@reddit
Project, and its not even close
FosanzDev@reddit
Depends on how you are. Personal projects can be a challenge if the projects are big enough, which will make you actually search and learn best practices and tools. But it will require effort from your side: if you start a project, you must finish it. Hitting yourself with a wall is what will make you grow.
If you're more worried about code quality, collaboration and so on, you'll find it easier in a job as a junior, where they can guide you little by little.
Open source projects can be really really niche and complex for juniors, but once you get the hang of it, collaborating to open source projects will be more like "ah, this feature is missing, i'll do it myself", but it already requires quite an experience.
notParticularlyAnony@reddit
Projects, working with others.
tensouder54@reddit
As much as Python is a great language, it does have it's implementation quirks. I'd highly recommend trying to solve a variety of problems in a variety of languages and to read about programming concepts rather than looking at their specific implementation details in any language. That will make you a better programmer over all and thus make you better at programming in python. And I say this because it's quicker to look up a programming language's implementation detail than it is to look up and understand a concept.
gramada1902@reddit
Just plug your app or tool or whatever man
Horror-Squirrel4142@reddit
Projects, but specifically ones where you had to ship to someone who would notice if it broke. Tutorials teach syntax, competitions teach tricks, but neither punishes you for writing code that's hard to debug three months later. The pressure of "this needs to work tomorrow and I'll be the one fixing it Saturday" is what taught me the most about typing, logging, error boundaries, and when not to add an abstraction.
The second thing was reading other people's code on GitHub — not big famous projects, but the small libraries you depend on. Most of them are 200-2000 lines of Python and the diff between an elegant one and a messy one will teach you more than a course will.
errdayimshuffln@reddit
Here how learning something new on my own works for me.
I start with tutorials. Work alongside until I get to the courses/tutorials big project. Start following to get rolling. Once I feel like I grasp and way before i finish the project, I do one of two things.
Im always thinking about what I can do with what im learning. Im always trying to think of what the things im learning can be used to do. Or of app ideas or how to make the examples im working on more interesting or different.
lord-mortis420@reddit
A job tbh. There’s nothing like working on large codebases and dealing with other people’s messes that boosts your understanding of programming imo. Greenfield projects are always good but you also miss out on the more cooperative aspects of programming
max123246@reddit
Honestly I disagree. A job definitely helps with all of the many skills related to working on a team. But I find I never push my boundaries in technical skill at work at all really. I'm on a newer project so that's been changing but typically it's just been bug fixing and figuring out how to navigate overly complex workarounds
Khavel_dev@reddit
projects, but specifically projects that scratch a real itch — automating something annoying you actually do every week. the stakes are tiny but real, so you push through the debugging instead of bailing the second it gets hard, which is what always happened to me with toy tutorial projects.
codewars/exercism are fine for syntax fluency but imo they quietly teach you to solve self-contained puzzles, not to build something that survives contact with messy real-world data. those are pretty different skills.
cidy0983@reddit
Production automation projects were my sharpest teachers. Building browser scrapers and agent pipelines means you quickly hit the gaps tutorials skip over — proper exception handling, retries with backoff, dealing with stateful sessions across process restarts. Each broken pipeline became a Python lesson I couldn't have gotten from a kata or video course.
oliver_extracts@reddit
projects, but not small ones. the thing that actually moved the needle for me was picking something just slightly too big for what i knew at the time and figuring it out as i went. tutorials give you the comfortable version of a concept, real code gives you the version where three things interact weirdly and you have to actually understand whats happening. competitions are fine but the time pressure isnt really the constraint you hit in practice.
njharman@reddit
Reading the docs front to back, then the std lib docs front to back.
SoloAquiParaHablar@reddit
Changing languages. Learning a typed language like Go or C++ forced me to write better code. Brought the learnings back to python.
EconomySerious@reddit
Doing it on paper
larsmickey@reddit
Interesting 🤔
Red_BW@reddit
Tutorials for the first 2 weeks. The good ones will give you a solid foundation. You need to spend at least 30 min each day working on it to ensure you don't lose anything, but an hour would be better.
Then switch to personal projects. Pick simple, small things like retrieve a months worth of posts in a subreddit and pull out some stats. Or make a cp or ls basic clone (just the basics, no need to try to make a full copy). Make a simple stock app that can retrieve 5 stock prices from yahoo and calculate your current value (shares x price). You want to set simple, small goals that you can realistically complete in a week spending an hour or two a day on them. Seeing apps you make work, even simple ones, builds your confidence to move on to complex programs.
For me personally, the biggest acceleration happened in those personal projects phase when I finally relented and started using linters. I really didn't understand them initially so I ignored them. I now use ruff and set everything to on (
select = ["ALL"]). Then in VSCode or Zed, as I code I see the errors reported in realtime or near and I spent the time figuring out why (at first this does slow down coding but improves learning). It would always being simple things early on like I was always forgetting the.items()when trying to loop a dict. But with "ALL" you also learn things like magic values (hard coding arbitrary limits like 100 or 1000) in code gets flagged (even though they do work) and then you look up why and learn you should use constants defined at the top for these so that they are easily identified and changeable and not buried deep in code. It can be annoying and slow you down initially but it speeds up teaching you and limits troubleshooting when executing your program since you should already troubleshoot in IDE.Cassette_Recorder@reddit
Definitely projects. You should leave the tutorial hell as soon as you are okay with defining a basic function and start building something that makes your life easier. Everything you lack, you'll pick up quickly when you need to build an actual thing.
zDibs@reddit
Projects and reading the documentation. Haven't really done any challenges but I can see them working in the same way.
Reading/watching tutorials too often end up with simply copying and not understanding the how and the why.
illuzian@reddit
Projects. I self studied programming using books when I was younger. Grapsed the basics but it doesn't go far. It wasn't until I got annoyed at something at work and wrote a Perl script to automate it that got me into learning coding proper. Deep end, bite of more then you chew, beat your head against Google and API docs until you figure it out yourself for optimal "huzzah"
plugiva@reddit
For me personally, projects accelerated learning far more than tutorials did.
Tutorials made things feel understandable, but real projects forced me to deal with:
That's where I felt the biggest jump happen mentally.
I also noticed that building something slightly beyond my current comfort level taught me much faster than endlessly consuming learning material first.