I started off working on random problems with PHP then I started working at a 1 person web development company where I learned a lot in terms of frontend development and cross browser compatibility issues and database work. Now I'm using all of the skills that I learned over the course of the years in this new startup where I'm the lead technology guy. I also picked up Ubuntu server command line administration in addition to assembling servers and deploying them.
Give it time and if you maintain the interest you'll end up learning a lot of cool stuff that will be helpful throughout your future
I think you should look into learning object oriented programming concepts. Breaking things down is a really good thing. Not only is your code easier to maintain but it's easy to test and extend. If you were to write one giant program all at once and it fails to work then you have to tackle hundreds of lines of code. By building things as modules you are able to implement functionality one class at a time and know one thing works before moving to the next.
My advice would be not to try to start a big application. If I knew what you wanted to build I could be more specific but let me give you an example. Let's say you wanted to build a music player. Instead of tackling a huge iTunes clone start by creating an app that simply lists and organizes music files in a particular folder. Then add support for playback. Then playlist creation and so on. Taking on too much at once is a noob mistake that kills the motivation to learn before you get anywhere. There was a 3 year period where I almost gave up on programming because I tried to skip over the fundamentals and got frustrated. Take it slow.
For software you first have to understand the basics of procedural programming and write simple programs that run in the terminal. When I learned C++ I first learned simple 'cout >> "whatever"' programs with if statements. Knowing this kept me from being frustrated because I understood I had to climb the proverbial "ladder".
I'm a web guy and I'm able to make some pretty cool interactive stuff now but as a beginner I had trouble changing background colors and floating elements in a row.
That's the thing that stops people. They're frustrated because there's no easy way to learn how to do the things they see and want to copy without learning the absolute basics first. Patience is a serious virtue when you're a programmer.