Собираю информацию по технологии разработки софта (в том числе и сайтостроения). Возник вопрос - а что, модное в некоторых кругах (например, являющееся одним из стандартов eXtremal proramming) парное программирование дает какой-то выигрыш в производительности? Полез в Гугль и нашел вот это:
По опыту двух проектов и по рассказам знакомых участовавших в парном программировании я вынес для себя две вещи:
1. Скорость разработки возрастает, в основном за счет того, что программистам приходится работать целый день.
2. Программистам быстро надоедает это занятие, в основном за счет того, что программистам приходится работать целый день А если серьезно, то
здесь лежит 7-мегабайтный PDF с серьезным сопоставлением "парного программирования" с одиночным. Четырехлетнее исследование, около трехсот участников, разделение на простые/сложные задачи и начинающих/средних/опытных Java-программистов. Пары при этом составлялись из программистов одинакового класса - начинающий с начинающим, профи с профи.
Вот результаты (эффект от парного программирования в сравнении с одиночным):
Здесь Duration - календарная продолжительность работы (число часов от момента получения задания до сдачи результата), Effort - реальная продолжительность работы (число человеко-часов на задачу, которое при равном времени вдвое больше у пары), Correctness - процент удовлетворяющих техтребованиям результатов (то есть часть заданий было сдано в не полностью рабочем состоянии).
А вот как выглядят те же результаты раздельно для простых и сложных задач:
Как легко видеть, результативность парного программирования по сравнению с обычным очень сильно зависит от квалификации - начинающим позволяет исправлять больше ошибок, середнякам - работать быстрее и меньше (143% Effort на двоих вместо 200%), а вот на профессионалов действует расхолаживающе (-8% по корректности). Когда квалификации середняков оказывается недостаточно (второй график, сложные задания) - парное программирование также приходит им на выручку, позволяя улучшить качество кода. А вот профессионалам работа в паре, похоже, только вредит - времени уходит больше, качество снижается.
Ну а теперь самый главный вывод. В реальной жизни (не слишком квалифицированные программисты и не слишком простые задачи) за счет парного программирования работодатель имеет возможность получить 16% ускорение разработки и 92% прирост в качестве, заплатив на 68% больше (Effort). Ускорение в 16% таких затрат, разумеется, не окупает; следовательно, основная выгода от парного программирования проявляется в том, что оно заставляет программистов работать более внимательно и выдавать более качественный код. А что такое работать более внимательно? Это и означает работать целый день, а не в ЖЖ сидеть :)
UPD. Друзья, большое спасибо! Лучшая дискуссия о PP, которую я читал!