Перевод статьи «About Pair Programming».

Парное программирование это интересная практика, популярность которой растет. Есть компании, где применяют исключительно такой метод работы. Два разработчика, один экран, один отрывок кода за раз. При этом обычно один разработчик пишет код, а второй (остальные) наблюдает за его написанием.
Цель этого подхода – производство более качественного и поддерживаемого кода. Предполагается, что эта цель вполне достижима, если над кодом одновременно и совместно работают два разработчика, действующих в соответствии со своими ролями.
Парное программирование это часть методологии экстремального программирования, которая призвана повысить скорость и качество разработки. Вы могли замечать, что парное программирование часто применяется там, где практикуется agile, и многим программистам этот подход очень нравится. Ведь вместо того чтобы сражаться с проблемами в одиночку, вы всегда можете рассчитывать на дополнительную пару глаз, способных взглянуть на задачу несколько иначе.
В этой статье я собираюсь осветить несколько фактов о том, как работает парное программирование.
Парное программирование фокусируется на коде сразу во время его написания
Чаще всего кто-то из пары программистов пишет код, а кто-то наблюдает за этим. Поскольку вы оба сосредоточены на реализации вашей задачи, один из вас непременно заметит что-то, упущенное напарником. Например, когда вы пишете код, вы можете забыть инициализировать массив, а другой разработчик это заметит. Или ваш напарник может спросить, почему вы пишете код именно так, а не иначе.
Вы особенно внимательны к коду, который пишете, потому что за вашей работой наблюдают в самом буквальном смысле. Здесь не остается места для небрежности, а самое лучшее то, что при таком подходе ваш код в будущем точно будет поддерживаемым. Вам не нужно будет искать автора кода, чтобы он объяснил, как все работает, потому что код, написанный в ходе парного программирования, непременно будет читаемым. Также этот метод способствует применению лучших подходов во всем, что вы пишете.

Парное программирование это не обучение и не наставничество
Некоторым людям требуется время, чтобы это понять. При парном программировании оба разработчика работают на равных, у каждого из них есть свое мнение, и эти мнения им нужно согласовывать. Это не ситуация наставничества. Ваша цель – помочь друг другу в написании как можно лучшего кода для решения конкретной задачи.
Работая вместе, вы, конечно, научитесь у своего партнера чему-то новому. Но имейте в виду, что это не является основной целью парного программирования. Его главное назначение – поддержка сфокусированности обоих программистов на задаче и возможность проведения ими «мозговых штурмов» при возникновении проблем. Все это должно способствовать написанию кода, решающего поставленную задачу и соответствующего принятым в команде стандартам. Любое наставничество и обучение являются лишь побочным эффектом.
На выработку нужных для парного программирования навыков и соответствующих установок нужно время
В большинстве компаний программисты не работают в парах на постоянной основе. В основном, вы работаете над задачами самостоятельно и просите о помощи, только если застряли. Переход на парное программирование это большая перемена, требующая от разработчиков приобретения новых навыков. Кроме того, они должны настроиться на работу в паре. Это не происходит за одну ночь, у вас неизбежно будут возникать трудности, но когда вы их преодолеете, вы сможете насладиться всеми преимуществами работы в паре.
В некоторых организациях уделяют время разработке правил парного программирования, в соответствии с которыми должны работать их сотрудники. Так в парном программировании появляются разные роли вроде водителя и штурмана. На выработку таких правил тоже требуется время. Кроме того, важно, чтобы разработчики тоже участвовали в их создании. Но после того как все устоится, вы заметите, что ваши сессии парного программирования стали протекать более гладко.

Парное программирование принесет вам много пользы, когда ваша команда его освоит
Когда вы разработаете подходящую для вас процедуру, парное программирование начнет приносить свои плоды. Чем больше разработчиков у вас будут работать в парах, тем лучше будет становиться код, особенно если вы также применяете что-то вроде разработки на основе тестирования. Совместное написание тестов позволяет удостовериться, что оба программиста понимают стоящую перед ними задачу, причем понимают ее одинаково. Во многих компаниях на это не обращают внимания, а зря. Также парное программирование способствует обмену опытом, а это маленькое преимущество способно принести большую пользу.
Чтобы привыкнуть к тому, что кто-то наблюдает, как вы пишете код, потребуется некоторое время. Также нужно привыкнуть к обсуждениям лучшего варианта реализации. Большинство разработчиков привыкли программировать самостоятельно. Но при применении парного программирования вы постоянно будете сталкиваться с чужой точкой зрения и соответствующими ее обоснованиями. Благодаря этому в долгосрочной перспективе вы научитесь новым способам реализации кода.
Честно говоря, поначалу мне парное программирование не нравилось. Это было как-то странно и медленно, а практика ревью кода и пул-реквестов и так хорошо работала. Конечно, со временем я оценила преимущества и такого подхода, но мне по-прежнему больше нравится писать код самостоятельно.
А как насчет вас? Вам нравится программировать в паре?
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]
Начальники почти всегда считают, что бюджет не позволяет. Но KPI за возврат и устранение ошибок из продакшена — есть. Такие дела.