I live in Somaliland. I make less than 20k USD as a programmer. I was making under 8.8k USD at the same job a few year prior. I am not cheap labor. Well, at least not in the sense of quality.
The cost of living of where I live makes $8.8k/yr a great salary, let alone $20k/yr.
The reason that salaries are so low is probably just simple economics. I'm sure* my company can afford to pay me a salary that would be competitive in places like the U.S. or Europe but since there aren't any other companies hiring they know sub $20k/USD is good enough.
* I know this because the last time I demonstrated that I was capable of getting another job by receiving a job offer, I received an obscene raise. I also know this because I know of folks who earn what would be considered a competitive salary for programmers in the U.S.