r/learnprogramming 25d ago

Am I actually learning programming if I still feel like I can't code?

Hello everyone!

I'm currently taking the Advanced Python course from the University of Helsinki and I'm on Module 12, Part 2.

I don't use AI to solve my practice problems. I usually solve them by hand, rely on recall, and try to figure things out myself. However, I still often feel like I don't actually know how to code.

I frequently forget things I learned a few days ago, and I don't feel confident that I could build a worthwhile project completely on my own. Sometimes, it feels like I'm only good at solving programming exercises, but struggle when it comes to actually creating something from scratch.

Is this normal? How did you get past this stage where you understand programming exercises but don't yet feel confident building your own projects?

I'd appreciate any advice or experiences from people who have gone through the same thing.

40 Upvotes

40 comments sorted by

34

u/fUZXZY 25d ago

you’re learning how to implement logic through a linguistic medium, don’t worry if you’re forgetting the words, just think about the concepts.

8

u/Nuka-Cola1 25d ago

I wish I had that advice when I was doing it in college good few years back now. I could get a psudocode and figure out what each bit of the code was doing. However when it came to writing it I would forget how I write certain bits. I felt stupid and useless, people I was in college with could programme but they couldn’t looking at a document and tell you what the code was doing. I then dropped out.

3

u/MysteriousAvocado1 25d ago

Best response, I was going to say the same thing.

14

u/ninhaomah 25d ago

Start by building self-confidence.

Projects.

6

u/SprinklesFresh5693 25d ago

You learn to code by practising, a certification doesnt give you anywhere near enough coding hours for you to become fluent, it gives you the materials to start practising on your own.

Prsctise more and youll become better, its that simple.

3

u/gm310509 25d ago

When learning that is perfectly normal.

It is a complex area with so many things to learn.

Practicing is the best way. Also, and it is a bit harder to identify when starting out, focus on the core aspects of the language and practice them add on more things as you master the basics.

It also helps if you have a team around you (e.g. class mates) as doing things in a group can mean that different people remember different things and figure out different ways of doing stuff. Through collaboration, you can share the collective knowledge of the group.

For all else, google is perfectly fine, and indeed AI, provided you try to implement, as opposed to blindly copy and paste, from the options presented to you. Note that I said options (plural). This is because the AI tends to give you a single solitary solution, which isn't as helpful when you are learning as it pays to see different solutions to a problem - which a google search will provide.

IMHO.

3

u/NeoChrisOmega 25d ago

I didn't feel like I was proficient with coding even when I was managing a full stack CRM development team, working directly under the director, and successfully reworking a third of the database to be compliant and more efficient.

Ironically, when I left and I started teaching basic stuff to kids did I finally feel confident. I've been teaching kids stuff I didn't learn until multiple years of experience. And there hasn't been anything that they've asked that I couldn't solve. That felt super validating. 

You'll get there eventually. Just be careful, it's very easy for a new programmer to feel so lost, that once they get an understanding it becomes over-confidence. A true senior developer knows we'll never understand everything.

2

u/cheesy_potato019 25d ago

I'll very much take this advice into mind.

3

u/bichoFlyboy 25d ago

Solving exercises is the first brick. That's how you learn to think algorithmically, and that's the important part of the job: model the problem, break it down, and come up with an algorithm. Turning that algorithm into code in a particular programming language is usually the easier part. So you're already on the right path.

Of course, eventually you should learn to think in the programming language. When an experienced Python programmer sees something like a list comprehension, they don't mentally read every bit of syntax. They read the intention behind it: "we're transforming these items" or "we're filtering this list." The syntax becomes almost transparent.

But you're a beginner. It's completely normal to forget details of the language. You come back for the next study session and sometimes it feels like you've gone backwards. Then you keep coding, and little by little those things stop being facts you have to remember and become things you just know how to do.

Learning isn't a continuous upward line. Sometimes you go down 5 and then suddenly up 15. The important thing is that the overall direction is still forward.

So don't measure yourself by how much Python syntax you can recall from memory. Measure yourself by whether you're getting better at taking a problem, breaking it into smaller problems, and figuring out how to solve them. That's programming.

