Из очень многих факторов, но главными остаются старые добрые спрос и предложение с коэффициентом квалификации. Если на рынке труда предложение (т.е. соискателей на должность) превышает спрос (т.е. количество вакансий), то по данной специальности оплата труда падает. Я уже на ВиО приводил пример. Нанять российского PHP-кодера мы можем за 200 долларов в месяц (работающего удалённо из какого-нибудь провинциального города). И он будет счастлив, потому что по меркам его города это будет нормальная сумма за не фултайм работу. При этом, естественно, страдают столичные PHP-кодеры, которым я в жизни не буду платить столько, сколько они хотят для "достойной жизни" в Москве. Но причина этого не географическая, а в том, что на рынке труда гигантский кризис перепроизводства PHP-кодеров. Тому же программисту, на на языке Java мы вынуждены платить до 3.5 тысяч долларов в месяц, потому что они в дефиците и в достаточном количестве есть как раз только в той же Москве. Но мы постоянно работаем над тем, чтобы ребята из провинциальных городов изучали Java. Инвестируем, так сказать, в будущие кадры. Чтобы платить им хотя бы 1000 долларов, вместо 3.5т.
К дополнению №1.
Не совсем так. Точнее так, но не совсем. Факторов существенно больше. Существуют ещё такие факторы влияющие на оплату труда конкретного работника как:
1. Отношения в коллективе и с руководством.
2. Условия работы (посмотрите как работают в офисах Google и поймёте, почему Google считается самым привлекательным местом для работы, не взирая на то, что есть оплата и повыше)
3. Интерес работы (посадить талантливого кодера писать трёхстрочные программы = оскорбить кодера)
4. Социальность работы (т.е. подарки на праздники, корпоративные вечеринки, итп)
5. Престижность и стабильность компании
6. Перспективы карьерного роста внутри компании (чем выше перспективы, тем на меньшую оплату согласится работник в начале)
7. Возможность самообразования или предоставление оплаченного повышения квалификации
N. Можно продолжать долго