Разработчикам следует сосредоточиться на улучшении, а не на разнице в производительности.
Встречали ли вы статью, в которой говорится, что разница в производительности между лучшими и средними разработчиками составляет 10: 1? Вы, прочитав статью, спросили себя, где вы стоите на этой шкале?
Я знал и не знал ответа.
Я занимаюсь разработкой профессиональных ИТ-решений более 20 лет. За то время я ни разу не замечал такой разницы в производительности.
Но так ли это важно? Разве не лучше сосредоточиться на улучшении, чем сравнивать себя с другими?
В этой статье я углублюсь в происхождение этого мифа о продуктивности и покажу вам, почему это следует считать мифом.
Каково происхождение мифа?
Давайте посмотрим на оригинальное исследование Sackman et al. 1968 », которое обычно считается первоначальным исследованием, которое поддерживало утверждение о 10-кратном увеличении. Вывод этого исследования:
Статистически значимые результаты обоих экспериментов показали более быструю отладку в онлайн-условиях, но, возможно, наиболее важный практический результат связан с поразительными индивидуальными различиями в производительности программистов.
Итак, в исследовании делается вывод о том, что существует разительная разница в производительности программистов. Я взял приведенную ниже таблицу из исходного исследования. В таблице представлены результаты экспериментов, проведенных Захманом.
Во многих статьях используется разница в производительности 28: 1 из второй строки таблицы 1 «Debug hours Algebra
».
Но в отчете не говорится о том, как Сакман проводил эти эксперименты.
Томас Дики, 13 лет спустя, разоблачает миф
Тринадцать лет спустя Томас Дики исследовал исходные данные исследования Сакмана. Он написал статью об исследовании в Proceedings of the IEEE (Volume: 69, Issue: 7).
Он обнаружил, что исходное соотношение 28: 1 соблюдалось, потому что «субъекту 7 требовалось 170 часов для программирования программы« алгебра »в пакетной среде, а на машинном языке (в то время как) субъекту 3 требовалось 6 часов для программирования той же задачи в JTS (АЛГОЛ) в среде с разделением времени ».
Сакман сравнил продуктивность программиста, использующего ALGOL, язык программирования высокого уровня, с продуктивностью другого программиста, использующего машинный язык. Помимо разницы в языке программирования, они также работали в совершенно разных средах: пакетно-ориентированная среда или среда с разделением времени.
Их нельзя сравнивать! Это сравнение яблок с апельсинами.
В конце отчета Томас Дики заключает, что
«Статистика Сэкмана не проверялась».
Есть и другие исследования, указывающие на другие недостатки.
Если вы хотите узнать больше, я могу порекомендовать Лепреконов разработки программного обеспечения от Лорана Боссавита. В своей книге Лоран посвятил две главы обсуждению многих исследований. Он указывает на множество недостатков в исследованиях.
Итак, нет ли разницы в продуктивности разработчиков?
Конечно, вы знаете, как и я, что есть. Но важность и масштаб были преувеличены.
Основываясь на результатах исследований, я прихожу к выводу, что нет абсолютно никаких эмпирических данных, подтверждающих утверждение о 10-кратной производительности. Я считаю, что подобные заявления вводят в заблуждение.
Мы должны перестать продавать этот миф другим программистам. Не верьте, что есть что-то волшебное, чему вы можете научиться или чему-то научиться, чтобы стать в десять раз более продуктивным.
Вместо того, чтобы сосредотачиваться на различиях, мы должны спросить, как мы можем улучшить как разработчик. См. Мою статью о совершенствовании как разработчика.
Спасибо за чтение.
Меня зовут Патрик Калкман. Я работаю в Hoogendoorn, где мы создаем универсальные технологические компьютеры, которые предоставляют интегрированные решения для управления климатом, водными ресурсами и энергией.