Ты знаешь старую шутку. Если одному программисту требуется один день, чтобы создать какой-то код, сколько времени требуется двум программистам, чтобы создать один и тот же код? Ответ обычно составляет два дня, но в зависимости от того, насколько вы циничны, это может быть две недели или два месяца. Теперь у нас есть доказательства того, что на самом деле это лучше, чем вы думаете.
Новые исследования Насколько Целое На самом деле Больше, чем Сумма его Частей? 1 + 1 = 2.5: Сверхлинейная производительность в коллективных групповых действиях (Дидье Сорнетт, Томас Майярт и Джакомо Гецци) предполагает, что групповые проекты с открытым исходным кодом могут работать лучше, чем вы можете себе представить. Если бы результаты были пропорциональны затраченным усилиям, вы ожидали бы удвоения объема производства при удвоении числа людей, работающих над ним. Было обнаружено, что обычно коэффициент масштабирования больше похож на 2,5,
В исследовании использовались 164 проекта с открытым исходным кодом размером от 5 до 1678 программистов. Вместо того, чтобы использовать строки кода, созданные в качестве меры работы, количество фиксаций за определенный период времени было выбрано в качестве лучшего показателя производительности. Быстрая проверка показала, что они коррелируют и, следовательно, вероятно, являются мерой одного и того же.
После сбора данных было установлено, что
R ≈ c4/3
где R-количество коммитов за 5-дневный период, а c-количество активных участников за тот же период.
Если коммиты масштабируются так, как вы могли бы ожидать, то показатель будет равен единице, а производительность будет линейно масштабироваться с усилием. С измеренным показателем производительность масштабируется суперлинейно, и если вы удвоите усилия, вы получите как количество продукции:
24/3 = 2.5
Изучая взаимосвязь между размером проекта и показателем, данные показывают, что меньшие группы имеют большие показатели, но большую изменчивость, а большие группы имеют меньшие показатели, но меньшую изменчивость.
Взаимосвязь между производительностью и количеством людей для проекта веб-сервера Apache.
Следующий вопрос: почему это происходит?
В исследовании рассматривалась возможность того, что это может быть либо способ, которым один коммит запускает другой, то есть активность порождает активность, либо может быть, что в проектах иногда участвуют суперпрограммисты, которые работают усерднее, чем в среднем, или это может быть и то, и другое. Однако при тестировании этих механизмов, похоже, нам нужно что-то более сложное. Предложение состоит в том, что для соответствия модели необходимо учитывать, что разработчики отвечают на свои собственные коммиты, а другие разработчики отвечают.
Итак, теперь вы знаете, что это происходит, даже если мы не совсем понимаем, почему; два программиста могут выполнять более чем в два раза больше работы одного программиста. Более серьезно, кажется, что модель совместной работы с открытым исходным кодом хороша для того, чтобы заставить команды людей работать продуктивно.
Наконец, если для написания функции требуется одна программа в день, сколько дней требуется двум программистам, чтобы написать одну и ту же функцию?
Это не так, функция уже написана, и они могут использовать копирование и вставку — в этом настоящая красота программного обеспечения.