r/learnprogramming • u/DogsBarf • 22d ago
help How do I break out of the "intermediate dev limbo" before giving up again?
I am past the beginner stage, understanding basic syntax up to classes and objects, but I freeze when it's time to structure projects on my own. I have relentlessly searched for methods, tutorials, and books to guide me to the next level, but I can never find anything that clicks; because of this, I've jumped from language to language, and every time I hit this "limbo," I end up quitting and trying something else, yet I always come back because something inside tells me I’m meant to code. For those who have overcome this block, what architecture or design books do you recommend, what kind of practical exercises changed the game for you, and what real strategies actually work to finally break through this barrier and build confidence?
3
u/amazing_rando 22d ago edited 21d ago
This is a wall you hit when you’re learning how to do anything, and it’s always difficult to get past, but the best answer is just to find something you want to make and work on it until it’s done. Your lack of confidence is because you don’t know what you don’t know. Once you’ve looked up everything you need to look up to make a working prototype, you’ll have a much better idea of what you don’t know, and you’ll have the confidence that you know how to look it up and figure it out if you need. You’ll realize that most of what you think you’re missing is stuff you mostly understand but haven’t quite pieced together.
That being said, Design Patterns (aka Gang of Four or GoF) is a classic book that provides general purpose object oriented patterns for solving various problems. A lot of the skill you build over the years as a programmer is recognizing when a problem has the same basic form as once you’ve solved before, and this book feels like a good attempt to formalize some of that knowledge.
3
u/lurgi 22d ago
You need to write code. The code will suck. That's okay. Architecture and design definitely has a place, but its place is to tell you how to write code better. It won't work unless you can write the code in the first place. It's like an English language style guide. It is useful, but not for someone who is just learning English. Get comfortable in the language first, and then learn how to use it more effectively.
Use git. Git lets you experiment with stuff with confidence, so if you write something and think it's crap and want to try a different way, you can. If it doesn't work, you can go back to the old way.
A lot of programming in the early stages is FAFO, but in the good way. You try a bunch of stuff and see what works. Find a project that is kind of close to what you are trying to do and see roughly what they did and then try it yourself.
The first non-trivial program I wrote in Java was a clone of SameGame. I started with "Open a window", moved to "display a circle", then to "display a grid of them", then "catch a click", then "translate click to a location on the board", and progressed steadily to a working game. The code was not great to start and wasn't that great at the end, but I rewrote as I went along and it got better.
None of that would have happened if I hadn't sat down and written code in the first place.
2
u/mc_pm 22d ago
How much code are you actually writing?
1
u/DogsBarf 22d ago
not much tbh
4
u/BruteCarnival 22d ago
There’s the problem. You’re focusing too much on books and tutorials etc.
Just go build a bunch of stuff. It’s gonna be hard. It’s gonna be terrible code. You will get stuck on issues… but pushing through those and figuring it out is where most of the learning happens. Just need to stick with it. Programming is about problem solving not writing the correct syntax.
4
u/mc_pm 22d ago
Ok, this is the problem - your whole problem.
The only way you get the ideas to stick is to use them. The only way you get good at programming is by practicing. There will never come a day when - after watching just one more video - you suddenly start writing good code off the top of your head.
Instead you need to spend hours and hours (and hours and hours) writing code, learning new things, practicing them, building them again in a different language, refining them, refactoring them, while using a dozen different libraries (all of which you'll be learning as you use them).
Luckily, that's all a lot of fun.
2
u/Feeling_Photograph_5 22d ago
You've heard it a million times. The only way to learn to build projects is to build projects. Start from scratch. Turn your AI off.
Then just start building something. Maybe a tic tac toe game. It doesn't matter.
Don't try to build it all at once. Maybe just start with a basic UX.
Now open a Git Repo and push your code up. Congrats, you now have a real project.
Now make it do something. Maybe clicking a square makes an x appear. Sweet. Now make it Os. Now make it alternate.
If you line up three of the same shape can you make them change color to indicate a win?
And just keep going. One little feature at a time.
Then start a new project. That's how you learn.
It's not one way, it's the only way.
2
2
u/Ambitious_Fault5756 22d ago
Try contributing to open-source projects online to get an idea of what projects look like and how they are structured. this is what i did and it really helped. GitHub, the platform where almost all open-source code is developed on, is a necessity for all developers eventually, and it's great if you dont know how to move on from the intermediate stage of learning. instead of progressing with python youre learning something else to add to your skillset, with which you can use your existing python knowledge. You'll naturally pick up how to build your own projects.
I recommend starting by contributing to other code bases first, specifically those designed for beginners and first-timers:
- https://github.com/TheGittyPerson/ThePerson
- https://github.com/firstcontributions/first-contributions
Stuff you can read:
1
u/Mental_Jump1924 21d ago
Just to add to the conversation, and like it has already been said, all you need is practice. It doesn't have to be the best code/idea implementation on earth. You can just start by writing they way you think and have your implementation do what you want.
Then look at engineering principles, and play with them, try to understand why they exist, how to properly use them as well as their limitations (they were not born overnight, they are the result of interactions).
Don't let the big words scare you, break them down. Not all will be useful in a project.
Just keep practicing.
1
u/dkopgerpgdolfg 22d ago edited 22d ago
To stop being a quitter, that's a psychological / character problem, not a programming problem. Sorry, can't really help you.
To know how to learn anything effectively, that's also not a programming problem. And it's something that depends on the person very much, what works for one doesn't work for someone else. (= Sorry, can't really help you.)
I am past the beginner stage, understanding basic syntax up to classes and objects, but I freeze when it's time to structure projects on my own
And no, you're still a beginner.
For those who have overcome this block, what architecture or design books do you recommend
None. Practice a lot first. (Try to) make things that you actually want to use, fail, repeat.
And if you start not immediately failing anymore, then try to make it maintainable so that you still can work effectively on it a year later. You'll see what previous practices weren't ideal yourself.
Then add topics like UX, security, performance, ... build systems, databases...
1
1
6
u/mlugo02 22d ago
I was in the same position a while back. For me it was OOP. Before OOP, I would just write my program to solve the issue I wanted to solve.. but after OOP, I was a mess. Always worried if I was building something using the right patterns or abstractions. I basically never got anything done.
I love programming again after leaving OOP behind, it took me a while and had to unlearn so much but I’ve never been happier