How do I plan and run a software project
I've had programming as my hobby for almost thirteen years now. Mostly python programming (and now lately C). I'm self-taught and have acquired all I know through internet and books.
One thing I have a problem with and got a hard time finding information about, is how to plan and maintain a software project in a structured way. Maybe that's a key feature developers learn in school, but isn't sexy enough to write tutorials about... I don't know. It must however, be of great importance.
I've got a history in writing code with no planning at all. Just inventing and altering the code as I go. That usually ends up in a mess of course. At least I think so, since the code gets so much harder and harder to maintain and work with after time. With no experience in larger software projects, I tend to go for some poor choices (obviously). I think it could be avoided to some extent with proper planning.
I've tried to plan my progress too, but I don't have a clue how to do it. I usually end up getting stuck speculating it all up, and nothing gets done. I can spend hours and hours with a little piece of code, wondering if it is the right way to do it. Altering it back and forth until I just get sick of it.
Obviously no planning and some work getting done are better than nothing gets done. But there must be a better way which suits me and makes me more productive.
I really could need a helping hand here, pointing me in the right direction. Do you know a book or tutorial for me to get my hands on. How do you do it? There are probably billions of ways to do this on, but I haven't found one yet.
Please help, thank you.