Парное программирование на собеседованиях

0
1289
views

Перевод статьи Софи ДеБенедетто «Pair Programming for Interviewees».

Парное программирование

Что такое «парное программирование»? Этот термин довольно обобщающий. Если над написанием кода совместно работают два (или три, а может, и четыре) человека, то это называется парным программированием.

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

Хотя подходов к парному программированию много, цели обычно преследуются одни и те же:

  • Одна голова хорошо, а две лучше. Если два человека продумывают код вместе, они придут к более надежному и элегантному решению, чем каждый из них по отдельности.
  • Распространение знаний. Когда за создание отдельно взятой фичи ответственны два человека, им легче сообщить остальной команде о том, как эта фича работает. Это облегчает развитие функционала, а также его улучшение или переписывание в будущем.

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

Зачем включать парное программирование в собеседование?

Парное программирование стало популярным инструментом собеседований по двум причинам:

  1. Это распространенный и полезный инструмент, которым вы скорее всего будете пользоваться, если получите место разработчика. Естественно, многие компании хотят видеть, как вы справляетесь с написанием кода в паре.
  2. Парное программирование это отличный способ изучить, как кандидат мыслит и каково работать с ним вместе.

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

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

Парное программирование – отличный способ узнать все это о вас как о кандидате на должность.

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

Задания могут варьироваться. Вот несколько распространенных вариантов:

  • Создать пример фичи или простой настройки приложения.
  • Построить пример фичи на основе кодовой базы компании.
  • Решить вместе задачу на программирование (что-то подобное можно посмотреть в Euler Project).
  • Найти и исправить баг в представленной вам кодовой базе.

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

Как программировать в паре на собеседовании

Есть несколько стратегий, которых вы можете придерживаться, чтобы мастерски пройти этот этап собеседования:

  1. Озвучить свое понимание задачи.
  2. Задавать вопросы.
  3. Начинать с простого.
  4. Писать тесты.

Проговаривайте свое понимание поставленной задачи

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

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

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

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

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

  • Покажете вашему партнеру ваше понимание кода и проблемы.
  • Получите возможность отступить на шаг назад и увидеть проблему более четко. Благодаря этому вам будет удобнее искать решение.
  • Дадите вашему партнеру шанс вмешаться и предложить собственные идеи и решения.

Задавайте вопросы

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

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

Поэтому задавайте побольше вопросов! Попросите партнера привести примеры того, как пользователь может взаимодействовать с фичей, которую вы создаете. Просите пояснить, что он имел в виду, говоря <вставить-нужное>. Спрашивайте, есть ли у него какие-то идеи или соображения, с чего начать.

Постановка вопросов помогает вам таким образом:

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

Начинайте с простого

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

Возьмем пример. Допустим, ваше задание для парного программирования включает решение проблемы с Project Euler – «Кратные трем и пяти».

Если мы перечислим все натуральные числа до 10, которые будут кратны 3 или 5, мы получим 3, 5, 6 и 9. В сумме они дают 23. Найдите сумму всех чисел, кратных 3 или 5, в диапазоне до 1000.

Вместо того чтобы сразу искать решение для «всех чисел, кратных 3 или 5, в диапазоне до 1000», начните с приведенного примера. Вы знаете, что ответ для всех чисел в диапазоне до 10 это 3, 5, 6 и 9. Так что напишите код, определяющий эти числа, когда стоит ограничение «до 10».

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

Пишите тесты!

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

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

Вы сумеете программировать в паре

Задание на парное программирование может быть пугающей частью процесса собеседования, но бояться его не стоит.

Главное иметь в виду, что эта часть собеседования предназначена для того, чтобы ваши потенциальные коллеги могли попробовать поработать с вами. Они хотят сотрудничать, они хотят задавать вопросы и отвечать на них, и они хотят получать удовольствие от этого.

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



ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here