One thing I want to mention is related to your last line:
> Programmers in 2016 are generally very well compensated for a low risk, indoor job with a very low barrier to entry.
Most employers don't get it, but Google, Facebook, and others do; programming well has a much higher barrier to entry than people realize.
When I was 10 I could make an HTML page, when I was 14 I started incorporating JavaScript and building websites... A decade later (24), I am still improving and building bigger/better programs (full stack, but mostly data science). I went to school, worked all the way through tutoring for C, C++, and Go, and built websites as well.
Yet there are people making the same salary as me that literally started programing 4 months ago. Those people who just started cannot build a website in a week (or even a few), it takes them months. Even then, thats with help, and it will have loads of bugs.
I know because part of my job is training them. I have to explain how they just tried to access an array outside the bounds. Seriously, the other week I was interviewing a "master software engineer" for an internal role on my team and they failed a basic string flipping question... He's making at least double what I am.
To put this into greater perspective, let's walk through a mental exercise. Say programmer one introduces 1 bug every 10 lines. The second programmer introduces 1 bug every 25 lines. After 10000 lines what do we have?
Programmer #1: 1000
Programmer #2: 400
At an average of 30 minutes a lot of hours of bug fixes:
Programmer #1: 500 hours
Programmer #2: 200 hours
My point, 200 hours is 5 weeks, 500 hours is 12.5 weeks of bug fixes. I'll grant you, this is napkin math, but trust me - this is why some developers think (and probably should) get paid more. Relative to their co-workers if they can make half as many mistakes they save time both upfront, and bug catching. Now compare that to the master software engineer I mentioned, whos already making double what I am... Based on that assessment, I'd likely be underpaid.
All that being said, I generally agree, but coming from a pretty standard office, I can see why people feel underpaid. It's probably because people around them are being over paid.