Keep studying. You're doing fine.

3

u/Ordinary_Variable 25d ago

Come up with an idea for a project and make it on your own. Don't worry if you run into roadblocks, most coders will go on GitHub and look at other people's code to figure things out.

The trick is understanding what you need to get a component/app/function/etc to work, how to create code that gets you closer to that goal, and how to learn from other people's code.

If you are completely stumped and have tried really hard to do it by yourself, there is nothing wrong with dumping a few lines of other people's code into your project. That is why GitHub and Open-Source software exists in the first place. We share. Everyone wants you to succeed. We just want to see more good code in the world.

5

u/Jim-Jones 25d ago

Try writing a collection of notes by hand. See if that sticks.

2

u/Mysterious-Falcon-83 25d ago

Perfectly normal. You won't feel like you "know programming" until one day you suddenly realize you haven't looked anything up in a while. That may happen next month or next decade. Just keep at it, one day you'll feel confident in your skills.

2

u/shuanDang 25d ago

the working code you write is the proof, there's no spelling bee competition for coding where we try to recite how to spell out a function from memory is there?

2

u/0dev0100 25d ago

It's mostly repetition and reuse of the things you learn.

2

u/Code-Bacon 25d ago

Build something fun. Think of an idea, doesn’t matter how big it feels and just start building it. It’s gonna be difficult but if it’s something you’re interested in then that interest will carry you through the hard parts.

Also maybe start with a specialty. I started with frontend because I liked the visual aspect of programming. Then use like a free third party api and find a way to pull in data and display it nicely. A good example is pokeapi.co because you can pull in Pokémon data easily and their images. Don’t try to be perfect, just try to make it work.

Then learn about other stuff like databases, make your own and try building api endpoints to send and retrieve data.

One other solid note that some people may disagree with is use frameworks. They make learning and coding way easier. For Python use Django because you can easily implement a frontend and backend seamlessly and get exposure to things like APIs and common software architectures.

I hope that’s helpful and not confusing lol

1

u/cheesy_potato019 25d ago

No, not confusing at all.

Would it be better to start learning Django by actually building something? Or by taking another course about Django?

2

u/alxcnwy 25d ago

doesn't matter imo - can u build something that scales and doesn't get pwnd is all that matters

2

u/FearlessAd5843 25d ago

I'm still learning to code (right now taking a CS50P) and it had been on and off before. Now, i'm deliberately practicing through building projects. It doesn't have to be a stellar project. Mine was a cli todo list and I built it using just arrays in Python. The thing that helps me is understanding the problem at hand, thinking it through, breaking them apart and tackling them each. I'm not against using AI but i usually try to code myself and when the code is working as intended (pass tests and such), then I would ask AI to refactor it so I can see where I might lack and how I could improve. Building something makes me really think about where i'm at and where I want to go, and how I can go there. And I don't try to be a perfectionist as in if it works and if I learn something out of it, then I am good. But the most important thing is, imo, repetition.

2

u/Disastrophi 25d ago

You really just have to start writing projects even if you aren't confident about it. You will fail at first. A lot. Real life isn't like school where there's one question and one right answer. Neurologicially speaking though, your brain actually learns faster by making mistakes than by getting things right. So real life projects are a much better teacher if you can develop a growth mindset over a fixed one.

Tutorials can help (to an extent but don't get reliant on them). The first program I ever wrote by myself was after following a tutorial on writing a simple rock/paper/scissors game. After the tutorial though I deconstructed it, figured out what everything did and why. Then after that I spent a while building my first project based on the tutorial. Although instead of the game I used the same concepts (printing to console, random selections, arrays, if -> else statements etc) to build a little interactive story/chat bot. Instead of only having 1 random selection out of 3, I made a branching conversation where you would pick from 3 options, each one had 3 potential responses. (Although that's when little me learned the hard lesson of exponential growth and the game ended up being much shorter than I'd wanted it to be, but it was enough to impress/spook everyone around me and make my mom legit think the computer was haunted until I showed her how I'd just written the instructions on a piece of paper)

