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

Важно быть честным в отношении человеческой природы.

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

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

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

Какие у тебя сильные стороны? Никто не хорош во всем. Если вы слабее во внешнем коде, как часто вы обращаетесь за помощью, чтобы узнать, как улучшить свои внешние решения?

Подотчетность

Каждый из нас проходит через циклы с вышеуказанными проблемами. Бывают моменты, когда мы на месте, и времена, когда мы не в себе. Нет двух одинаковых людей, и люди, как правило, испытывают описанные выше проблемы в разном ритме. Если бы мы могли объединить двух людей, смогли бы мы нейтрализовать негативные эффекты этих ритмов? Абсолютно!

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

Выполнение

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

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

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

Проблема с автобусом

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

Но почему есть ключевые разработчики?

Я думаю, что есть несколько причин. Во-первых, у вас есть определенные разработчики, обладающие большим объемом знаний в предметной области. Во-вторых, у вас есть разработчики со специальными навыками и техническими знаниями.

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

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

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

Найм

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

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

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

Вывод

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