Почему вам стоит освоить парное программирование
Ян Ашенкампф
Старший технический директор
Парное программирование — методика, при которой два разработчика занимаются одним кодом. Как правило, первый пишет, второй — диктует или комментирует. На мой взгляд, для разработчика это — прекрасный способ научиться чему-то. А для руководителя — возможность быстро погрузить новичка в процессы. В статье объясню, почему, и разберу, когда это бывает полезнее, чем просто выдать программистам по отдельной задаче.
Когда парное программирование работает
Парное программирование сокращает время на рефакторинг, потому что тот проходит в моменте, уменьшает количество багов и избавляет от дополнительной работы: оформление бага в багтрекинге, передача на исправление, воспроизведение разработчиком, поиск в коде, исправление, повторное тестирование и так далее. А ещё помогает находить неочевидные проблемы, решать сложные задачи и реже отвлекаться на ленту в YouTube.
Исследование «The Costs and Benefits of Pair Programming» показало, что такой подход:
- снижает количество багов в коде на 15%;
- помогает писать код объёмом примерно на 20% меньше.
При этом растёт стоимость разработки. Согласно всё тому же исследованию — примерно на 15%. По личному опыту — выше. Поэтому методику лучше применять точечно, вместе с конкретными отделами или членами команды.
Для прокачки
Парное программирование работает, когда код пишут специалисты с разным уровнем знаний: сеньор и мидл, мидл и джун, сеньор и джун. Так, один учит другого. И вместе с тем — сам лучше разбирается в системе.
Ещё можно посадить вместе двух джунов. Они в любом случае будут учить друг друга чему-то — каждый в своей сфере. И станут вместе искать ответы на незнакомые вопросы и решать сложные задачи. Но такой паре всё равно нужен более опытный ментор на подхвате.
Сеньоров я бы ставил в пару только в том случае, если они хорошо разбираются в разных системах и технологиях. Если это два специалиста, глубоко погруженных в одну тему, скорее всего, они будут спорить и придираться, а не писать код.
На дежурствах
Поддержка — это сложно. Нужно знать множество разных сервисов на таком уровне, чтобы грамотно обработать любой запрос, решить проблему пользователя, пофиксить баг, выкатить релиз и так далее.
Но людей, которые идеально разбираются во всех сервисах компании, мало (или вообще нет). Поэтому можно ставить в пару дежурных, которые знают разные системы. Так специалисты специалисты в процессе работы обучат друг друга.
Кроме того, при таком подходе исключается ситуация, когда клиент звонит в поддержку, а в ответ слышит «У меня обед, позвоните позже».
Для онбординга
Если на работу вышел новый сотрудник, вы можете посадить его два месяца изучать Confluence. Или отправить «подмастерьем» к действующему разработчику. Поначалу он будет смотреть, чем занимается коллега. Потом — начнёт писать сам, под надзором. И, наконец, самостоятельно возьмётся за задачи.
На следующем этапе новичка можно отправить ко второму разработчику, с другим уровнем и другими компетенциями. Потом, если нужно, — к третьему. Так, он быстрее погрузится в задачи, изучит сервисы, с которыми придётся работать. И параллельно сблизится с командой.
Для отбора
У джунов не только самый быстрый рост, по сравнению с разработчиками других уровней, но и самая жёсткая конкуренция. И парное программирование можно использовать для того, чтобы посмотреть на специалистов не в «стерильных» условиях собеседования, где обсуждаются алгоритмы по книжке Кнута, а при работе над реальными задачами. И найти самого перспективного.
На одном из предыдущих мест работы, мы применяли такой подход, называли его «демо-день». Перед тем как взять одного из кандидатов на работу, разбивали всех на пары, давали типовую задачу и наблюдали, как люди с ней справляются, насколько их поведение на интервью отличается от поведения при реальной работе и так далее.
Это полезно и для самих соискателей, потому что помогает понять, с какими задачами придётся разбираться, интересно ли им, подходит ли темп работы.
Как проходит работа
Есть несколько распространённых методов программирования в паре. Разберём их подробнее.
Штурман и водитель
Команда прорабатывает будущий проект на бумаге, в Miro — или любом другом удобном инструменте. Затем первый участник, «водитель», пишет код и проговаривает действия, а «штурман» проверяет решение. Спустя некоторое время, например, полчаса, разработчики меняются местами.
При обучении желательно, чтобы код писал тот, кто понимает меньше.
Строгое парное программирование похоже на стиль «штурман-водитель», но в этом случае первый полностью контролирует процесс и диктует, что нужно делать. Если у «водителя» появляется идея, он занимает место «штурмана».
При таком подходе понятно распределение ролей в паре. И он лучше всего подходит для онбординга и обучения — потому что возле новичка всегда есть более опытный напарник, который подробно объясняет, что делать. Кроме того, оба человека максимально вовлечены в процесс: одному в любом случае приходится писать, второму — думать.
Если один из напарников «выпал» из процесса: залип в ленту новостей, отвлёкся на разговор с кем-то — его лучше посадить на место «водителя» и снова переключить его внимание на работу.
Проблема стиля «штурман-водитель» в том, что если перегнуть палку с контролем, один из разработчиков может чувствовать себя простым механическим инструментом, который ничего не решает. Или медленнее учиться, потому что не думает. При этом ответственность за код ляжет только на «штурмана».
Пинг-понг
Этот стиль хорошо сочетается в TDD, и его удобно использовать для удалённой работы. Процесс выглядит так:
- первый разработчик пишет тест;
- второй — код под него;
- второй разработчик пишет новый тест;
- первый — код под него;
- и так далее.
Такой подход кажется довольно весёлым: постоянный челлендж с немедленной гратификацией и быстрым вознаграждением. Получил мини-задание, быстро выполнил, быстро проверил, порадовался, что всё хорошо.
Кроме того, «пинг-понг» помогает паре сдружиться (особенно это важно на удалёнке), потому что вы постоянно ставите друг другу задачи, помогаете за счёт тестов и так далее.
Но если нужно обучить новичка, это работает плохо — чтобы писать грамотные тесты и давать конструктивную обратную связь, нужен уже опытный разработчик.
Напарников нужно менять примерно раз в одну-две недели, по нескольким причинам:
- разработчики успевают рассказать и объяснить друг другу всё, что знают сами;
- долгая работа в паре изматывает — из-за постоянного контроля и более интенсивного темпа;
- спустя две недели люди начинают уставать друг от друга;
- при частой смене пар все члены команды могут лучше сблизиться и получить больше знаний.
Как начать программировать в паре
- Подготовить место. Разработчикам нужно большое пространство, чтобы каждый чувствовал себя свободно. А также 2–4 монитора, две клавиатуры и достаточно мощное железо, чтобы ничто не тормозило.
- Заранее выбрать IDE и инструментарий, который понятен обоим. Если один работает только в Vim, второй — в Visual Studio Code, при программировании в паре одному всегда будет сложно адаптироваться к незнакомой среде. Это затормозит процессы и может вызвать у пары стресс. Также важно сразу определить code style.
- Спланировать график работы. Программисты в паре должны работать и делать перерывы в одно и то же время, чтобы никто не выпадал из контекста. Иначе вся ответственность ляжет на одного человека, а второй будет просто присутствовать рядом и ничему не научится.
- Убедиться, что менее опытный напарник готов учиться и делать то, что не умеет. Нельзя брать в пару человека, который говорит: «Я люблю писать код для генерации отчётов и ничего, кроме этого, делать не хочу. Ни изучать сетевой стек, ни перехватывать трафик, ни заниматься производительностью, ни копаться в конфигурационных параметрах. Уйдите от меня подальше».
- Договориться о правилах открытости и убедиться, что напарникам комфортно друг с другом.
- Обговорить, что программирование в паре — временно: «Не волнуйся, ты всё ещё программист, 80% времени ты занимаешься формулами. Но в оставшиеся 20% сможешь поделать что-то новое с напарником».
Для обоих разработчиков программирование в паре должно быть бонусом, а не повинностью. Поэтому людям должно быть комфортно работать вместе.
В Законодательном Собрании Нижегородской области провели комиссию по бережливым технологиям
Главная
Новости
Новости дня
2023
Главная тема обсуждения — реализация «бережливого» проекта «Сквозной инвестиционный поток». Его цель — сократить сроки получения земельных участков в аренду, разрешительных документов на строительство, подключение к инженерным сетям и другой инфраструктуре.Работа объёмная — органы законодательной власти внесли 207 предложений, из них отобрали только 80. Ещё одна тема — бережливое управление в государственном секторе.
Максим Ребров — руководитель аппарата Законодательного Собрания Нижегородской области:
«Мы отобрали самые важные, наверное, 15 этих инициатив, которые мы сейчас максимально проработаем и максимально будем стараться их внедрить и направить федеральным органам госвласти для того, чтобы внести изменения в федеральное законодательство».
Поделитесь этой новостью с друзьями в соцсетях:
Все новости раздела «Новости дня»
Новости по теме:
В Нижний Новгород с рабочим визитом прибыли главы 13 регионов ПФОВ центре их внимания оказалась промышленная и кадровая коллаборация приволжских регионов.
361
Мультижанровый четырехчасовой концерт «Квартирник на Щелчке» прошел в Нижнем НовгородеНа сцене звучали, как современные каверы, так и необычные собственные аранжировки.
529
На боевое слаживание для участия в СВО отправилась самая большая группа нижегородских добровольцевЗаместитель губернатора Нижегородской области Андрей Гнеушев лично проводил военнослужащих.
272
Сквер героя Советского Союза Николая Фильченкова благоустроили у бывшего кинотеатра «Канавинский»Здесь поставили памятник герою, а также установили сухой фонтан и парковые качели.
292
В городах Урень и Ветлуга прошли стратегические сессииВ обсуждении развития округов активно включились местные жители.
293
Фестиваль «Инклюзион — город равных возможностей» прошел в Нижнем НовгородеСотни подростков с различным уровнем физической подготовки и способностей собрались в парке «Дубки», чтобы попробовать что-то новое.
330
VIII Всероссийский фестиваль-конкурс народного творчества «Хрустальный ключ» прошел в СартаковеЕго цель — сохранить народные традиции.
334
Сессия государственных и муниципальных служащих «ГосСтарт» прошла в Нижнем НовгородеБолее 80 молодых управленцев и активистов из Приволжского и Уральского округов прошли строгий отбор, в котором принимало участие свыше 4 тысяч человек со всей России.
550
В Перевозском и Вадском округах прошли стратегические сессииМестные жители приняли в них активное участие.
325
Новости партнеров
16 июня 2023
HAVAL DARGO: ОТЛИЧНЫЙ КОММЕРЧЕСКИЙ ТРАНСПОРТ
8 июня 2023
ВСТУПЛЕНИЕ В СРО КАК НОВЫЙ ЭТАП РАЗВИТИЯ БИЗНЕСА
Посмотреть все новости
Реклама
Горячие новости
ТК «Волга» в сети
𝐉𝐔𝐒𝐓 𝐏𝐑𝐄𝐓𝐄𝐍𝐃 || 𝐕𝐊 ✔ — xxi — Страница 2
just_jk :
Нет, просто мама позвонила мне
так что почему. ..Мне хорошо дружить
с тобой.gucci_tae :
О, это здорово. Спасибо джк.Наконец. Вы знаете, меня
убило, что «лучший друг» моего парня
не является моим другом
.just_jk :
Lolgucci_tae :
Хочу сказать тебе, твои клики
такие красивые. Я умираю, чтобы видеть
их каждый деньjust_jk
:
Спасибо.
Вы всегда это упоминалиgucci_tae :
О, так вы видите мои комментарии 🧐just_jk :
Иногдаgucci_tae 900 05 :
Да конечноjust_jk :
Твои картины
очень милые кстатиgucci_tae :
Ой, спасибоВы в моей группе
за проектную работу!?just_jk :
Есть проект!?gucci_tae :
Вау, ты действительно лучший друг
Юна.just_jk :
Я не знал 😩gucci_tae :
Я думаю, что ты в группе 2
, которая тоже моя.just_jk :
Я с облегчением. Хорошее время
, чтобы завести друга.gucci_tae :
Я тоже это сделал mr.jkjust_jk :
Да да я не
краду кредиты.gucci_tae :
Хе-хеМогу я спросить вас кое о чем!?
just_jk :
Стреляй поgucci_tae :
это личноеjust_jk :
Почему ты колеблешься?
Спроси!gucci_tae :
Обещай, что не будешь лгать!just_jk :
Ммм? 🤔gucci_tae :
Давай.just_jk :
Хорошо, прекрасное обещание.gucci_tae :
Юн и Чимин
танцевали той ночью!?
Как приватный танец!
Seenjust_jk :
Да, но он был пьян.
Seengucci_tae :
О, хорошоjust_jk :
Тэхён?gucci_tae :
Даjust_jk :
ты знаешь какой Юн. Он
просто бездельничает. Так что
не принимайте близко к сердцу.gucci_tae :
Ты кого-то любишь, верно?just_jk :
А?gucci_tae :
Я видел ваши сообщения и
подписи, вы любите
кого-то, верно?
Виделjust_jk :
Даgucci_tae :
Так ты будешь в порядке, если
твоя любовь флиртует вокруг и
сближается с кем-то
кто не ты? Тебе не будет больно?Чонгук грустно улыбается, как тэхен просто объясняет свою ситуацию. Они двое чувствуют одно и то же, но не друг к другу, и это причиняет боль чонгуковому сердцу.
just_jk :
Больноgucci_tae :
Да, больно, и еще больнее
когда ты не можешь ничего
остановить.just_jk :
Вы правы! Но это не
правда, что ты ничего не можешь
сделать!?gucci_tae :
Что я могу сделать, когда
он думает, что моя любовь и
заботятся как команда
или заказ!?just_jk :
Ты его парень тэхён, ты
просто должен показать ему
свою значимость.gucci_tae :
Я не понимаю.just_jk :
Просто делай то, что он делает
и он убежит обратно к
твоим объятиям.gucci_tae :
Это не сработает!
Он никогда не ревнует меня.just_jk :
Вот когда он узнает, что эти
человек имеют нулевые шансы
против него.gucci_tae :
А?!just_jk :
Идк ты должен найти
подходящего человека, к которому
он будет ревновать!gucci_tae :
А кто это?just_jk :
Возможно, его конкурентыgucci_tae :
Чоу и Марк. Фу!
мне они немного не нравятся.just_jk :
Вам не обязательно любить
их, достаточно просто поиграть с
. Я не знаю! Эти два
были моими догадками.gucci_tae :
Хм... Думаю, у меня
только один вариант, а
- терпеть, как я
терпел все это время.just_jk :
Хм... Тогда я с ним поговорю.gucci_tae :
Нет-нет, пожалуйста,
он на меня разозлится.
Seenjust_jk :
Okgucci_tae :
В любом случае, было приятно поговорить с вами
jkjust_jk :
То же самоеgucci_tae :
Спокойной ночи, Чонгукки.
Увидимся завтра
в clgjust_jk :
Да, конечно.
Гуд Найт Тэхёнgucci_tae :
Тэ на самом деле был лучше ;)just_jk :
Ага. Запись___________
Чонгук держал телефон близко к сердцу, счастливая улыбка плясала на его губах. Он вдруг начал визжать, подпрыгивая. Он обязательно отметит этот день как свой лучший.
________
💜: Приготовьтесь к тхэкук момента
мой бывший лучший друг заблокировал меня везде
AlleBilderVideosBücherMapsNewsShoppingsuchoptionen
Мой бывший лучший друг заблокировал меня во всем. : r/JustNoFriend — Reddit
www.reddit.com › JustNoFriend › комментарии › my_. ..
06.07.2020 · Просто напишите ей письмо или что-то еще, в котором вы говорите, что дружба закончилась, а затем заблокируйте ее. Бьюсь об заклад, она разблокирует вас, а затем попытается быть …
Weitere Fragen
Почему мой бывший лучший друг заблокировал меня?
Что делать, если меня заблокировал лучший друг?
Что значит, если мой бывший заблокировал меня везде?
Должен ли я заблокировать моего бывшего лучшего друга?
«Почему лучший друг моего бывшего заблокировал меня в социальных сетях?» Мы… — Quora
www.quora.com › Почему-мой-бывший-лучший-друг-заблокировал-меня-на-социальных-медиа…
Они полностью отпустили и не испытывают к вам эмоциональной привязанности. · Вы злы, обижены или опечалены и не хотите показывать им никаких эмоций. Блокировка …
Вас удалили из друзей и заблокировали друзья вашего бывшего? Читаю… — iDiva
www.idiva.com › Отношения и любовь › Отношения
22. 10.2019 · Какими бы искренними вы ни были в отношениях, это просто не имеет значения, поскольку вас будут обвинять во всем, что пошло не так между вами двумя.
Бывший друг заблокировал меня после почти 3 лет отсутствия контактов.
www.relationshiptalk.net › бывший друг-заблокировал-меня-назад…
Итак, у меня был старый друг по переписке/лучший друг. Короче говоря, мы наконец-то встретились лицом к лицу после 10 лет дружбы. Он хотел отношений, я нет.
ВРЕМЯ ИСТОРИИ: МЕНЯ ЗАБЛОКИРОВАЛИ! Мой бывший лучший друг заблокировал меня.
www.youtube.com › смотреть
27.06.2021 · Мой бывший лучший друг заблокировал меня. В сегодняшнем видео я рассказал о прошлом опыте и о том, как я… 1 Я знаю, что боль от расставания и блокировки может быть настолько сильной, что вы захотите отомстить своему бывшему или публично выразить свое разочарование.
«Он заблокировал меня везде!» Что это значит и что делать…
www. bonobology.com › он-заблокировал-меня-все…
20.10.2022 · «Когда мой бывший парень заблокировал меня во всем, потому что я не прекращала общаться со своим лучшим другом, я потеряла к нему всякое уважение.
Что делать, если ваш бывший блокирует вас (и будет ли ваш бывший разблокировать …
www.exbackin30daysblueprint.com ›Блог› Что-то0008
Почему мой бывший лучший друг разблокировал меня? — GirlsAskGuys
www.girlsaskguys.com › … › Вопросы
Не пассивно-агрессивны, но будут прямо агрессивны со мной. Далее действует так же блокировка и разблокировка. Честно говоря, она пытается заставить себя чувствовать себя лучше …
«Мой бывший заблокировал меня, а я ничего не делала!» 8 возможных причин…
thinkaloud.net › Разбитое сердце › Стадия блокировки
19.06.2023 · Еще одна причина такого поведения – его друзья, так как давление сверстников заставляет нас совершать сумасшедшие поступки. Он не хочет казаться слабым или уязвимым рядом .