Разница в продуктивности между хорошим программистом и плохим программистом уже давно известна. Спасибо Фрэду Букс (Fred Books) за то, что все посчитал, измерял и рассказал другим в своей книге Мифический Человеко-месяц
Менеджеры программных проектов давно поняли, что хорошие и плохие программисты очень сильно различаются между собой по производительности. Однако реально измеренные величины поразительны. В одном из исследований Сакман (Sackman), Эриксон (Erikson) и Грант (Grant) измеряли производительность труда в группе опытных программистов. Внутри одной лишь этой группы соотношение между лучшими и худшими результатами составило примерно 10:1 по производительности труда и 5:1 по скорости работы программ и требуемой для них памяти! Короче, программист, зарабатывающий 20 тысяч долларов в год, может быть в десять раз продуктивнее программиста, зарабатывающего 10 тысяч долларов. Правда, возможно и обратное. Полученные данные не выявили какой-либо корреляции между стажем работы и производительностью. (Я не уверен, что это всегда справедливо.)
Т.е. получается, что разница между плохим и хорошим программистом может быть измеряна по десятибальной шкале. А разница в зарплате? Нет, ну серьезно, вы видели двух программистов из одной команды, зарплаты которых отличаются в 10 раз?
Дайте угадаю. Ответ - НЕТ?
Рад что мы сошлись во мнениях. А теперь давайте посмотрим на другие профессии. К примеру, футбол. Могут ли два игрока в одной команде получать настолько разные деньги? Пожалуй ответ будет твердое ДА. Возьмем другой пример (возможно не совсем корректный) - театр. Будет ли Сергей Безруков(в роли Адама) получать столько же, сколько и Василий Притёркин, играющий зеленую траву в этом спектакле? Вряд ли. Их гонорары будут отличаться более, чем в десять раз.
Так откуда же взялась эта жизненная несправедливость? Почему талант и опыт не пропорциональны заработку программиста?
Полагаю все дело в специфике нашей индустрии. Хороший программист не пишет в десять раз больше "фишечек" и "приколяшек", чем плохой программист. Профессионал создает меньше багов, его код понятнее и лучше масштабируется. Эти вещи невозможно измерять и посчитать. И зарабатывает больше тот, кто умеет доказать, что он стоит этих денег. А вовсе не тот, кто больше сэкономит денег своему инвестору в будующем.
Продуктивность профессионального программиста заключается в меньшем количестве переписанных строк, меньшем времени, проведенном в дебаг-режиме и конечно же в малом количестве багов. К сожалению, эти вещи невозможно включить в свое резюме. Как правило, хорошо читаемый код, легко масштабируемая архитектура и удобно-тестируемый код не видны пользователям. Вашему менеджеру, инвестору или даже дизайнеру на проекте плевать на все это. Единственное, что их беспокоит, так это, чтобы проект был написан всрок.
Но тот факт, что вы сдали проект всрок, еще не говорит о высоком(или низком) уровне вашей производительности. Тот, кто вовремя закончил свой модуль может и не быть хорошим программистом - просто его задача была слишком проста или сроки были оценены пессимистично. С другой стороны, если сроки проекта были сорваны (а по статистике это ~70% проектов), то это вовсе не говорит о большой лени некомпетентности команды. Возможно проект был очень сложен технически или планировали его идиоты (а возможно и вовсе не планировали).
Существует и психологический аспект этого "феномена" - если одним программистам платить слишком много, а другим наоборот - слишком мало, то это приведет к дизбалансу в команде и подрыву командного духа (наверное, именно по этой причине многие ИТ-компании проводят политику о неразглашении заработных плат между сотрудниками).
Пожалуй это парадокс, в разработке софта: мы все знаем, что хорошие программисты существуют, но мы не знаем, кто именно. А если даже и знаем, то не уверены наверняка.