It seems like your real question is "when does programming become easy and enjoyable," for which there is no universal answer. For me, part of the pleasure of the programming is the process of solving problems. It's also frequently frustrating, especially when you're blocked by something for which it's unclear what information you'd need to solve the problem. I alternate between irritation and adrenaline highs anytime I'm working on a problem that's hard for me, and the outcome of making something new work the way I want to is in itself a reward.
While you need to do a certain kind of studying to understand programming, you must practice programming to make it an useful skill.
I'm not convinced there's a "natural aptitude" for programming; the closest thing to that is a combination of determination, persistence, and willingness to fiddle until you have a deep understanding of whatever your current problem is and how to translate that into a solution. Some people have better pattern matching skills and can immediately see a viable solution given a sufficient problem statement, but for most people, this skill is hard won and comes from trying to solve smaller, composeable problems.
When I was an 8 year old, I took great pleasure in getting the machine to animate background colors or print my name a thousand times or draw a spiral or a sine wave, or making the machine draw an animated explosion when two sprites collided with each other. Usefulness wasn't even a concern of mine at that time. Now I need quite a bit more to get that same kind of joy (although I still think I would take a little pleasure in making animated explosions), but the feeling of control that you have after you've solved whatever hurdles you had in solving problem X is what makes it worth it.
I never watched the clock when I was first learning to program; I doubt that I would have had the level of concentration needed to solve anything interesting if I only gave myself an hour a day. So throw away that as a metric. Attack some simple problem that has some measure of meaning to you, whether it's "useful" or not. Solve it, no matter how much time or research it takes. Move on to a bigger problem. Repeat. You will become good enough for it to be useful when your real-world problems match up to the abstractions and techniques that you've learned. That's it.
For some people, that takes weeks or months; for some people, it's years, for some people, it's never. For some people, usefulness doesn't even matter.
Is it a worthwhile hobby? It certainly was for the years that I wasn't doing it professionally, and it occasionally came in handy as a skill when I was working on something for school or for one of my few nontechnical employers.