Ненасильственное парное программирование

Или как сделать партнеру приятно

Привет, партнер!

В недавнем выпуске подкаста Веб-стандартов №95, затронули тему парного программирования, и я решил поделиться своим опытом на эту тему.


Вадим Макеев говорит что написание кода, процесс интимный. Я с ним полностью согласен. Когда занимаешься лайв-кодингом на интервью, а на тебя смотрят люди которых видишь впервые, то испытываешь совершенно другой набор эмоций, нежели когда делаешь это в уютном офисе с коллегой. Поэтому ближайший пример который приходит в голову — секс. Давайте рассмотрим парное программирование как отношения между партнерами.

Все делается по обоюдному согласию

Если вы придете посреди рабочего дня, заберете клавиатуру у вашего коллеги и что-то начнете строчить, добром это не кончится. Просто спросите — «У тебя нестандартный подход к нашим задачам, как насчет пары уроков?», «Мне надо разобраться с твоей фичей, уделишь мне немного времени?».

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

Готовьтесь заранее

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

Уважение

Настройтесь на уровень человека с которым собираетесь поработать. То что очевидно вам, неочевидно ему. Даже если у вас одинаковый сеньор уровень, доменные области могут быть разные — кто-то мастер ваять формы, а кто-то собаку съел на графиках и чартах.

Прелюдия

Обсудите что и как именно будете делать. Поставьте перед собой задачу — что вы должны получить в конце? Упрощение кода? Ознакомление с кодом в процессе баг-фикса? Новая фича? Демонстрация возможностей библиотеки, которую вы только затянули в проект? Простенький чек-лист упростит процесс и поможет снизить стресс.

Не молчи

Качественная обратная связь — залог здорового климата в коллективе. Поэтому следует делиться своими соображениями и предпочтениями на будущее. Нельзя быть робким или проявлять какие-то комплексы. Никто не идеален и периодически заглядывает в MDN или StackOverflow.

Любознательность

Что-то мозолит глаза в репозитории, да все не находится подходящего момента об этом спросить? Есть вопросы по стилю написания, именования и прочему? Не стесняйтесь, подходящее время происходит прямо сейчас. Практикой проверено — один и тот же человек ведет себя абсолютно по-разному, в зависимости от того, чем он занят — пишет код или пьет кофе на кухне. Находясь за работой, можно получить более доскональный и дружелюбный ответ, нежели где-то еще.

Выбирайте правильное время

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

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

Продолжительность

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


P.S. Для тех, кто пока не слушал подкаст, последний эпизод.