Разработчик
0,0
рейтинг
10 июня 2010 в 18:57

Почему программистам не платят пропорционально их продуктивности перевод

Самые продуктивные программисты на порядки производительнее своих обычных коллег. Однако диапазон зарплат обычно имеет небольшой разброс в любой компании. Даже в прелелах целой профессии уровень доходов сильно не разнится. Если некоторые программисты в десяки раз продуктивнее других, почему они не получают во столько же раз больше?

Джоель Спольски дал несколько ответов на этот вопрос в одном из своих подкастов. Во-первых, продуктивность программистов чрезвычайно различается в рамках профессии, но такого разброса может не быть в определенной компании. Кто-то, кто в 10 раз более продуктивен своих коллег, вероятнее всего уйдет, чтобы работать с другими талантливыми разработчиками, или откроет свое дело. Во-вторых, высокая производительность не всегда очевидна. Рассмотрим детальнее второй вариант.

Как кто-то будучи в 10 раз продуктивнее соратников может остаться незамеченным? В некоторых профессиях такая разница будет очевидной. Продавец, который продает в 10 раз больше, будет отмечен и соответствующим образом вознагражден. Продажи легко измерить. Какой-либо продавец будет зарабатывать на порядки больше денег других. Если бы каменщик работал в 10 раз эффективнее своих коллег, это также было бы очевидно, но этого не происходит: лучшие каменщики не могут укладывать в 10 раз больше кирпичей, нежели среднестатистический рабочий. Производство программного обеспечения не может быть измерено так же легко, как деньги или кирпичи. Лучший программист не напишет в 10 раз больше строк кода и совершенно точно он не проработает в 10 раз дольше.

Программисты наиболее эффективны тогда, когда они избегают написания кода. Они могут понять, что проблема, которую их просят разрешить, не нуждается в решении; что клиент на самом деле не хочет того, о чем их просят. Они могут узнать, где найти куски кода, которые можно использовать под их нужды. Они могут хитрить. Но именно тогда, когда они будут наиболее продуктивными, никто не скажет: «Ого! Ты только что работал в 100 раз эффективнее, чем если бы ты решал задачу „в лоб“. Ты заслуживаешь повышения.» В лучшем случае можно услышать нечто вроде «Хорошая мысль!» Может пройти некоторое время, прежде чем наступит осознание того, что кто-то регулярно предлагает идеи, экономящие время. Или, если говорить с отрицательной точки зрения, может потребоваться значительное время, чтобы кто-то понял — некоторые неистово пишут код, но не производят ничего.

