There's only so good you can get at programming. Beyond that, most of your time is spent on debugging trivial issues or trying to keep your knowledge of the overwhelming amount of tools and platforms up-to-date. If you're a really great programmer you might be able to get 3x as much done as an average programmer, but you won't be able to get 10x as much done to warrant 10x higher pay.
Programming is just one step above working on an assembly belt. There's plenty of competition for your position including from cheap foreign workers from the 3rd world and, since your job can be done remotely, you're even more expendable.
That technology is a luxury, makes your position nonessential. You will be worthless if Western civilization ever fails and drops out of the Technological Age.
When you stare into computers all day you aren't developing social skills or really any skills that would be applicable to most other jobs. If you don't want to be a programmer forever, the sooner you stop wasting your time staring into computers, likely, the better.
If you want to be highly valuable, you need to have skills that are rare and desirable, that make oodles of money or change the world. Such skills are usually of a social, political, or otherwise creative nature - things that can't be learned from a textbook by anyone capable of logical thinking.
Programming is simply grunt work. It's the grunt work of dealing with the disarray of present day technology. As we advance and become more organized and cohesive, the need for programmers will be reduced.