I have wondered about this for a long time, and I haven't been able to find a suitable answer, even on this website.
When comparing an average programmer's salary to other common careers, where education is mostly required, the salaries programmers receive is usually much higher. At least in the entry & mid-levels of the job scale.
Even for programmers which don't have any sort of academic degree, the salary is very high.
Try to compare it to beginning & mid-experienced lawyers, doctors, and teachers, for example.
And it's not that programmers are a rarity nowadays. Programming resources are much more abundant than Law and Medicine.
What do you think is the cause of this?
Please try to write a full, thorough answer, and not just "ROI" or "Supply-and-Demand". These simple answers don't cover the whole issue.