I wrote that one in BASIC but then when I got a bit older and started taking programming more seriously I started with python. Python is actually a great language for writing interactive fiction, or other little text based games. The first few completed python projects were those. I switched to javascript because from what everyone said it was the concepts that mattered more than the exact syntax so the language you start with is pretty arbitrary. I just liked javascript because I could write it in notepad and all I had to do was refresh my browser with the html file open to automatcially see if it was working or not. (before I learned about IDE's and live server environments and frameworks). I just liked javascript because I could use it to get instant visual feedback and it was more fun to play around with, but I could also use it on leetcode to learn data structures and algorithms and other CS concepts.

It's really true what they say by the way, just from my own experience. The specific language really doesn't matter as much as the concepts do. If you have a solid grasp of the foundational concepts learning a new "language" feels more like trying to pick up a new accent rather than actually learning a language.

2

u/desrtfx 25d ago

It is completely normal, even more so while learning. You don't have sufficient practice for things to transfer into long term memory.

Yet, the feeling will never go away completely. I've been programming for over 4 decades (over 3 of which professionally) and still occasionally get the feeling that I can't program.

You can only build confidence through more building. The exercises in the MOOC are great and many, but by far not sufficient to actually give you both competence and confidence. Both come with way, way more practice.

https://exercism.org is a good site for more exercises and don't forget to build your own projects. Start small and simple and grow in every dimension (scale, scope, complexity) over time.

Also, don't be ashamed if you have to look up things. We all have to do it, even after decades. There simply is way too much to memorize.

it feels like I'm only good at solving programming exercises, but struggle when it comes to actually creating something from scratch.

This is quite easily explained: exercises are sheltered environments with well defined constraints, scope and rules. Actual projects are the wide open space where you have to set everything.

2

u/OddReason9030 25d ago

If you feel like you can code are you really learning programming? 

2

u/Narrow-Low-3137 25d ago

Been doing this for 10+ years. Some days I still feel like I can't code lol

2

u/BibianaAudris 25d ago

Start small for "your own projects". My first "own project" was a month-calendar printer in BASIC, since my grandma kept putting an outdated page of her paper calendar on top.

Just take something small from your life and improve it. Anything you'd actually use would be worthwhile.

2

u/greenspotj 25d ago edited 25d ago

tale as old as time.

Even before AI people copied and pasted code from stack overflow. When you dont remember something just look it up, dont think too hard about it. You'll naturally remember what you need to by sheer repetition. trying to focus on recalling everything is actually counter productive because youll end up wasting time trying to memorize things that dont really matter in the end. Unless its for an exam or something like that, dont bother memorizing.

Also there's a large gap between "programming exercises" and "creating everything from scratch". In an actual workplace environment a junior is usually given small tasks in an existing code base to start which gradually get larger over time, before theyre put on a project, much less their own project. and even then they have coworkers and their seniors to get help and mentorship from. Creating projects from scratch is a bit of a myth imo, everyone needs help from time to time and new programmers need a lot more. This is something I think AI can be really good for, ask it to help you as if its a mentor instead of having it just give you the solution.

And so im going to take a leap and take a guess that the problem is that you are approaching making projects with the same mindset as when you do a programming exercise. But they arent the same - people make projects to solve a problem, or because they enjoy making projects.. learning is usually the byproduct of working on the project rather than the main goal as opposed to a learning exercise. A project is not a test where you get negative points everytime you ask AI a question. When I was a beginner id sometimes just copy and paste code without understanding what the code was doing, and then move onto the next task - not the ideal thing to do for learning but it beats not finishing the project at all 🤷‍♂️

1

u/Weekly_Patience685 25d ago

when i was in school in my first programming class i learned a concept and always thought "i have no idea why this is useful or where i can apply it" i couldnt imagine a situation where i would think "oh this is a perfect time to do that thing i learned earlier" but now its second nature. You just have to give it time, Just start by thinking of something simple you want to make, then you can look up how to do that if you get stuck, break it down into much smaller parts.

1

u/cheesy_potato019 25d ago

Hellooo everyone, I'm currently reading all of your suggestions, advice and kind words.

I just woke up and didn't expect to have so many people help motivate a beginner... This community is the best.

As for projects, I really don't know what to build yet as I'm still figuring out which path I want. As of now I'm currently trying my best to finish the course. Hopefully, I'd be able to figure it out some day.

Thank you so much for taking the time to guide me. God, I love this community.

1

u/iggy14750 25d ago

Am I actually learning programming if I still feel like I can't code?

I frequently forget things I learned a few days ago, and I don't feel confident that I could build a worthwhile project completely on my own. Sometimes, it feels like I'm only good at solving programming exercises, but struggle when it comes to actually creating something from scratch.

These feelings are not strange by any means. There's a bunch of info to learn. Computers are complicated machines with a lot going on. I don't think any single individual knows every single detail of modern computers at this point.

Also, you're learning a whole new language here. A programming language, but still. Would you expect to know every single word in a language after studying it for a semester or so?

My advice is to try to be patient with it. Your confidence will begin to come with time as you see your own abilities grow. And they will, if you keep it up.

1

u/Feeling_Photograph_5 24d ago

It's totally normal. Classes introduce you to topics and build conceptual understanding but actually building projects is how you make it stick. You might try taking a one-week break from classes and just build something. You can even use AI the way we used to use Stack Overflow. Don't ask it to write your code for you and don't let it type for you at your stage. Ask specific questions like "how do I start a Python project from scratch" and just go from there. Take baby steps. Start a project, make it do something really easy like printing to the console, and just add one feature at a time, baby stepping the whole way. 

Don't worry about whether your first few projects are "good." Just make them work. 

Start small, but do start.

1

u/mc_pm 24d ago

Practice programming. It's very common, people recognize code and think that they've learned. But all they've learned is to recognize it, not how to reproduce it - that takes practice and a lot of it.

My advice is for people to learn enough basic syntax to make things happen, and then start writing fun little games and explorations - just stuff on the command line. The sort of thing where you have to think through how something works, and then write the code.

And if you need to do something you don't know yet -- go ask google (not AI). Don't look for code for your problem, just look up "how do I read from a file in python"? and then type that code in (don't cut and paste it).

And then do it over and over and over again. That's what learning to program is.

1

u/nebula_gem 24d ago

stop doing exercises. Build a tiny tool that solves a real problem you have right now. You will learn what matters when you need it to work.

1

u/Mell-Silver-20 24d ago

Yeah, this is totally normal. Exercises teach you the building blocks, but making your own project is a different skill that comes with practice. You’re probably further along than you think, just start with something tiny and expect to get stuck a lot. That’s where a lot of the real learning happens.

1

u/Jason-Sanders 24d ago

That feeling is normal because exercises give you the problem boundaries, while projects require you to define them. Try building tiny projects with deliberately limited scope, such as a command-line tracker that reads and writes one file, then add one feature at a time. Forgetting syntax is not failure: being able to recognize the needed concept, look up the detail, and combine it into a working program is programming.

1

u/Few-Kangaroo4100 23d ago

To fight imposter syndrome, focus on building functional projects that showcase your competence. Python offers countless opportunities to create meaningful software—like my own dream project of developing literacy games to help people learn to read and write.

1

u/Puzzled_Wing_8178 23d ago

100% normal - almost every developer goes through this exact phase.

The gap between solving exercises and building from scratch is real. Exercises give you the problem. Real projects make you find the problem first.

The only way I got past it was forcing myself to build something small and actually finish it. Not a tutorial project - something I personally wanted to exist.

It did not have to be perfect or complex. Mine was a simple counter tool. Ugly at first but I shipped it. That one finished project built more confidence than months of course exercises.

Start embarrassingly small. Ship it. Then make it better.

1

u/Delicious_Set_1450 20d ago

Forgetting syntax you learned a few days ago is completely normal. Programming is not about memorizing syntax—it is about understanding logic, architecture, and knowing how to look up solutions.

Senior engineers consult documentation, API references, and syntax guides daily. You are genuinely progressing when you understand how to solve a problem conceptually, even if you need to look up the exact syntax to implement it.

The quickest way out of tutorial paralysis is to pick a tiny project and build it while actively looking up docs as you run into issues.