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

Как вы распределяете обязанности в парном программировании?

СД: Лучше всего, чтобы разработчик вел, то есть писал код и думал вслух, с второстепенным разработчиком, который делает записи и задает вопросы. Затем роли резервируются на следующий сеанс.

Какие ожидания вы возлагали на парное программирование?

ДД: Я ожидал учиться у кого-то более опытного, чтобы развить свои навыки и лучше распознать свои сильные и слабые стороны, чтобы я мог двигаться дальше.

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

Насколько ваш реальный опыт парного программирования соотносится с вашими ожиданиями?

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

SD: После нескольких опытов парного программирования я понял, что некоторые из моих объяснений были неправильно поняты. В большинстве случаев проблема возникала из-за моего способа объяснения проблемы и моего понимания предмета. Я понял, что выражение «если вы не можете объяснить что-то в одном простом предложении, это потому, что ответ не ясен в вашей голове» относилось ко мне и что мне приходилось иногда возвращаться к этой теме самому.

С какими трудностями вы столкнулись при парном программировании?

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

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

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

Как часто люди должны заниматься парным программированием. Должна ли это быть регулярная запланированная деятельность?

SD: Нет никаких правил, хотя люди обязательно должны включить парное программирование в свое расписание. Обычно я занимаюсь парным программированием 2 дня в неделю. Лично я во вторник после обеда буду ходить к джуниору и комментировать его работу, выступая в роли наблюдателя. По четвергам после обеда мы меняемся ролями, и младший разработчик просматривает мой код и действует как наблюдатель, пока я за рулем. Сеансы длятся в среднем 1-2 часа.

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

Что вам нравится в парном программировании?

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

SD: Даже будучи опытными разработчиками, мы учимся каждый день, даже у разработчиков с более низким профилем. Некоторые из наших объяснений подтверждают наше понимание и даже открывают наши знания. Вопросы, которые нам задают, случайны и неожиданны, что заставляет нас задуматься о новых проблемах или обратиться к новым методам. Это хорошее упражнение для адаптации к разным разработчикам и сложности вопросов.

Какие ситуации лучше всего подходят для парного программирования? Бывают ли ситуации, когда парное программирование не рекомендуется?

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

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

Что вы можете посоветовать людям, которым не нравится парное программирование?

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

SD: Код-ревью — хороший способ передачи навыков. Но некоторые навыки, связанные с использованием инструментов (терминал, ide и т. д.) и разбивкой логики идеи, сложно передать онлайн через чат; всегда лучше обсудить эти вещи лично.

Выводы о программировании пары ключей

  1. Один разработчик действует как водитель (кодер за клавиатурой), а другой — как наблюдатель. Затем вы переключаетесь.
  2. Парное программирование может принести пользу как старшему, так и младшему разработчику. Сохраняйте непредвзятость — будьте готовы учиться и делиться тем, что знаете.
  3. Не существует установленных правил о том, когда и как часто выполнять сопряженную программу. Поскольку у всех нас разные способы работы, разработчики должны адаптировать сеанс парного программирования к своей среде и способу обработки. Важно выделить для этого время и не позволять другим вещам занимать приоритетное место.

Каковы ваши мысли и опыт парного программирования? Поделитесь ими с нами!