Парное программирование - это способ программирования, который часто ассоциируется с тем, чтобы помочь более свежим программистам учиться и расширять свои знания.

Несомненно, парное программирование дает большие преимущества, когда опытный программист обучает новичка, но разве это все, что нужно для этого?

Какие еще преимущества парного программирования мы упускаем из виду, кроме передачи знаний?

Факты

Что наука говорит нам о парном программировании

[..]. Однако полученный код имеет примерно на 15% меньше дефектов. Наряду со временем разработки кода на окупаемость инвестиций также влияют другие факторы, такие как затраты на поддержку на местах и ​​обеспечение качества. Парное программирование теоретически может компенсировать эти расходы за счет уменьшения дефектов в программах. -Википедия

Вот и все: ошибок на 15% меньше. Когда мы внимательно рассматриваем этот очень важный факт, мы обнаруживаем, что 15% процентов очень много значат для реальной прибыли и выгоды.

Давайте посмотрим на цифры, связанные с ошибками:

Стоимость ошибки составляет от 50 долларов США при требовании, 1500 долларов США за контроль качества и 10000 долларов США при производстве. - https://crossbrowsertesting.com/blog/development/software-bug-cost/

В среднем по отрасли оценивается от 15 до 50 ошибок на 1000 строк кода.

Ошибка считается ошибкой, если она присутствует в готовом коде (опубликована, находится в производстве или иным образом не содержит ошибок).

У ошибок есть уровни серьезности. Ошибка с уровнем серьезности 1 останавливает любое использование программы. Ошибка степени 2 останавливает некоторых пользователей, но не всех. Ошибка с уровнем серьезности 3 неудобна, имеет обходной путь или раздражает.

Самая профессиональная организация по разработке, в которой я когда-либо работал, которая создавала программные продукты для использования во всем мире и имела завидную репутацию за выдающиеся достижения, работала с расчетом на одну ошибку степени серьезности 1 на 1000 строк поставляемого кода. - https://www.quora.com/What-is-the-average-ratio-of-bugs-to-a-line-of-code

Теперь нам должно быть ясно, что цена ошибок очень высока, и уменьшение количества ошибок на 15% может легко перевесить увеличение количества человеко-часов в результате парного программирования. Так мы даже можем получить преимущество.

Плюс есть другие преимущества, которые добавляет парное программирование, что еще больше повысит качество кода и продуктивность.

Повышение качества дизайна

И снова Википедия хорошо справляется с поиском информации:

Система с двумя программистами обладает большим потенциалом для создания более разнообразных решений проблем по трем причинам:

  • Программисты привносят различный предыдущий опыт в задачу;
  • Они могут оценивать информацию, имеющую отношение к задаче, по-разному;
  • Они находятся в разных отношениях к проблеме в силу своих функциональных ролей.

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

Ясно, что лучше решать проблему, исходящую с разных сторон, чем иметь только один переулок для атаки. Обращение к нашей проблеме приведет к повышению качества нашей кодовой базы.

А повышенное качество разработки программного обеспечения может означать, среди прочего, более высокую надежность, эффективность, безопасность и удобство обслуживания.

Чтобы выбрать пример ремонтопригодности: лучшая ремонтопригодность будет означать, что у нас снова будет меньше ошибок. Это снова означает более прибыльное программное обеспечение. Это выигрыш для заказчика, разработчика и компании.

Статус разработчика

С Wikipedia.com:

В онлайн-опросе парных программистов в 2000 году 96% программистов заявили, что им больше нравится их работа […], а 95% заявили, что они более уверены в своих решениях, когда они программируют в паре.

Если мы посмотрим на науку об удовлетворенности на рабочем месте, мы ясно увидим корреляцию между уровнем удержания и производительностью. В следующем исследовании говорится:

Исследователи Gallup обнаружили прямую связь между неудовлетворенными работниками, прогулами и производительностью. В компаниях с большим количеством недовольных работников наблюдается большее количество прогулов и снижение производительности труда .- [1]

Здесь особо нечего добавить. Кажется, есть четкое указание на то, что это будет беспроигрышная ситуация как для работодателя, так и для сотрудников, если возрастет удовлетворенность работой. В конце концов, мы стараемся работать вместе, а не друг против друга.

4) обучение

Как было сказано в начале, парное программирование - отличный инструмент для обмена знаниями между программистами.

Знания постоянно делятся между парными программистами, будь то в индустрии или в классе. Многие источники предполагают, что учащиеся проявляют большую уверенность при программировании в парах, и многие узнают, от советов по правилам языка программирования до общих навыков проектирования. -wikipedia.com

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

Коммуникация

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

Это помогает парным программистам легче научиться общаться. «Это увеличивает пропускную способность и частоту связи внутри проекта, увеличивая общий поток информации внутри команды», - Wikipedia.com

Опять же, улучшение коммуникации приносит большую пользу любой компании и индивидуальным навыкам любого программиста.

Чтобы процитировать study.com:

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

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

Ловушки

Конечно, есть подводные камни, и парное программирование рекомендуется не в каждой ситуации:

Снова википедия в помощь:

В простых задачах, которые пара уже полностью понимает, спаривание приводит к чистому падению производительности.

Это может сократить время разработки кода, но также может снизить качество программы.

Продуктивность также может упасть, если используется пара новичков и новичков без достаточного количества наставника для их обучения.

Это важные моменты, которые следует учитывать, и в любом случае парное программирование всегда должно выполняться правильно.

  • С уважением, вежливостью и поддержкой.
  • Много говорите и четко обозначьте свои цели.
  • Пусть за руль сядет и младший программист.
  • Часто меняйте роли.

Для получения дополнительной информации о том, как правильно заниматься парным программированием, я рекомендую этот источник:

Https://www.wikihow.com/Pair-Program

Решения

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

Парное программирование - важный инструмент в нашем арсенале инструментов, и его следует использовать чаще. Он лучше учитывает нашу социальную природу и увеличивает компетентность, лежащую в основе наших решений. И это то, что мы в конечном итоге предоставляем, решения, которые важны для нас, клиентов и компании.

Источники:

[1] (https://deepblue.lib.umich.edu/bitstream/handle/2027.42/143415/Carnahan.pdf?sequence=1&isAllowed=y)