As an example when I was first starting out I would spend 8+ hours a day programming because I found it to be a lot of fun (this was when I was in middle school, after being in school for a full day)
Currently I'm 23 and work at an early stage healthcare IT startup and I still get the same feeling from programming as I did when I first started, and I can spend hours working to solve all the problems that popup throughout product development. Sometimes I get so wrapped up into solving a problem that I have a hard time falling to sleep because my mind is constantly thinking about how to solve it, and I actually do tend to come up with a lot of my solutions during the 10-15 minutes before I finally get to sleep.
I might be predisposed to programming though because my grandpa was a programmer for over 25 years and I was always fascinated by his stories on the job
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.
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.
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
The personal project time is much more productive, the 8 hours of work, I guess, is questionable as to whether its "Writing code" as a lot is wasted wrangling with the legacy app I have to deal with, debugging old legacy code, etc but even though its writing less code I find it far more stressful than working on my own project where I am mainly writing code.
I don't advocate anyone work for an employer by spending more than 8 hours a day working unless you're being paid really well but when you work full time and want to get stuff done outside of work its inevitable that you have to spend extra time coding.
When stuff is exciting or trivial it's easy to get list and spend longer, but in general I consider it a good day of I wrote for 4 legitimate hours.
Today, I'm burnt out and have written only a single line of code in the last month, for recreational purposes. Took about two hours of work. Ugh.
Just thinking about it? Oh, a good 8 hours a day.
How much do I actually get done? Nothing, and I am such a horrible programmer.
That said, there are times you will have to force yourself anyway. As a beginner I would tackle a project you think is really interesting and work on it until it turns out as you'd imagined. Copying things others have already done is a great way to learn if you don't cheat and just copy/paste their code and call it yours.
I work as much as I feel I can, and no further.