Programming in and of itself is just assembly -- dig the foundation, pour the concrete, frame the building, run the utilities, hang the drywall. There is significant art and craft in assembly, but it's a means to an end, and the craft is rarely appreciated by the untrained eye.
Programmers often get to design AND assemble simultaneously, because you can't put together something that hasn't yet been conceived -- and design is where most of the perceived value lies to the non-programmer. The final product looks nice, it feels nice, it does something amazing that I want or need it to do. WHOEVER MADE THIS IS A GENIUS! STEVE JOBS INVENTED THE IPOD! HE WAS A GREAT PROGRAMMER! etc etc. The perception of greatness overshadows the many half-truths and un-truths in the myth.
Beware lionizing "greatness" as the ultimate goal -- society tends to designate it as a shallow summary of a big thing (big number, big building, big company, big media coverage, etc). Sometimes greatness is also bestowed upon things in hindsight, after the grimy details surrounding the thing have been long forgotten or eroded into a tidy, bite-sized story.
If you're bored / hit a wall learning and applying things other people have invented, you'll need to invent some things of your own to recapture that dopamine rush that was there at the beginning. If you have nothing to invent, as others have mentioned in the comments, the next fulfilling challenge will be learning to provide quality service to others as a programmer -- to businesses, as part of a team, etc. Get paid to help them achieve their goals. Guide them through the bog that is modern technology. Provide value in quality implementation and insightful counsel, help them win their biggest wins and you'll become invaluable. In their eyes you will be great, and your reputation will start to precede you.