Как и многие другие вещи, программирование становится проще, когда оно выполняется в команде. Как один из гибких методов разработки программного обеспечения, парное программирование позволяет разработчикам повысить качество кода, что приводит к уменьшению количества ошибок и, следовательно, к повышению эффективности.
Что такое парное программирование?
Парное программирование требует совместной работы двух программистов на одном рабочем месте. Один человек, водитель, пишет код, а другой человек, навигатор, предлагает идеи и проверяет код по мере его написания. Программисты должны часто меняться ролями.
Оба программиста должны быть активно вовлечены, и ни один из них не должен молчать. Упражнение становится бессмысленным, если водитель молча делает всю работу, пока штурман проверяет почту или дремлет.
Плюсы и минусы
Плюсы
- Работа выполняется быстрее
- Сложные задачи становятся легче понять и разбить
- Возможное сокращение человеко-часов, если каждый программист станет значительно более продуктивным благодаря общему умственному потенциалу.
- Более качественный код за счет «программирования вслух», что приводит к меньшему количеству отладки в дальнейшем.
- Лучшее распространение знаний среди команды
- Улучшение командного духа
- Возможно, у тебя появится новый друг!
Минусы
- Увеличение человеко-часов до 100% в худшем случае, когда всю работу выполняет один человек
- Увеличение человеко-часов, если повышения производительности и качества кода недостаточно для компенсации затрат на персонал.
- Если с вашим партнером трудно работать из-за личных конфликтов или элементарных проблем с гигиеной, парное программирование не подходит.
Варианты сопряжения
Эксперт-Эксперт
Это когда два опытных программиста работают вместе. Хотя это часто приводит к высокой производительности, устоявшиеся практики вряд ли будут подвергаться сомнению в этом сценарии.
Эксперт-новичок
Это когда опытный программист работает в паре с новичком. Если новички будут задавать вопросы, эксперту придется объяснять, почему все обстоит именно так, а менее эффективные или интуитивные практики могут быть выявлены и подвергнуты сомнению. Хотя новичок потенциально может извлечь большую пользу из этого сценария, у эксперта может не хватить терпения. Кроме того, новичок может просто полагаться на решения эксперта на каждом шагу, что может привести к отстранению.
Новичок-новичок
Интересно, что когда два начинающих программиста работают вместе, часто происходит значительный прирост производительности. Из-за того, что новички делятся своими знаниями, производительность часто выше, чем если бы два новичка работали по отдельности. Тем не менее, новичкам трудно выработать полезные привычки таким образом, не обращаясь к эксперту, и если они столкнутся с проблемами, которые никто не может решить, производительность неизбежно упадет.
Что можно и чего нельзя делать
Do…
- Предоставьте комментарий к вашему коду (в качестве драйвера)
- Комментарий к коду (как навигатор)
- Предлагайте идеи (как навигатор)
- Часто переключайтесь
- Оставайтесь на связи
Не…
- Пусть другой человек сделает всю работу (как навигатор)
- Загрузить компьютер (как водитель)
- Делайте всю работу молча (как водитель)
- Вступать в личные конфликты с партнером
- Уйти по касательной
Мой собственный опыт
Будучи младшим разработчиком, я много раз занимался парным программированием, и это почти всегда приводило к повышению производительности. Обсуждение необходимой логики и синтаксиса с другим программистом часто может привести к прорыву. В целом, я обнаружил, что обмен идеями с другими людьми той же профессии, как правило, приводит к более качественной работе благодаря обмену знаниями.
Когда я сталкиваюсь с трудностями и получаю помощь от наставника, результат часто похож на парное программирование с экспертом, если меня направляют к работающему решению.
Из-за пандемии COVID-19 весь мой опыт однорангового программирования осуществлялся онлайн, обычно через Live Share в VS Code. Хотя производительность, как правило, хорошая, следует помнить об отключении от работы в разных рабочих средах.
Заключительные мысли и рекомендации
Парное программирование требует, чтобы два программиста, у каждого из которых были разные роли, работали вместе при написании кода. Роли должны часто меняться, но оставаться разными. Чтобы лучше понять парное программирование, мы узнали о плюсах и минусах, а также о вариантах сопряжения. Мы узнали о том, что делать, чего не делать и как у меня дела обстояли.
Парное программирование определенно стоит попробовать, особенно если у вас меньше опыта. Вы обнаружите, что программирование становится значительно проще, даже если вы работаете в паре с кем-то с таким же уровнем навыков, поскольку ваши коллективные знания помогут вам быстрее решать проблемы. И если у вас есть возможность, обязательно попробуйте объединиться с экспертом. Вы многому научитесь!
использованная литература
Общие источники
Парное программирование: действительно ли оно работает? | Проворный Альянс
Плюсы и минусы парного программирования (verypossible.com)
Парное программирование — Википедия
Академические документы
Затраты и преимущества парного программирования
Производительность парного программирования: новичок–новичок vs эксперт–эксперт