Содержание
В частности, нет смысла подключать его на постоянной основе. Это автоматически увеличивает время разработки – фактически, мы забираем время двух человек, при этом реализуя одну часть функционала. Но если же есть какая-то сверхсложная задача, которую сложно решить сходу, то можно вспомнить про парное программирование.
Эта практика также способствует укреплению связей между разработчиками и созданию командного духа. Экстремальное программирование — гибкая методология, в центре которой качественный работоспособный код с простой архитектурой. Ее предназначение — снизить уровень неопределенности в проектах и по-настоящему гибко реагировать на изменения требований к продукту. Это значит, что новые части кода сразу же встраиваются в систему — команды XP заливают новый билд каждые несколько часов и чаще. Во-первых, сразу видно, как последние изменения влияют на систему.
По моему опыту для отладки никакого парного программирования не нужно. На работе часто выносим на командное обсуждение какие-то новые решения, а так же с удовольствием ковыряем вместе мистические проблемы на продакшене. Идеальная https://deveducation.com/ работа, чтоб показывать, как что устроено в проекте. По поводу стиля – можно написать вместе какую-нибудь программку, которая исправляет код. Проектирование – это еще одна область, где хорошо работать в слаженной паре.
В дополнение к основным стилям, есть и другие лайфхаки для облегчения совместной работы. Документация — прекрасный пример задачи, которая помогает дисциплинировать обоих партнеров. Обычно это задача, остающаяся напоследок, и та самая последняя вещь, которая не позволяет ощутить прекрасное чувство завершенности дела. Работа в паре заставляет нас быть честными по отношению к некоторым ценным, но дико раздражающим вещам.
- Также это приложение позволяет видеть, над какими файлами работают ваши коллеги.
- Парное программирование — это активность, при которой два разработчика работают вместе над одной частью кода одновременно.
- Чаще всего разработчики меняют их в зависимости от ситуации.
- Все соавторы могут одновременно менять код в одном документе или редактировать другие файлы.
- Причем производительность осталась на высоком уровне даже несмотря на то, что в этой компании дается право делать 15 минут перерыв каждый час.
Если закопаться, то и ежегодный пересмотр зарплаты может стать препятствием к парному программированию, если «заслуги» людей рассматриваются сугубо по результатам индивидуальной работы. Здесь есть свои лайфхаки, но для этой статьи это оффтопик. Вполне нормально, что в начале работы, когда специалисты находятся на стадии знакомства, прощупывают так называемые «фичи» друг друга.
Удаленное Программирование
Который (код), в общем-то требует только точечных пояснений, в нетривиальных местах, и для этого вполне достаточно получасового вок-тру митинга. Это хорошо подходит для решения самых сложных проблем. Представьте экспертов в разных областях, работающих над интеграцией. Понятно, зачем парное программирование нужно «галерам» — синьоры обучают себе конкурентов, вместо того чтобы заниматься любимым делом (писать код). Кстати может ревью и не нужен для кода написанного в паре, по сути ревью проходит всё время во время написания кода. Парное программирование возможно только при взаимном уважении и терпении.
Бывает так, что дедлайн по задаче уже приближается, а работа еще не начата. Не реже встречается вариант, когда каждая задача кажется важной, а выбрать, с какой начать – непонятно. Эта методология предназначена исключительно для сферы разработки программных продуктов и не может быть адаптирована под другой бизнес. Парное программирование в openspace компании Pivotal Software, Inc. Метафора системы — это ее сравнение с чем-то знакомым, чтобы сформировать у команды общее видение.
Если вмешиваться в процессе работы, это будет постоянно мешать “ведущему”. Челси Трой выпустила целую серию постов о продвинутом парном программировании, включая пост про удаленную совместную работу (на английском). Для подобного взаимодействия потребуется ПО с удаленным доступом, где нужно не только видеть, но также управлять чужим устройством (для обмена ролями). Большинство программ с видеоконференцсвязью поддерживают эту функцию, так что, если ваша компания уже имеет лицензионное ПО с удаленным доступом, сначала попробуйте его.
Незашоренный взгляд помогает весьма быстро найти проблему за пару минут, даже если ты сам уже потратил на нее пару часов. До последнего времени у меня не было личного опыта парного программирования, поэтому мое мнение было сугубо теоретическим. За последние парное программирование полгода у меня появился какой-то опыт, и именно им и хотелось бы поделиться. Работая в паре, нужно не только активно пользоваться своими знаниями, но и проявлять их отсутствие в той или иной теме. Это является нетипичным поведением для большинства людей.
Так как меняться ролями лучше не реже, чем каждые 30 минут, то подойдут 25 минутные рабочие интервалы с 5-минутным перерывом. Есть различные крылатые выражения о том, что «Senior может выполнить задачу в 10 и 100 раз быстрее, чем Junior». Правда в том, что иногда Junior вообще не может выполнить задачу. Они могут просто-напросто не знать какого-то алгоритма, библиотеки, особенности языка и не знать о том, что они пока еще этого не знают (те самые unknown unknowns). Один из разработчиков начал разработку новой фичи раньше, чем к нему присоединился второй. Продуктивная работа началась только после того, как второй разработчик смог построить в голове всю логику уже реализованной части решения от начала и по текущий момент.
О Парном Программировании
Он научил меня многим вещам, а в последствии стал хорошим другом. С ним мы поработали над далеко не одним проектом в нескольких компаниях. Но так получилось, что все время нашего сотрудничества и дружбы мы живем в разных городах, а сейчас и вовсе — в разных странах.
Следующая часть статьи будет посвящена подводным камням парного программирования – с какими затруднениями можно столкнуться при работе в паре. Парное программирование само по себе не гарантирует, что вы добьетесь коллективного владения кодом. Нужно убедиться, что вы меняетесь парами и частями кода, чтобы предотвратить “застой” знаний. Старайтесь изначально формировать пары таким образом, чтобы хотя бы один из разработчиков ранее уже работал в парном программировании. Связь внутри пары может быть нарушена несколькими элементами. Различные технические проблемы, такие как отключение сети или сообщения об ошибках в программном обеспечении, могут тратить время на пару.
В конце концов, гибкие методологии должны быть гибкими и в плане применения — подстраиваться под нужды конкретной команды и проекта. Немногие компании рискуют работать по чистому XP, но его практики разработки — самые популярные в agile проектах. Мартин Фаулер — программист и соавтор методологии экстремального программирования.
Но к этому можно привыкнуть — важно отслеживать свои ощущения и сообщать напарнику, если чувствуете себя некомфортно. Партнеры должны совпадать по человеческим и профессиональным качествам. Лучше, если у вас будут одинаковые база и взгляды на программирование — разработчикам со слишком разным уровнем будет тяжело в паре. Роли в парном программировании используют по-разному в зависимости от стиля.
Инструментов Для Удаленного Парного Программирования
Подходит для опытных, хорошо сработавшихся команд. Все работают по кругу со всеми, пока задача не будет выполнена. Партнеры совместно прорабатывают решение на бумаге, доске, в miro; формируют общую ментальную модель. Хорошие пары уравновешивают краткосрочные цели, такие как выявление дефектов или реализация новой фичи и долгосрочные, например – устранение пробелов в знаниях партнеров, онбординг.
А если уровень и возраст будут немного разными, получится продуктивная работа в команде. Ребенок с более высоким уровнем будет учиться через объяснения, а ребенок с более низким — через тягу за напарником. Парное программирование лучше работает, когда оба разработчика сидят за одним компьютером — это дает больше взаимопонимания и драйва. Однако такую работу можно организовать онлайн с помощью специальных плагинов. За счет того, что оба разработчика погружены в одну задачу, они решают ее быстрее. Это больше не о специфической технике для совместной работы, а об образе мышления при кооперации.
Эта практика про то, что любая пара программистов может изменить любой код в любое время — у них есть к этому доступ. С экономической точки зрения дополнительные расходы на персонал, связанные с парным программированием, компенсируются повышением качества создаваемого приложения. Чем позже будет обнаружен дефект, тем дороже его исправить. Таким образом, позднее исправление дополнительных дефектов в приложении, разработанном одним программистом, обходится в пятнадцать-шестьдесят раз дороже. Никто не обязывает внедрять XP по принципу «все или ничего».
Как Провести Сессию В Удаленной Команде
Если пара работает над смежными задачами и совместно решает вопросы интеграции? Но меняться по принципу каждый с каждым внутри команды каждый час? Вообще, наверное, самое первое, с чем сталкиваются люди, которые хотят внедрить парное программирование в команду — убеждение менеджмента и команды в эффективности данного метода. И для решения этой проблемы не существует простого рецепта. Здесь нужно пробовать, аргументировать и искать возможности. Так как в процессе парного программирование участвуют два человека, то один всегда является наблюдателем.
Время Одиночек Прошло: Что Такое Парное Программирование
Задача состоит в том, чтобы сформулировать общие указания, благодаря которым код станет понятным для каждого из членов команды. Стандарт оформления кода поначалу должен быть простым, затем он может постепенно усложняться по мере наработки опыта группой разработчиков. Не нужно тратить слишком много времени на предварительную разработку стандарта.
Экстремальное Программирование
Хорошо, если это конечный пользователь, который разбирается в том, что нужно. Также могут быть программисты, тестировщики, аналитики, менеджеры, коучи. Так при написании кода сразу можно получить обратную связь и корректировать путь.
(Впервые мы встретили термин в треде в Твиттере у Сары Мэй). Реализация пользовательской истории или функции обычно требует не только написания кода, но и выполнения многих других задач. Как партнеры, вы оба несете за них ответственность. Чисто гипотетически, рискну предположить, что эфективность сложно измерить на короткой дистанции. Это как с юнит тестами – сначаала вроде дольше, а в итоге быстрее.