January 12th, 2008

Фраза дня, или Основная фишка парного программирования

Собираю информацию по технологии разработки софта (в том числе и сайтостроения). Возник вопрос - а что, модное в некоторых кругах (например, являющееся одним из стандартов eXtremal proramming) парное программирование дает какой-то выигрыш в производительности? Полез в Гугль и нашел вот это:

По опыту двух проектов и по рассказам знакомых участовавших в парном программировании я вынес для себя две вещи:
1. Скорость разработки возрастает, в основном за счет того, что программистам приходится работать целый день.
2. Программистам быстро надоедает это занятие, в основном за счет того, что программистам приходится работать целый день


А если серьезно, то здесь лежит 7-мегабайтный PDF с серьезным сопоставлением "парного программирования" с одиночным. Четырехлетнее исследование, около трехсот участников, разделение на простые/сложные задачи и начинающих/средних/опытных Java-программистов. Пары при этом составлялись из программистов одинакового класса - начинающий с начинающим, профи с профи.

Вот результаты (эффект от парного программирования в сравнении с одиночным):



Здесь Duration - календарная продолжительность работы (число часов от момента получения задания до сдачи результата), Effort - реальная продолжительность работы (число человеко-часов на задачу, которое при равном времени вдвое больше у пары), Correctness - процент удовлетворяющих техтребованиям результатов (то есть часть заданий было сдано в не полностью рабочем состоянии).

А вот как выглядят те же результаты раздельно для простых и сложных задач:



Как легко видеть, результативность парного программирования по сравнению с обычным очень сильно зависит от квалификации - начинающим позволяет исправлять больше ошибок, середнякам - работать быстрее и меньше (143% Effort на двоих вместо 200%), а вот на профессионалов действует расхолаживающе (-8% по корректности). Когда квалификации середняков оказывается недостаточно (второй график, сложные задания) - парное программирование также приходит им на выручку, позволяя улучшить качество кода. А вот профессионалам работа в паре, похоже, только вредит - времени уходит больше, качество снижается.

Ну а теперь самый главный вывод. В реальной жизни (не слишком квалифицированные программисты и не слишком простые задачи) за счет парного программирования работодатель имеет возможность получить 16% ускорение разработки и 92% прирост в качестве, заплатив на 68% больше (Effort). Ускорение в 16% таких затрат, разумеется, не окупает; следовательно, основная выгода от парного программирования проявляется в том, что оно заставляет программистов работать более внимательно и выдавать более качественный код. А что такое работать более внимательно? Это и означает работать целый день, а не в ЖЖ сидеть :)

UPD. Друзья, большое спасибо! Лучшая дискуссия о PP, которую я читал!

Еще о первобытном коммунизме: практическая реализация

В предыдущей записи про первобытный коммунизм я задавал риторический вопрос: а почему всем левым так хочется поддерживать этот миф? Что дескать сам по себе homo sapiens чудо как хорош, и в естественных условиях живет по-коммунистически - и только злой капитализм его портит?

Вот очень хорошее приближение к ответу - от morky:

Помимо основных, китайцев и вьетнамцев, к геноциду привлекли мусульманские племена Чан (Тям), до того промышлявших в основном рыболовством, а также реликтовые племена, из горно-джунглевых северных провинций, под собирательным названием "Ло". Последние были отборной гвардией режима (даже личная охрана Пол Пота долго время состояла из подростков Ло), и дикарями в самом прямом смысле слова, то есть природными коммунистами. Разговаривают они на первобытных диалектах, живут большими домами-коммунами, у них матриархат, промышляют подсечно-огневым земледелием и набегами на кхмерские деревни, а этнически "вообще не от сюда" - принадлежат к австрало-полинезийцам. По свидетельствам выживших, баловались людоедством, типа питья крови или поедания печени жертвы, не от голода, конечно, а по каким-то там своим дикарским понятиям.

Французы при своем правлении охотно, целевым образом набирали их в свою туземную армию. Полезные ребята, для оккупантов.


Выделение мое. Именно что для оккупантов. morky замечательно описал историю камбоджи как "рисовой Трубы", территории, превращенной в один большой трудовой лагерь. Вот для организации таких лагерей все и делается. По факту - захват территории военной силой, в которую рекрутируются низшие классы и самые примитивные племена. На уровне пропаганды - "первобытный коммунизм", "благородный дикарь", "пролетарская мораль" и прочая апологетика "восставших масс".

Фактически, у нас появляется толковая гипотеза: коммунизм есть продолжение колониализма другими средствами. Места создания Британской Империи и "Капитала" совпадают с точностью до города. Крах мировой колониальной системы и расцвет коммунистического лагеря - с точностью до десятилетий. Но поскольку все это галковщина, от развития темы воздержусь. Курс феодальной интриги писать надо :)

Дело СГО продолжается, или Обратите внимание на новую инициативу

meatreach выложил у себя презентацию, в доступной форме агитирующую за создание все того же СГО. Еще одна хорошая (для меня) новость!

Прошу всех френдов ознакомиться и поддержать ссылками. Думаю, человек, поднявший такое знамя, заслуживает поддержки хотя бы добрым словом.