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

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

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

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

Плюсы и минусы

Плюсы

  • Работа выполняется быстрее
  • Сложные задачи становятся легче понять и разбить
  • Возможное сокращение человеко-часов, если каждый программист станет значительно более продуктивным благодаря общему умственному потенциалу.
  • Более качественный код за счет «программирования вслух», что приводит к меньшему количеству отладки в дальнейшем.
  • Лучшее распространение знаний среди команды
  • Улучшение командного духа
  • Возможно, у тебя появится новый друг!

Минусы

  • Увеличение человеко-часов до 100% в худшем случае, когда всю работу выполняет один человек
  • Увеличение человеко-часов, если повышения производительности и качества кода недостаточно для компенсации затрат на персонал.
  • Если с вашим партнером трудно работать из-за личных конфликтов или элементарных проблем с гигиеной, парное программирование не подходит.

Варианты сопряжения

Эксперт-Эксперт

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

Эксперт-новичок

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

Новичок-новичок

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

Что можно и чего нельзя делать

Do…

  • Предоставьте комментарий к вашему коду (в качестве драйвера)
  • Комментарий к коду (как навигатор)
  • Предлагайте идеи (как навигатор)
  • Часто переключайтесь
  • Оставайтесь на связи

Не…

  • Пусть другой человек сделает всю работу (как навигатор)
  • Загрузить компьютер (как водитель)
  • Делайте всю работу молча (как водитель)
  • Вступать в личные конфликты с партнером
  • Уйти по касательной

Мой собственный опыт

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

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

Из-за пандемии COVID-19 весь мой опыт однорангового программирования осуществлялся онлайн, обычно через Live Share в VS Code. Хотя производительность, как правило, хорошая, следует помнить об отключении от работы в разных рабочих средах.

Заключительные мысли и рекомендации

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

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

использованная литература

Общие источники

Парное программирование: действительно ли оно работает? | Проворный Альянс

Плюсы и минусы парного программирования (verypossible.com)

Парное программирование — Википедия

Академические документы

Затраты и преимущества парного программирования

Производительность парного программирования: новичок–новичок vs эксперт–эксперт