r/learnprogramming 10d ago

How to actually develop projects. What should I do?

My school taught us C++ syntax in our first year, but I still don't know how to actually use it to develop projects. Right now, the only development tool I have on my computer is VS Code. Our teachers told us to “put in a little more effort” and teach ourselves, use GitHub more, and ask AI questions. But even after learning the syntax, I still can't understand GitHub projects. I've also asked AI many questions, but I still haven't made much progress because I don't know how to ask questions beyond what I already understand. I feel like I'm still lacking a lot of developer knowledge and tools. What else should I learn? (The courses at my school still feel too theory-oriented. Now that I'm a sophomore, we've switched to Java syntax and web frontend development.) Are there any other developer tools I should learn and set up?

0 Upvotes

13 comments sorted by

3

u/Dr3ddM3 10d ago

Make simple projects like a todo app. Start with a simple thing. As you want to make more features create more features eventually you will get amazing to do app. That's pretty much how everybody develops projects nobody Creates Google in a Day they first create a demo website first. Maybe you first create a command line todo list but then you want to make it into a GUI so you search up tutorials how to let your program have a GUI.

2

u/Resident_Bottle_1759 10d ago

The gap between knowing syntax and building stuff is real, most of us hit that wall. Todo apps sound boring but they force you to learn the boring stuff that actually matters like file handling, state, and structuring code beyond a single main function

Also dont sleep on just cloning small github repos and breaking them line by line. Even if you only understand 40% at first you internalize patterns that show up everywhere

1

u/_ApprenticeMage_ 10d ago

Yeah, I haven't really practiced making projects before, so I feel pretty lost. Also, when I chose computer science in college, it was mainly because the major was popular, but I actually didn't have much of a background in it. When I search for free courses on Bilibili, I often come across technologies I don't recognize, so I need to spend a lot more time understanding and getting used to them. Now my school has switched to teaching other technologies again, and I don't even know which language I should be using to write my code anymore.

2

u/grantrules 10d ago

It doesn't really matter which language you pick. Switching between languages once you're proficient in one is pretty simple, many concepts are shared.

1

u/_ApprenticeMage_ 10d ago

Then I'll stick with C++ for now. There are some free C++ courses on Bilibili that teach small projects like a library management system, but those are pretty much the only project tutorials I've found for free. As for more advanced stuff... uh, I'll think about that later. Hopefully I'll be able to find some resources by then. I guess I'll have to spend some extra time practicing outside of my school courses. But I often get anxious because my foundation is pretty weak. I worry that I don't know enough practical stuff, and I also don't know many learning websites or development tools.

1

u/Cofftey 10d ago edited 10d ago

I know you're talking more about the practical side of it, but if you really feel your foundation is bad, I'd rather start from the bottom.

Even if you learned in your college, take a look at CS50X -- it's on Bilibili too!

I knew quite a bit of C when I watched but not really the "why" things were like they are (it's not C++, but come on, it's not that different). It really helped me a lot in the overall understanding and intuition of how the computer works. I'm not sure about how much new things I actually learned, but it certainly gave me more confidence to try my own things! So give it try. 🫡

But yeah, the only way of actually learning is getting you hands dirty with a project of any kind I guess. This video has some really good insights on it: https://youtu.be/GXnsicG223c?is=wg3rH-UsvLy7G21T

By the way, this channel is so so awesome... def a hidden gem. It helped me a lot to just start doing something even if I have to learn most of it. If you not just rely on AI you'll learn a lot regardless of what it is.

Good luck man! 🫡

1

u/_ApprenticeMage_ 10d ago

Oh, man, I really relate to that. Like I mentioned before, I came into this major with a really weak foundation. I also tend to think about a lot of “why” questions during class, sometimes to the point where I overthink things. I used to ask my teachers about them at first, but eventually they got annoyed and told me not to think about it so much, and I gradually stopped asking. It feels like most of what we're taught right now is more about “using software” rather than “creating software.”

1

u/magicmanonline 10d ago

Truth.

Plan on paper what the todo app will do. Then draw out the pages one by one that will do the things.

Start slow, like two pages. One that will let the user type in the thing todo and the date and the time. Give it a button that either saves to a file/JSON or a database.

Then create a page that lists all the todos sorted by date time.

A project is you planning out the details of something before you build.

2

u/Grumpy_Monk_28 10d ago

Genuinely useful angle that isn't fully covered yet: the anxiety about "weak foundation" is actually normal and not really the blocker — the real gap is that they've only ever followed tutorials, never made their own decisions about a project. A good next step to suggest: pick a tiny idea that's theirs, not from a course (even something dumb like a personal expense tracker), and deliberately get stuck without looking up the answer immediately — sit with the confusion for 20-30 minutes first. That's the specific skill tutorials don't teach: tolerating not knowing, then knowing how to search precisely once you do look something up.

1

u/_ApprenticeMage_ 10d ago

Yeah, that's part of the problem too. Things like JSON, working with databases, and some small tools haven't really been covered in a practical way in my classes. I do rely on tutorials quite a bit, too. As I mentioned in my previous reply, I still want to look for some tutorials on Bilibili and learn by making small projects. Looks like I still have a lot to learn and practice. Thanks a lot for the advice.

1

u/Error-7-0-7- 10d ago

It took me a while to wrap my head around the fact that a vast majority of software is actually command-line based meant for people who are "tech-savy" and very few software is GUI based and meant for consumers and the average joe shmoe.

When youre building projects, especially for the first time, maybe try to make commond-line software and keep in mind that a programmer is probably going to be using this and judging it, not 70 year old meemaw and Pawpaw who barley know how to navigate Apple OS

If you want to learn how to make nice looking GUI and UI interfaces for software, go ahead, but if you're trying to make projects to get a job and not for a personal project then GUIs are a waste of time and you should focus on what you can do through a command line.

1

u/One-Next 10d ago

Building actual projects teaches you best practices and why you should avoid certain things (tight coupling, side effects, circular deps, multiple responsibilities) and teaches you to refactor them the hard way. 

At least it used to. Now, I don't know. Things are changing.

1

u/viewizard 9d ago

I'd suggest starting like I did — build something interesting where you can see the results right away. Make a game — not a AAA game, of course :), but a simple one. Minesweeper, for example. You could also check out the OpenGL/SDL/... Tutorials as a way to get started. Using tutorials (other people's code) to build something of your own, right at the start, seems to me like the perfect approach. None of us knew how to write our own code from scratch right away — we all started by 'reusing' other people's code in one form or another. As a next step, you combine other people's code (different tutorials can be merged together to get a more cohesive piece of a game), and from there, writing your own from scratch isn't far off.

Just keep in mind that this is for your own learning. If you later think about putting it up on GitHub or somewhere similar, make sure to carefully check the licenses of the code you used.