Я читал интервью с великим программистом (оно не на английском языке), и в нем он сказал, что «великий программист может быть в 10 раз лучше среднего», объясняя, почему хорошим программистам платят очень хорошо и почему программирующие компании предоставляют много возможностей для своих сотрудников. Идея заключалась в том, что спрос на хороших программистов очень велик из-за вышеуказанной причины, и именно поэтому компании платят очень много за их привлечение.
Согласны ли вы с этим утверждением? Знаете ли вы какие-либо объективные факты, которые могли бы это поддержать?
Изменить: вопрос не имеет никакого отношения к опыту; если вы говорите об одном великом программисте с 1-летним стажем, то он / она должен быть в 10 раз более продуктивным, чем посредственный программист с 1-летним стажем. Я согласен, что с годами опыта вещи начинают рассеиваться, но это не является целью вопроса.
источник
Ответы:
Довольно подробный обзор и анализ исследований различий в производительности представлен в двух статьях, написанных Стивом Макконнеллом :
Изменения производительности среди разработчиков программного обеспечения и команд: происхождение «10x»
Происхождение 10X - Насколько обоснованным является базовое исследование?
Первая статья ( Изменения производительности ... ) гласит:
Эта статья также имеет интересное примечание:
Вторая статья ( ... Насколько обоснованным является базовое исследование? ) Была написана в основном для критического обзора первой статьи Лорана Боссавита :
Во второй статье, в разделе « Более глубокое погружение в исследования, поддерживающее« 10x »», Макконнелл более детально проверяет ссылки, использованные в первой статье, и делает вывод:
Для полноты, список ссылок, используемых в вариациях производительности ... также цитируется ниже:
источник
По-настоящему ужасный программист может иметь производительность ниже нуля (исправляемые ими ошибки занимают больше времени, чем просто выполнение всей их работы за них).
И действительно великий программист может делать то, чего никогда не добьются бедные и средние программисты , независимо от того, сколько времени вы им дали.
Поэтому по этим причинам трудно говорить о «10-кратной производительности» или «100-кратной производительности».
Однако следует помнить, что большинство работодателей программистов не нуждаются в них для выполнения трудных задач, которые обычные программисты не могут выполнить. Большая часть написанного кода - это веб-сайты, линейка бизнес-приложений, интранет-приложения и т. Д., Большая часть которых на самом деле не так сложна. Продуктивный программист в этой среде - тот, кто лучше всех понимает и реализует потребности пользователей, а не тот, кто может написать самый умный код.
Действительно, большинству работодателей программистов было бы лучше с хорошим программистом, чем с хорошим, потому что он просто скучает и уходит. Должен найти хорошее соответствие между программистами и рабочими местами.
источник
Факты и ошибки состояний разработки программного обеспечения (Факт 2, доступный в предварительном просмотре Amazon):
(посмотрите список источников для исследования)
Конечно, если вы сравните производительность непрограммиста (или очень плохого программиста) с хорошей (с точки зрения опыта и знаний), разница может быть бесконечно большой (
n/0 == infinity
для любого положительногоn
), но это не справедливо ни толкового сравнения.Ваша зарплата может зависеть от нескольких факторов (в случайном порядке):
вместе с вашим личным ...
источник
Мой ответ "да, но будьте осторожны, как вы используете этот показатель".
Программист, который, скажем так, функционирует оптимально, это тот, кто создает функциональность и вызывает меньше ошибок, которые нужно исправить, чем его менее эффективные братья. Мне бы не трудно было поверить, что эти люди могут в 10 раз повысить производительность других, особенно если учесть, что один хороший или плохой выбор, сделанный за час, может оказать влияние на 10 часов, и программисты делают много таких выборов. большинство дней.
Но...
Вы должны быть осторожны, измеряя это. Я действительно не доверяю большинству показателей производительности, поскольку видел бесконечные случаи, когда почти все известные показатели не учитывают то, что я считаю жизненно важным для продуктивности команды. Поэтому я вообще ненавижу такие жесткие цифры за «производительность». Вот несколько примеров:
Многие измерительные системы пытались принять во внимание эти факторы, но мне еще предстоит увидеть, что есть такая, которая учитывает все эти проблемы, поэтому меня никогда не впечатляют такие факторы, как «хороший разработчик в 10 раз продуктивнее, чем посредственный ", потому что я должен задаться вопросом, действительно ли метрика учитывает всю работу, которая должна быть включена в успешный продукт или успешную, процветающую команду.
Итак, мое большое предостережение - что вы собираетесь делать с этим показателем? Я буду использовать что-то вроде этого, чтобы знать, что правильные инструменты и талант могут привести к большой разнице в том, как выполняется работа, но если вы попытаетесь оптимизировать работу в команде, где каждый человек в 10 раз увеличивает «типичный» результат, вы обязаны случай разочарования. Лучше найти способ заставить вашу команду делать в 2-3 раза больше, чем раньше, лучше работать вместе.
источник
В своей книге «Лепреконы разработки программного обеспечения» Лоран Боссавит описывает исследование 10-кратного заявления о производительности. Он обнаружил, что за этим нет убедительных цифр - претензия перешла от спекуляций к "установленному факту" в результате телефонной игры последовательно более конкретных претензий в цитировании. Сообщение в блоге, которое включает главу о требовании 10x и включает в себя соответствующие цитаты и неправильные цитаты, является фактом и фольклором в разработке программного обеспечения .
Он обнаружил, что-то вроде этого: кто-то в 1968 году провел исследование, сравнивая людей, решающих определенную проблему отладки, и обнаружил, что некоторые из них сделали это в 10 раз быстрее, чем другие. Из этого мы можем сделать вывод, что некоторые люди в 10 раз лучше решают эту проблему , или мы можем сделать вывод, что некоторым людям повезло , или широкому кругу разных вещей. Некоторые люди решили процитировать это как (это все перефразирование) «исследование (Sackman et al, 1968) показало, что некоторые программисты работают в 10 раз быстрее, чем другие». Затем выяснилось, что «исследования показали, что хорошие программисты в 10 раз лучше, чем в среднем», и, наконец, «общеизвестно, что производительность программистов варьируется в 10 раз среди людей». Затем кто-то собирает все эти цитаты, цитируя один первоисточник сказать «многие исследователи верят ...».
Конечно, это не была бы телефонная игра, если бы изменилась только достоверность утверждения: множитель также достиг 11 и выше .
источник
« Продуктивный программист в этой среде - это тот, кто лучше всех понимает и реализует потребности пользователей, а не тот, кто может написать самый умный код». (От Carson63000 answer)
Этот ключевой момент в сочетании с бетлакшмиОчки имеют огромное значение. Великий разработчик может быть великим в своей части реальности, но развалится, как только мир изменится. Возможность идти в ногу с потребностями бизнеса гораздо важнее, чем что-либо еще. В конце концов, если ваш бизнес не является технологией, бизнес не заботится о технологиях; им нужны решения. Таким образом, отличная работа с шаблонами проектирования не означает, что вы будете сидеть на корточках перед конечными пользователями, которым просто необходим дамп данных для отображения на веб-странице. Я видел, как посредственные разработчики обеспечивают себе работу, обслуживая бизнес, который их поддерживает, в то время как великие разработчики скучают и уходят в поисках бесконечной проблемы. В зависимости от вашей организации и проекта (-ов), возможно накормить этих измученных разработчиками, но, скорее всего, наступит момент, когда вы просто не Мне нужно такое количество вычислительной мощности. Эти разработчики не любят сидеть сложа руки, как процессор. Они выключатся и перезагрузятся в другом месте.
Наконец, я скажу, что все в порядке, чтобы знать, кто ваши «ключевые» исполнители, но «команда разработчиков» все еще остается командой. Чтобы повторить Бетлакшми, « что ты собираешься делать с этим показателем?«Если вам нужна команда, которая ведет себя как команда, я бы не стал фокусироваться на таких показателях. Я бы понял, что даже самый маленький игрок по-прежнему является важной частью команды. Даже при снижении производительности вашего ключа на 60% игрок, что один игрок может дать вашей команде то, что ей нужно. Узнайте, что это такое, и попробуйте умножить его. Не сжигайте своего ключевого игрока, предполагая, что он должен возглавить команду, также найдите способы умножить свои результаты, заражая других игроков этим величием. Это требует немного творчества, а не просто цифр. В конце концов, вы можете узнать, что то, что делает хорошего программиста даже не тем программистом, это могут быть его сверстники, его возможности на рабочем месте или это может быть даже ты.
источник