I've been learning programming and keep running into the same problem: I can follow an example and understand what the code is doing, but when I open a blank project and try to build something similar myself, I don't know where to begin. I can usually read and explain existing code, yet designing the structure for my own project feels much harder. I'm wondering whether I should spend more time working through that initial confusion instead of immediately searching for another tutorial or solution. For those who learned programming independently, what helped you make the transition from copying examples to creating your own projects? When you've been stuck for an hour or two, what process helped you move forward?
5 Answers
It’s useful to sit with a problem and try different approaches, but searching for help is not cheating—even experienced programmers constantly look things up. Give yourself time to think, experiment, and make mistakes, then search for the specific issue you’ve isolated instead of searching for an entire finished project.
Start with pseudocode. Write down what the program should do in plain language, then break that into small steps and use the language documentation or search to translate each step into code. Tutorials can make you feel comfortable because you’re mostly copying, but the deeper learning happens when you have to decide what the first step should be.
Writing the problem out on paper can help when the blank screen feels overwhelming. List the goals, inputs, outputs, and smaller tasks in a notebook, and work out the logic there before implementing it. You don’t need to solve everything mentally—turning the problem into a sequence of concrete steps is part of programming.
Choose a small project you genuinely want to make, start from an empty project, and work until you reach a specific obstacle. Then get help with that one obstacle. Keep the scope small enough that you can produce a rough, broken first version in one sitting; it’s much easier to ask useful questions when you already know exactly what you’re trying to accomplish.
Blank-project paralysis often comes from trying to design the complete architecture before writing any code. Define the inputs and expected outputs, then build the smallest possible working slice, even if it’s hardcoded and all in one file. Once you have data moving through the program, the right structure and abstractions become much easier to see.

That makes sense. I may be trying to solve the whole design problem before I’ve even proved that the basic idea works.