I'm studying software engineering, and my introductory programming course is much harder than I expected. I can usually follow the theory, but when I have to solve a problem without an example or someone guiding me, my mind goes blank. I often rely on editor suggestions, which makes me worry that I'm not really learning.
I'm especially discouraged because many classmates seem far ahead of me. Even basic Python exercises, like writing an if statement, can feel overwhelming. A friend tries to help, but I don't always understand their explanations. I enjoy programming and don't want to give up, so I'm looking for effective resources and practice methods that can help me build problem-solving skills and become more independent.
5 Answers
When you freeze at a blank file, don’t expect yourself to produce the complete solution immediately. Write a simple print statement, run it, and then take one tiny step toward the goal. Use examples and documentation as references, but make sure you understand and modify what you use. Debugging one small piece at a time is part of learning, not evidence that you’re bad at programming.
A good way to become comfortable working independently is to extend tutorials instead of stopping when the example ends. Add a timestamp, a search feature, a different display mode, or another small improvement. You already understand the original project, so changing it gives you a manageable way to practice making decisions without being handed every step. FreeCodeCamp, The Odin Project, and beginner Python video courses can provide structured practice.
Practice is the main thing, but make the exercises small and repeatable. Try projects such as a number-guessing game, a simple calculator, a to-do list, or short scripts that automate something you do regularly. Begin with comments and pseudocode, then write the smallest working version and add one feature at a time. Eventually, try rebuilding the same kind of program without looking at your old solution.
Don’t compare yourself with classmates who may have been experimenting with code for years. Programming feels difficult at every stage; the difficult part simply changes from syntax to problem solving, then to design and architecture. Repetition will make basic constructs feel automatic, so focus on steady progress rather than trying to memorize everything immediately.
Start with the algorithm before worrying about syntax. Write down, in plain English or pseudocode, exactly what the program should do step by step. Break the task into tiny pieces, then translate one piece at a time into Python. If you can’t explain the steps on paper, the problem probably needs to be broken down further.

That’s probably where I struggle most: I try to solve the whole assignment in my head and get overwhelmed before writing anything. I’ll try breaking it into smaller checkpoints.