Good question. Ultimately it will depend on what you consider fun. What I mean by that is you need to find out what type of programming you enjoy. Not specific to a language (that changes) but what you enjoy creating. If you don't know, find out. Programming can be fun if you are doing what you like. It is kind of like asking "Do you like sports?". The answer will change depending on the specific sport. You might like skiing but hate golf.
Next I would ask "Where do you want to end up?". Do you have goals of ending up in a certain position or work environment? You need to find your fit. I know people that do QA work at a huge company and love it. I personally can't stand that.
Regardless you can expect to have a lot of work that isn't fun. I'm you already know that. Becoming good at something means a lot of work. A considerable amount of that won't be fun. Stick to it and you can make it to where you want to end up.
What does a day look like? It will change as you progress in your field. You can expect an average day to be filled with a few meetings to discuss status of projects. Eventually gaining insight to the effort of sizing tasks you will be working on. As your skills increase you will get involved in more of the architectural discussions (the fun stuff, at least for me). The better you get the more strategic visibility you will get. In the mean time expect to be unit testing and debugging. They say the average programmer only writes about 10 lines of code a day. Honestly, this isn't a very helpful metric for many reasons. Regardless, some days will feel true. Other days you will spend deleting code ;).
To to summarize. Find out specifically what you like to do. Focus on what you like to do and focus on creating. Creating something is what it is all about. That will always be fun.