Романтический образ суперпрограммиста — некто, запускающий Emacs, печатающий со скоростью автоматной очереди и дающий на выходе безупречный конечный продукт «с нуля». Более точная картина изображает кого-то, кто будет вглядываться в пустоту несколько минут, а потом скажет: «Хм, я думаю, я где-то уже видел нечто подобное.»
Перевод: John Cook
Макс @Decoy
карма
122,5
рейтинг 0,0
Разработчик
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (20)

  • +3
    А как вы измеряете продуктивность программиста? В объеме кода?
    • 0
      Согласен. Нельзя сравнивать программиста с каменщиком. Хотя, каменщик Вася, который кладет обычный кирпич, будет «продуктивнее», чем каменщик Анатолий, который кладет декоративную кладку.
    • 0
      Думаю тот, у кого вы это спросили — никак не измеряет, он просто перевел статью.
      • 0
        Вопрос, в общем-то, риторический…
        • +1
          Тем более ;)

          Чисто мое мнение продуктивность программиста можно измерить только способностью всегда в адекватные сроки выполнять возложенные задачи, либо, в случае их неадекватности, убедительно доказать это, поставив такие, в которые он уложится.

          Вся кухня «внутри» типа количества кода — вообще не может являться показателем, то понятно. Хотя некоторые считают именно так.
    • 0
      Скорее в соответствии с поставленными сроками.
      • 0
        Но тогда это ограниченная сверху величина и получается можно мотивировать только «кнутом», а «пряника» не получается.
    • +3
      Картинка не вставляется.

      www.rafihecht.com/blog/wp-content/uploads/2009/09/wtfm.jpg
  • +3
    Чтобы корова давала больше молока и меньше ела, её надо соот. меньше кормить и чаще доить.
    • +1
      — Как называется корова, которая не даёт молока?
      — жадина-говядина
      • 0
        Тушонка =)
  • +6
    Да, к сожалению все так и есть, продуктивность в профессии программиста очень абстрактная величина, и очень много факторов на нее влияют.
    Например, написать код, так сказать, в строчку — без документации, соглашений о коде, и вообще всякого рода подобии структуры — в принципе реально даже с проектом среднего масштаба, не говоря уже о мелких, которые пишутся так повсеместно, и с одной стороны это вроде как эффективно, с другой это в разы увеличивает затраты на дальнейшую поддержку и доработку, но с третьей стороны эта поддержка и доработка может и не понадобится :)
    Ну или например давний спор насчет писать с нуля или использовать готовые решения. С одной стороны кажется что готовое решение — это быстрее и лучше, но с другой готовое решение нужно еще грамотно интегрировать, подогнать под решение конкретных задач, чаще всего авторы при разработке таких вот «решений» не ограничиваются «считает 2 + 2 в полнолуние», а пытаются запихать все что попадется на глаза, за исключением разве что выпечки пирожков :) И для какого-либо несложного функционала поиск хорошего решения может занять больше времени чем собственно разработка с нуля. У готового решения могут быть дополнительные фичи, которые сначала вроде и не нужны, а потом понадобились — и вот они, и это сократит время, а могут быть и дополнительные баги, которые отловить будет уже значительно сложнее, нежели в собственноручно написанном коде, и это наоборот увеличит время разработки.

    Ну а по личному опыту — больше получает тот программист, который больше попросит, создав при этом нужный уровень видимости профессионализма :) Чем больше видимости — тем больше денег :) Профессионализм при этом желателен — но не обязателен :)
  • 0
    Хех, забыли о поддержке и расширяемости кода :)

    Ну а в общем, странно слышать что кто-то в 10 раз эффективнее. Написать коротенькую задачку — может быть. Написать модуль — уже проблематичнее. А уж на длинном проекте, хорошо если десятки процентов разницы видны.

    Имхо идеальный суперпрограммист — в первую очередь телепат, который понимает в ТЗ то что там хотели, точнее захотят, а не то что получилось написать. А уж с какой скоростью он впечатывает код — дело десятое, поскольку много раз так бывало что пишишь-пишишь, пошел покурить — пришел — все стер и пара строчек все решает.
  • 0
    В принципе, есть куча разных метрик для оценки труда программиста, их можно даже использовать, но стопроцентной качественной оценки не получится. Но метрики всё равно полезны.
  • 0
    Потому что если платить пропорционально продуктивности, то продуктивность снижается. Уже провели кучу исследований на эту тему.
  • +1
    Как кто-то будучи в 10 раз продуктивнее соратников может остаться незамеченным?

    Очень просто, не во всех компаниях уделяют достаточно внимания чтоб определять продуктивность (для них программисты это как шаманы, делают там что-то непонятное...)

    Опять же стереотипы. Некоторые начальники хотят не получить продукт, а видеть что люди работают.
    Работал как-то над одним продуктом, умудрялся за час переделать всё что коллега делал вчерашний рабочий день (а делал он так словно учится кодить первый месяц) и ещё за час, сделать то что ожидали от меня. В итоге начальник видел что я постоянно отдыхаю, а коллега постоянно работает, меня просто выкинули и сказали «ты лентяй, мало работаешь» (Слава богу это выяснилось в первый же месяц, работать на таких я и сам не рад.)
    • +1
      Если бы каменщик работал в 10 раз эффективнее своих коллег, это также было бы очевидно

      Нет, там ещё сложнее чем в программировании, нельзя уложить больше некоторого количества рядов пока не затвердеет, иначе стенка искривится, и через сутки всё всплывёт и придётся всё переделывать опять, в итоге хороший каменщик может укладывать в 10 раз медленнее, постоянно отдыхать и пить кофе, однако пользы от него будет намного больше.
  • +1
    Наткнулся еще вот на такую статью: «Видно ли, что программист работает?»
  • 0
    К счастью, все не настолько плохо как описано в статье. Если ваш начальник определяет производительность по внешнему виду, а не по количеству/качеству решенных задач — надо менять место работы (или начальника).
  • 0
    Нельзя дать оценку эффективности инженерного труда, потому что любая более-менее значительная разработка — дело командное. Потому говорить можно об эффективности команды.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.