Недавно я начал работать в Go-JEK инженером по продукту. Одна из вещей, о которых я хочу поговорить, — это концепция парного программирования.

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

В GO-JEK весь код, который пишется на полу, выполняется с помощью парного программирования. Обычно в процессе парного программирования есть две роли: одна — драйвер, отвечающий за написание кода, а другая — наблюдатель, просматривающий каждую строчку кода по мере ее написания. При просмотре кода наблюдатель также выдвигает идеи по улучшению и решению будущих проблем. Это позволяет водителю полностью сосредоточиться на тактической части выполнения задачи, в то время как наблюдатель используется в качестве проводника или подстраховки. Эти роли часто меняются.

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

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

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

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

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

Увеличение коэффициента грузовика: Фактор грузовика — это параметр, используемый для отслеживания того, насколько проект зависит от одного человека в команде. Определяется как количество людей, которые должны были бы быть построены на грузовике, чтобы остановить продвижение проекта в команде. Команды с низким коэффициентом грузовика очень подвержены остановке, если отсутствует хотя бы один член. При парном программировании гарантируется, что над каждой функцией, разработанной в проекте, работали как минимум два человека. Так что это увеличивает фактор грузовика. В GO-JEK пары регулярно меняются местами, чтобы у команды было хорошее понимание кодовой базы.

Мой опыт

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

Минусы парного программирования

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

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

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