I didn't realize this until after college, but outside of a CS 101 class you can't be just a programmer. Programming doesn't happen in a vacuum - it must be applied to a domain.
For some people, a lot of whom are on this website, the domain can be computer science. Writing a compiler, database, or operating system would fall into that category. Things on the cutting edge like VR or AR would also fall into this category. This particular kind of programming has never appealed to me personally. I don't much care for programming itself or even computer science itself.
However, there are a lot of interesting problems to be solved in other domains that require programming. Economic models, biotechnology, digital synthesizers, etc.
Unfortunately, without the domain knowledge required in those fields, it's pretty hard to find a job solving those problems. All that's left is CRUD work where the domain is opaque business logic that requires little to no expertise but is dreadfully boring.
So I would go back and treat programming as a tool to be applied to problems that I care about instead of the main focus of my education.
Maybe you get lucky and have a hobby/personal interest that can fulfill this need to some degree (this partially has happened to me, apparently people who write software don't often overlap with people who cross stitch).
I do enjoy writing code but I much prefer writing code for problems or in domains that interest me.