It takes forever to be a great programmer. Let me iterate on the the keyword here.
See, Programming is an ever changing field. There’s constantly changes to API’s and new introductions to programming languages. There’s always some new programming language, or some better way to optimize your code.
You just don’t know it yet.
Even the best of the best makes simple mistakes. Everyone is bound to, especially if you’ve spent like 6 hours on bugs alone. You’ll start to see that simple mistakes are becoming more prominent. And likely it’s time to take a break.
Nevertheless. You are never ahead of the game, but you might just be on top of it. So one day you could be a great programmer, and the next day you could just be a programmer.
To answer some of your other questions tho.
Is programming hard? Not at all. Once you understand the fundamental concept behind programming. A lot of things just involve due diligence, problem solving, and persistence. Most importantly though you need an initiative. If you never start, you shouldn’t be looking at the finish line.
Practice everyday? I wouldn’t call it that. In my opinion, programming isn’t something you stick with and set a schedule for. It’s not something that you consciously find yourself working towards.
It’s just something that you do. It’s something you want to do. And a means to accomplish what you want to do most. And when it’s something like that you don’t have to worry about practicing everyday. Because you practice every second
But really, programming is a lifestyle, whether it’s reduced to a hobby for some, or a profession for others.