Разработчикам следует сосредоточиться на улучшении, а не на разнице в производительности.

Встречали ли вы статью, в которой говорится, что разница в производительности между лучшими и средними разработчиками составляет 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, где мы создаем универсальные технологические компьютеры, которые предоставляют интегрированные решения для управления климатом, водными ресурсами и энергией.