Lets consider Maths, as an example to answer that.
Well, up till college, we are taught to solve problems that are already solved, towards our PhD, we come across problems that haven't been solved, they are hard, but they are not the end of it, beyond that lies a sanctum, where you must find a problem and fix it. Thats what entrepreneurs do, it may sound easy, but do not be fooled by it, because being an entrepreneur it seems easy when you have found a problem and its solution, or as Steve Jobs said " looking back, the dots connect but 20 years ago, looking forward, they did not"<p>Billions of people around the globe haven't even noticed many a problems, yet a handful of entrepreneurs did, wasn't that the first part of problem solving, and if you haven't probably noticed, you are here after all, so you might unconsciously know the answer lays somewhere around here.<p>So from my eyes, whether its programming or maths, the hardest problems that exist are the problems no one has noticed yet.<p>For your case, you might want to find a problem of programming, if you have programmed for that many years, you will surely run into one, that no one has noticed. If you haven't, as Steve Jobs also said "Keep Looking"