I'm new to programming and have taught myself along the way. I enjoy writing code and solving problems, but I've hit a roadblock while trying to create my first project. I've started from scratch four times over the past three months, and I'm unsure how to begin properly. Should I design it first, create a database, or build it feature by feature? I keep second-guessing my choices as I go, and I often find myself having to start over because everything gets too complicated. Any guidance would be appreciated! Also, forgive me for any typos or grammatical errors.
4 Answers
Have you thought about checking out online courses? Sites like Udemy have great resources, especially for learning new technologies. Just be cautious with free resources, as they may lack proper formatting for learning.
Don't worry about starting over; it's all part of the learning process! Start by outlining a minimum set of features for your project—consider it your Minimum Viable Product (MVP). Get the basic functionality working first, even if it’s just the essentials. Once you have that, you can refine it, improve the user experience, and add features from there. Keep your focus narrow initially and test each feature thoroughly before moving to the next one. It's okay to hold off on deep abstractions until you’re more comfortable with the basics.
Yes, I think you've got it! Focus on what your project needs to do right now; you can always refine things later as you get more comfortable.
Could you share a bit more about your project idea? It would help us provide more tailored advice on how to approach it.
Sure! I’m working on a school management system; something like a SaaS platform for managing private schools.
That’s a solid idea! It can really help structure your thought process.
I can tell you might need to clarify your project goals. You should have a clear objective before diving into the code. For example, my professor once assigned us to find the shortest path on a map, emphasizing that we needed to know our end goal before starting. What do you want your program to accomplish? Knowing this will guide you in addressing each feature you want to implement.
You’re right; I didn’t set clear boundaries for what the project can and can’t do. But how do I go about that?
Start with defining the core functionalities your school management system must have. That should give you a clearer picture.

So essentially, you’re recommending to do the bare minimum first and then improve on it, right? That makes sense, but I often get lost when expanding the database for new features, especially since I'm working solo. Any tips on managing that?