I'm starting my second year of a software engineering degree, but I still feel like I barely understand programming. I've tried making projects for practice, yet whenever I begin something without a tutorial, I have no idea where to start. I'm currently focusing on Python and still depend heavily on step-by-step guides to get anything working. How can I move forward and become more confident building things on my own?
4 Answers
The blank screen is a normal part of learning. Start by choosing something you actually want to build, then break it into extremely small tasks. For example, with a calculator, first make the program print something, then read input, then add two values, and only afterward add more features. You don’t need to know the entire solution before you begin; figuring out the next step is part of programming.
Go back through the topics from your first-year classes and practice them one at a time. Make tiny programs for variables, conditions, loops, functions, lists, and files before combining several concepts into a larger project. You’ll make mistakes, just like when learning to ride a bike, but the important thing is to keep trying instead of waiting until you feel completely ready.
You don’t have to stop using tutorials completely. Use them to learn individual concepts, but avoid following a full project step by step. Pick small projects such as a quiz, calculator, to-do list, or guessing game, and search only for the specific problem you encounter. Progress means gradually needing less help with familiar tasks, not never looking anything up.
Try a simple number-guessing game. Generate a random number from 1 to 100, ask the user for guesses, compare each guess with the target, and report whether it is too high or too low. Start with just printing values, then add input, comparisons, and finally a loop. If you use a tutorial, type the code yourself, run it frequently, and experiment by changing small pieces instead of only watching.
A two-hour tutorial might take several hours if you pause to understand and modify the code. That’s fine. The goal isn’t to finish quickly; it’s to become comfortable writing and testing code yourself.

It also helps to rebuild tutorial projects from memory. Follow along once, close the tutorial, and try starting over yourself. Getting stuck on small details is frustrating, but that struggle is where the learning happens.