Время одиночек прошло: что такое парное программирование

Фото: из личного архива
Фото: из личного архива
Программистов иногда считают нелюдимыми и постоянно пишущими код одиночками. Но большинство из них работают в командах, хотя и там часто решают задачи самостоятельно. Однако есть способ делать это эффективнее

Об экспертах:

  • Дарья Абрамова, основательница и CEO школы цифрового творчества «Кодабра»;
  • Андрей Кост, Павел Якупов — программисты и преподаватели школы «Кодабра».

Парное программирование было придумано еще в конце 1990-х годов. Его сразу же начали применять автомобильные гиганты Ford Motor Company и Daimler Сhrysler AG. Сейчас метод активно используют во многих ИТ-компаниях, как в больших, например, в Facebook, Pivotal Software, Grockit, так и в растущих, в таких как Drizly.

Понять суть парного программирования очень просто — это когда два специалиста работают в паре за одним компьютером. Такой метод работы встречается не только в разработке, но и в любой другой сфере. Его часто называют «работой в четыре руки».

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

Фото:Max Nelson / Unsplash
Экономика образования Кодит как дышит: тренды IT-образования в регионах России

Писать код в паре не обязательно: главная ценность парного программирования — в идеях и приемах, которых у двух разработчиков больше, чем у одного. Работа в паре помогает им находить наиболее быстрые способы решения, чтобы затем воспроизводить их в коде.

Если задача сложная, парное программирование начинается у доски: программисты генерируют идеи, рисуют схемы и архитектуру кода. Иногда парное программирование и начинается, и заканчивается у доски: идеи придуманы, а внедрять их в код будет один из программистов. Если задача простая — сразу приступают к разработке.

Выбор роли

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

Во время работы они могут меняться ролями. Например, когда «водитель» не понимает, куда дальше двигаться, на его место садится «штурман». Чаще всего рекомендуют меняться во время проблемных моментов, иногда это происходит через определенные промежутки времени, например, через каждые полчаса или 100 строк кода.

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

Экономика образования Почему программистам не обойтись без «гибких навыков»

Стили парного программирования

Роли в парном программировании используют по-разному в зависимости от стиля. Чаще всего разработчики меняют их в зависимости от ситуации.

  • Классическое парное программирование

Используют когда нужно просто работать в паре.

  • «Экскурсовод»

Применяют, если нужно во время работы обучать напарника: более опытный «водитель» успевает и писать код, и рассказывать штурману, почему и как он это делает.

  • «Непрошеный советчик» или «штурман на заднем сидении»

Когда штурман не только следит за стратегией, но постоянно вмешивается в код.

  • «Пинг-понг»

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

Парное программирование для разных сценариев

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

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

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

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

Фото:Qilai Shen / Bloomberg
Экономика образования Как ускорить карьерный рост: 12 советов для программистов

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

Бывает и так, что в парном программировании участвуют и другие специалисты. Например, часто это происходит при разработке игр, когда гейм-дизайнер и программист делают уровень игры вместе. Первый объясняет решения, а второй реализует их в коде. Такой способ работы избавляет от необходимости писать технические задания и почти бесконечно исправлять последствия недопониманий.

Адаптация к парному программированию

Если вы хотите внедрить метод в своей компании, вам нужно:

  1. Рассказать о его плюсах и минусах. Если программисты знают о методе, то эта вводная не понадобится. Но если нет, расскажите о скорости, с которой решаются задачи и больших возможностях в обучении.
  2. Обозначить стандарты программирования. Это поможет избежать споров, а также упростит последующую работу с кодом. В стандарты обычно включают форматирование кода, именование классов, переменных и констант, стиль комментариев.
  3. Зафиксировать ответственность. Хотя в парном программировании над кодом работают двое, нужно назначить одного ответственного за задачу. Именно он будет следить за результативностью и скоростью.
  4. Устраивать тестовые сессии. На них партнеры поймут, получается ли у них сработаться и написать толковый код. Стоит провести две-три сессии по часу или два — на них можно решать задачу в более медленном темпе или взять что-то попроще. Также стоит показать написанный код двум-трем коллегам — иногда процесс идет хорошо, но результат оказывается неудачным.

Если вы программист и хотите начать работать в паре, вам нужно:

  1. Найти правильного партнера. Партнеры должны совпадать по человеческим и профессиональным качествам. Лучше, если у вас будут одинаковые база и взгляды на программирование — разработчикам со слишком разным уровнем будет тяжело в паре.
  2. Понять, что за вами будут наблюдать. Если вы испытываете неудобство, когда рядом сидит другой, подсказывает и оценивает, то в парном программировании будет сложно. Но к этому можно привыкнуть — важно отслеживать свои ощущения и сообщать напарнику, если чувствуете себя некомфортно.
  3. Вспомнить успешный опыт совместной работы. Если вы с друзьями в школе делали домашние задания вместе, привыкнуть к парному программированию будет проще.
  4. Чаще работать в паре. В идеале молодым разработчикам лучше начинать обучение с парной работы. С наставником легче расти, это дает успешный опыт взаимодействия.
  5. Учиться искать компромиссы. Даже если напарник выбран правильно, к нему придется привыкнуть. Сложнее всего научиться терпимости к чужому коду, потому что другой человек все равно думает и пишет не так, как ты. Если вы принимаете мнение другого человека, то найти компромисс можно: «Я понимаю, что ты привык делать по-другому, но вот плюсы моего метода, давай попробуем?».

Парное программирование становится все популярнее. Метод постоянно проверяется на практике, разработчики рассказывают о нем в своих блогах и вдохновляют других, находят недостатки метода и пытаются их исправить.

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

Метод отлично подходит для обучения детей, но важно ставить в пару детей разного уровня и возраста. Если это будут сверстники с одинаковым уровнем знаний, парное программирование превратится в соперничество. А если уровень и возраст будут немного разными, получится продуктивная работа в команде. Ребенок с более высоким уровнем будет учиться через объяснения, а ребенок с более низким — через тягу за напарником.


Больше информации и новостей о трендах образования в нашем Telegram-канале. Подписывайтесь.

Обновлено 20.10.2020
Главная Лента Подписаться Поделиться
Закрыть