How do I practice coding without just copying tutorials?
Posted by Fearless_South_2624@reddit | learnprogramming | View on Reddit | 21 comments
I've been learning Python for a few months. I can follow along with tutorials and understand what the code does. But when I try to build something on my own, I freeze. I don't know where to start.
I've tried building small things like a calculator or a to do list. But I end up looking at solutions online and then just copying them.
How do I actually practice coding so I learn to think for myself? What kind of projects helped you get past this stage?
Embarrassed-Word-977@reddit
I learned to code by reading the command list in BASIC back in the day... but anyway I digress.
Build smaller than you think. The jump from “I understand the tutorial” to “I can build something alone” is usually too big because the project is too vague.
Try this: take a tutorial project, close the tutorial, then change one thing. Not a tiny colour change. Something like add a search box or save the data to a file.
You’ll get stuck, but that’s the useful part. Look up the one thing you’re stuck on, not the whole solution.
Also write the steps in plain English before coding. If you can’t explain the steps, the coding part will feel impossible.
wpm@reddit
Tutorials are muscle reps for syntax, and to show you how certain constructs work.
Actually programming is being able to look at a problem and map the problem to those constructs as a solution. That all comes from practice. You just gotta write code.
Problems that have been solved thousands of times before like calculators and todo lists won't help if you can just go find them and copy them. Don't. Turn your WiFi off. Do whatever you have to do to not look at the solutions.
Personally, I've always found having my own shit I want to get done the best way to figure this awkward stage out. I wanted to do something weird and unique that no one else was likely to have a solution for, so I had to generalize it from "print this exact image on a receipt printer in python" to "how do I generate images in python" to Pillow and bashing my goddamn head against the desk trying to figure out how to draw what I wanted to.
It will hurt. We have a name for that hurt, it's called "learning". You'll make it.
DifferenceLeast1021@reddit
What you’re experiencing is completely normal, tutorials create “recognition skill,” but building from scratch requires “recall skill,” and that only comes with practice.
The key shift is to stop thinking in terms of full projects and start thinking in tiny steps. Instead of “build a to-do app,” think: first, just store a single task in a variable. Then print a list. Then add input. Then save it. You’re basically assembling the project piece by piece, not starting with the full picture.
Another important habit is to build without looking first, even if it’s messy or incomplete. Only go to solutions after you’ve genuinely tried and got stuck. Copying isn’t the problem, copying too early is.
What usually helps most people break this stage is building very small but real things like a CLI note saver, a password generator, or a simple file organizer. Not complex apps, just tools that do one useful thing.
At this stage, struggling is not a sign you’re stuck, it’s literally the learning process shifting from passive understanding to active thinking.
IGrowRadishes@reddit
What worked for me was doing the tutorial once, then closing it the next morning and trying to rebuild from scratch. First few times I'd get stuck after 20 minutes and have to peek, but by the third or fourth rebuild I was barely peeking at all. You see pretty quick what you actually retained vs what you just typed along to.
Playful-Sock3547@reddit
the jump from tutorials to building alone is awkward for almost everyone so do not think you are behind. what helped me was stopping the watch to copy cycle and switching to watch a little to close the tab to rebuild from memory. also try making tiny versions of projects instead of full ones. not a todo app a todo app that only adds tasks. not a calculator a calculator that only adds and subtracts. when you get stuck spend 20–30 minutes thinking before searching and if you do look something up copy the idea not the whole solution. the goal is not avoiding help it is learning how to think through problems yourself. freezing at the blank screen stage is honestly a normal part of becoming a programmer
ga2500ev@reddit
Novices tend to conflate two different skill sets when it comes to programming.
The analogy I like to use is that learning list of spelling words does not make you a novelist. Writing a book is a completely different skill set then knowing a list of words.
Understand that programming is applied problem solving. So, the skill you need to work on is the problem solving part, not the coding.
Also, understand in the modern world of programming, that assembling systems is more like snapping together. Together Legos instead of writing everything from scratch.
The combination of the two ends up being trying to figure out what pieces you need to put together the project you want to do then assembling those pieces together to make the project.
ga2500ev
Key_Use_8361@reddit
honestly copying at the beginning is normal what helped me improve was rebuilding the same thing later without looking at the tutorial tiny runable projects helped a lot because they exposed the parts i didn’t actually understand yet
illuminarias@reddit
Build things without following having a step by step flow (a tutorial).
Start a project, get stuck, look at documentation, look at examples, look at other projects, try, fail, try again, fail again, try again.
InsideHoney6401@reddit
I went through exact same thing when I was learning design software few years back. The trick that worked for me was starting with something I actually wanted to use, not just practice projects
Instead of generic calculator, maybe build something to track your fantasy league stats or calculate split costs when you go out with friends. When you have real motivation to finish it, you push through the stuck moments differently
Also try this - when you get stuck and want to look up solution, first spend like 10-15 minutes just writing down what you think might work, even if it's completely wrong. Sometimes the bad ideas lead you to better ones. Then when you do look things up, you understand why certain approach works instead of just copying blindly
The failing part never really stops, even after years you still get stuck on things. But you get better at being stuck if that makes sense
Mother_Chorizo@reddit
I see the advice to build something you want to use all the time, and I think it’s probably great for a lot of people. I am perhaps the odd one out in that I don’t really use or need or even want a lot of software, so like… there’s nothing I want to build for personal use.
I still like software development though because I like the puzzle of building stuff, so I just pull things ideas off this GitHub repo: https://github.com/practical-tutorials/project-based-learning?tab=readme-ov-file#javascript
It’s helped me learn by finding a project idea without actually having a need for some software in my life. Maybe it can help OP.
qwertydiy@reddit
Look at a real project for learning, the Odin Project, Datawars, DatCamp and freeCodeCamp all do this
Massive-Pirate744@reddit
I think every single person who has ever learned to code has hit this exact wall, so you are definitely not alone. The problem with tutorials is that they give you the illusion of competence because following along is easy, but it does not actually teach you how to solve problems when the guide isn't there to hold your hand. I honestly found that the only way to break the cycle was to just stop watching videos entirely for a bit and try to build something, even if it is incredibly stupid and broken. Just pick a tiny project like a weather app or a simple to-do list, and start writing code. You will get stuck every five minutes, but having to search for the solution yourself is when the actual learning happens. It is frustrating as hell but that struggle is the only way it sticks.
Beautiful_Baby218@reddit
I think the idea here is not about "copying tutorials" but more about learning from them, right? I mean, in the beginning what you have to do but learn? The point is to not remain stuck there, and continue to build on your own, even if it is the hardest part. Like always you have google for problems/explanations if you need. Start with something small 😄
Scared-Push3893@reddit
Honestly the biggest mistake is jumping from tutorials straight into “build a full app” lol.
Tiny projects helped me way more: - rename files - simple tracker - little CLI games - automate boring stuff
Also force yourself to struggle a bit before searching solutions. That uncomfortable part is kinda where the learning actually happens.
rackemronnie7@reddit
The freezing happens because tutorials remove the hardest part, which is figuring out what to even write next. Pick something small you actually want, ignore the cleanliness of the result, and just get it working however you can. Your first version will be ugly. That's fine. The next one won't be
Most people skip that ugly middle phase by reaching for solutions too fast. Sit in it longer than feels comfortable
ProfessorGood5473@reddit
Force yourself to think in English about a problem,
line by line,
then translate it into code
Zoom out to the see the bigger picture (the calculator) and Zoom in to see the moving parts (The Addition Subtraction buttons)
ljkhadgawuydbajw@reddit
Being stuck and confused *is* the learning. You need to figure things out and create your own solutions, they will be terrible solutions, but after enough terrible solutions youll start to make good solutions.
Due_Rise832@reddit
I make simple RPG game. Input output everything in console. But that help me a lot in the beginning.
ApprehensiveStart380@reddit
This is normal. Tutorials build understanding, not problem-solving.
Instead of copying full solutions, try this: break the project into very small steps and attempt each one on your own. For example, for a todo app, first just store tasks, then display them, then add input.
You’ll feel stuck, but that’s exactly where learning happens. The goal isn’t to avoid looking things up, it’s to struggle a bit before you do.
copperfoxtech@reddit
That is one of the hardest transitions for sure. Let's say you are making a calculator. Start from the basics, the bottom, the absolute foundation.
Don't get caught up in the bigger picture. You must break everything down to it's smallest pieces.
For a calculator you need to be able to accept input. You must be able to do stuff to it. You must be able to show the result.
Start simple: add, subtract, multiply, divide.
Also you need to sanitize what can come in to your program too, you don't want words just ints.
Start with a terminal calculator, CLI-only.
How do you accept user input in a terminal?
Create a dedicated function for each thing. You can do this. Remember keep trying again and again and again.
JohnBrownsErection@reddit
Think up a similar problem to solve compared to what the tutorial does.
That way you'll have an applicable lesson right there with a new assignment to go with it.