Парное программирование — это стиль программирования, в котором два программиста работают бок о бок на одном компьютере, совместно используя один экран, клавиатуру и мышь, непрерывно сотрудничая над одним и тем же проектом, алгоритмом, кодом или тестом.
Один программист, называемый драйвером , имеет контроль над клавиатурой / мышью и активно реализует код или пишет тест. Другой программист, называемый навигатором , постоянно наблюдает за работой водителя, чтобы выявить дефекты, а также стратегически думает о направлении работы.
При необходимости два программиста проводят мозговой штурм по любой сложной проблеме. Два программиста периодически меняются ролями и работают вместе на равных для разработки программного обеспечения.
Парное программирование — преимущества
Существенные преимущества парного программирования —
-
Многие ошибки обнаруживаются во время их ввода, а не в тестировании качества или в полевых условиях.
-
Содержание концевых дефектов статистически ниже.
-
Дизайн лучше, а длина кода короче.
-
Команда быстрее решает проблемы.
-
Люди узнают значительно больше о системе и о разработке программного обеспечения.
-
Проект заканчивается тем, что несколько человек понимают каждый элемент системы.
-
Люди учатся работать вместе и чаще разговаривать вместе, что улучшает обмен информацией и командную динамику.
-
Люди больше наслаждаются своей работой.
Многие ошибки обнаруживаются во время их ввода, а не в тестировании качества или в полевых условиях.
Содержание концевых дефектов статистически ниже.
Дизайн лучше, а длина кода короче.
Команда быстрее решает проблемы.
Люди узнают значительно больше о системе и о разработке программного обеспечения.
Проект заканчивается тем, что несколько человек понимают каждый элемент системы.
Люди учатся работать вместе и чаще разговаривать вместе, что улучшает обмен информацией и командную динамику.
Люди больше наслаждаются своей работой.
Эксперименты по парному программированию
Использование практики парного программирования было продемонстрировано для повышения производительности и качества программных продуктов.
Исследование парного программирования показывает, что —
-
Пары используют не больше человеко-часов, чем одиночные.
-
Пары создают меньше дефектов.
-
Пары создают меньше строк кода.
-
Пары больше наслаждаются своей работой.
Пары используют не больше человеко-часов, чем одиночные.
Пары создают меньше дефектов.
Пары создают меньше строк кода.
Пары больше наслаждаются своей работой.
Университет Юты проводил эксперименты по парному программированию. Результаты показали, что —
-
Пары потратили на программу на 15% больше времени, чем отдельные лица.
-
Код, написанный парами, последовательно прошел больше тестов, чем код, написанный отдельными людьми.
-
Пары последовательно реализуют одну и ту же функциональность, создаваемую отдельными лицами в меньшем количестве строк кода.
-
Научиться программировать в среде, где есть быстро ощутимые результаты, — это весело и позволяет учиться быстрее.
Пары потратили на программу на 15% больше времени, чем отдельные лица.
Код, написанный парами, последовательно прошел больше тестов, чем код, написанный отдельными людьми.
Пары последовательно реализуют одну и ту же функциональность, создаваемую отдельными лицами в меньшем количестве строк кода.
Научиться программировать в среде, где есть быстро ощутимые результаты, — это весело и позволяет учиться быстрее.
Адаптация к парному программированию
Большинство программистов привыкли к одиночной работе и часто сопротивляются переходу на парное программирование. Однако с практикой они могут в конечном итоге сделать этот переход.
По словам Лори А. Уильямс и Роберта Р. Кесслера, в их книге «Все, что мне действительно нужно знать о парном программировании, которое я изучил в детском саду», хорошо объясняется, как развивать навыки, которые мы все изучили в детском саду, чтобы установить командную сплоченность в целом и парное программирование в частности.
Переход и постоянный успех в качестве программиста пары часто включают в себя ежедневную тренировку вежливости.
Следующие разделы являются выдержкой из этой публикации, которая поможет вам стать эффективными парными программистами.
Уроки детского сада
В детском саду мы узнали следующее —
-
Поделись всем
-
Играй честно
-
Не бей людей
-
Положите вещи туда, где вы их нашли
-
Убери свой беспорядок
-
Не бери вещи, которые не твои
-
Скажи, что ты сожалеешь, когда причиняешь кому-то боль
-
Мойте руки перед едой
-
Промывать
-
Теплое печенье и холодное молоко полезны для вас
-
Живи сбалансированной жизнью — учись и думай, рисуй, рисуй, пой, танцуй, играй и работай каждый день
-
Вздремнуть каждый день
-
Когда вы выходите в мир, следите за движением, держитесь за руки и держитесь вместе
-
Знать о чуде
Поделись всем
Играй честно
Не бей людей
Положите вещи туда, где вы их нашли
Убери свой беспорядок
Не бери вещи, которые не твои
Скажи, что ты сожалеешь, когда причиняешь кому-то боль
Мойте руки перед едой
Промывать
Теплое печенье и холодное молоко полезны для вас
Живи сбалансированной жизнью — учись и думай, рисуй, рисуй, пой, танцуй, играй и работай каждый день
Вздремнуть каждый день
Когда вы выходите в мир, следите за движением, держитесь за руки и держитесь вместе
Знать о чуде
Далее мы рассмотрим принципы парного программирования в контексте приведенных выше учений.
Поделись всем
В парном программировании
-
Два программиста сидят вместе и совместно создают один артефакт (дизайн, алгоритм, код и т. Д.)
-
Один человек печатает или пишет, другой постоянно просматривает работу. И то и другое
-
Равные участники процесса
-
Ответственный за каждый аспект артефакта
-
Владеть всем
-
Два программиста сидят вместе и совместно создают один артефакт (дизайн, алгоритм, код и т. Д.)
Один человек печатает или пишет, другой постоянно просматривает работу. И то и другое
Равные участники процесса
Ответственный за каждый аспект артефакта
Владеть всем
Играй честно
В парном программировании
-
Один человек управляет, т.е. имеет контроль над клавиатурой или записывает идеи дизайна, в то время как другой постоянно просматривает работу.
-
Они периодически меняют эти роли, даже если одна из них значительно опытнее другой, чтобы обеспечить равное участие.
-
В то время как человек, который управляет, думает о реализации, другой постоянно просматривает код, думает о возможном более простом дизайне, который возможен, как текущая разработка вписывается в общую систему на сегодняшний день.
Один человек управляет, т.е. имеет контроль над клавиатурой или записывает идеи дизайна, в то время как другой постоянно просматривает работу.
Они периодически меняют эти роли, даже если одна из них значительно опытнее другой, чтобы обеспечить равное участие.
В то время как человек, который управляет, думает о реализации, другой постоянно просматривает код, думает о возможном более простом дизайне, который возможен, как текущая разработка вписывается в общую систему на сегодняшний день.
Не бей своего партнера
В парном программировании
-
Убедитесь, что ваш партнер остается сосредоточенным и на задаче.
-
Вы остаетесь сосредоточенным и на задаче.
-
Убедитесь, что ваш партнер соблюдает предписанные стандарты кодирования и, таким образом, поддерживает приверженность остальной части команды.
Убедитесь, что ваш партнер остается сосредоточенным и на задаче.
Вы остаетесь сосредоточенным и на задаче.
Убедитесь, что ваш партнер соблюдает предписанные стандарты кодирования и, таким образом, поддерживает приверженность остальной части команды.
В опросе по парному программированию было обнаружено, что достигается огромный прирост производительности и улучшение качества. Это потому что —
-
Каждый держит своего партнера сосредоточенным и на задаче без возможности расслабиться.
-
Каждый артефакт проверяется постоянно, так как он создается для обеспечения качества.
Каждый держит своего партнера сосредоточенным и на задаче без возможности расслабиться.
Каждый артефакт проверяется постоянно, так как он создается для обеспечения качества.
Положите вещи обратно на место
В парном программировании
-
Вы должны верить в свои навыки и навыки своего партнера, а также. Любые негативные мысли в этом аспекте должны быть помещены в мусорное ведро.
-
Вы должны быть уверены, что выражаете то, что знаете, и открыты, чтобы учиться у своего партнера, когда это необходимо. Вы можете учиться у своего партнера, наблюдая за ним или мгновенно принимая его отзывы.
-
Вы должны быть уверены, что —
-
Везде, где есть вероятность отставания, вы можете сразу же забрать у своего партнера.
-
Вместе, как пара, вы можете решать проблемы, которые вы не могли решить в одиночку.
-
Вы можете помочь улучшить навыки друг друга.
-
Вы должны верить в свои навыки и навыки своего партнера, а также. Любые негативные мысли в этом аспекте должны быть помещены в мусорное ведро.
Вы должны быть уверены, что выражаете то, что знаете, и открыты, чтобы учиться у своего партнера, когда это необходимо. Вы можете учиться у своего партнера, наблюдая за ним или мгновенно принимая его отзывы.
Вы должны быть уверены, что —
Везде, где есть вероятность отставания, вы можете сразу же забрать у своего партнера.
Вместе, как пара, вы можете решать проблемы, которые вы не могли решить в одиночку.
Вы можете помочь улучшить навыки друг друга.
Убери свой беспорядок
В парном программировании, с техникой «смотреть через плечо»,
-
Вы обнаружите, что удивительно знать, сколько явных, но незамеченных дефектов замечено вашим партнером.
-
Вы можете устранить эти дефекты без естественной вражды, которая может развиться на официальном совещании инспекторов.
-
Характеризует предотвращение дефектов и эффективность устранения дефектов.
Вы обнаружите, что удивительно знать, сколько явных, но незамеченных дефектов замечено вашим партнером.
Вы можете устранить эти дефекты без естественной вражды, которая может развиться на официальном совещании инспекторов.
Характеризует предотвращение дефектов и эффективность устранения дефектов.
Не принимай вещи слишком серьезно
Наличие партнера для непрерывного и объективного анализа дизайна и кодирования является очень полезным аспектом парного программирования. В парном программировании вам нужно убедиться, что вы работаете без лишнего эго или слишком маленького эго.
Это необходимо, потому что,
-
Избыточное эго может проявляться двумя способами —
-
Отношение «мой путь или шоссе» может помешать программисту обдумать идеи других.
-
Защищенность может привести к тому, что программист не получит конструктивную критику или не воспримет эту критику как недоверие.
-
Избыточное эго может проявляться двумя способами —
Отношение «мой путь или шоссе» может помешать программисту обдумать идеи других.
Защищенность может привести к тому, что программист не получит конструктивную критику или не воспримет эту критику как недоверие.
Оба эти способа проявления эго наносят ущерб отношениям сотрудничества.
-
С другой стороны, человек, который всегда соглашается с партнером, чтобы не создавать напряженности, также сводит к минимуму преимущества совместной работы. Для благоприятного обмена идеями, при необходимости, должны быть некоторые здоровые разногласия / дебаты.
С другой стороны, человек, который всегда соглашается с партнером, чтобы не создавать напряженности, также сводит к минимуму преимущества совместной работы. Для благоприятного обмена идеями, при необходимости, должны быть некоторые здоровые разногласия / дебаты.
Таким образом, необходим точный баланс между отображением слишком большого и слишком малого эго. Эффективные программисты пар устанавливают этот баланс в течение начального периода настройки, который может занять часы или дни, в зависимости от людей, характера работы и их прошлого опыта в программировании пар.
Скажи, что ты сожалеешь, когда причиняешь кому-то боль во время перемещения мебели
Программисты должны уметь сидеть рядом и программировать, одновременно просматривая экран компьютера и разделяя клавиатуру и мышь. У экстремальных программистов есть правило «сдвигай клавиатуру / не двигай стулья».
Чтобы обеспечить эффективную связь, как внутри совместной пары, так и с другими совместными парами, без особых усилий программисты должны видеть друг друга, задавать друг другу вопросы и принимать решения по таким вопросам, как проблемы интеграции. Программисты также извлекают выгоду из подслушивания других разговоров, в которые они могут внести жизненно важный вклад.
Отречься от скептицизма, прежде чем начать
Для успеха парного программирования необходимо, чтобы оба партнера понимали ценность сотрудничества в программировании, преимущества и радость опыта. Любой скептицизм в этом отношении должен быть прекращен в самом начале.
Опыт показал, что наличие одного программиста, очень позитивного и / или опытного в парном программировании, может привести к тому, что пара победоносно станет одной объединенной командой.
-
Производительность такой команды больше, чем у тех же людей, работающих в неочищенной форме.
-
Удовольствие, которое люди получают от своей работы, больше, чем вы ожидаете, учитывая характер самой работы.
-
Как только команда начинает жевать, вероятность успеха резко возрастает.
Производительность такой команды больше, чем у тех же людей, работающих в неочищенной форме.
Удовольствие, которое люди получают от своей работы, больше, чем вы ожидаете, учитывая характер самой работы.
Как только команда начинает жевать, вероятность успеха резко возрастает.
Промывать
Пара программистов может работать над чем-то независимо. Однако, когда они воссоединяются, они должны либо пересмотреть независимую работу перед ее включением, либо очистить и переписать независимую работу вместе с непрерывным обзором работы, который выявляет дополнительные недостатки.
Никогда не включайте какую-либо самостоятельную работу без обзора со стороны партнера. Это объясняется тем, что исследования показали, что независимая работа имеет дефекты по сравнению с работой, произведенной парой.
Теплое печенье и холодное молоко полезны для вас
Пара программистов держит друг друга постоянно сфокусированными и на работе. Это может быть очень интенсивно и психически утомительно. Следовательно, периодически делайте перерыв, чтобы сохранить выносливость для следующего раунда продуктивного парного программирования.
Во время перерыва лучше всего отсоединиться от задачи и подойти к ней свежо при перезапуске. Предлагаемые действия — проверка электронной почты, телефонный звонок, просмотр веб-страниц или перерыв на перекус.
Жить сбалансированной жизнью
Общение с другими людьми на регулярной основе является ключом к сбалансированной жизни. Неформальные дискуссии с вашим партнером и другими программистами позволяют обмениваться эффективными идеями и эффективно передавать информацию.
Сделайте перерыв в совместной работе каждый день
Нет необходимости работать отдельно каждый день, но допустимо работать в одиночку 10-50% времени. Это потому что —
-
Многие программисты предпочитают делать экспериментальное прототипирование, сложные задачи с глубокой концентрацией и только логическое мышление.
-
Простое, четко определенное и рутинное кодирование выполняется более эффективным отдельным программистом, а затем проверяется партнером.
Многие программисты предпочитают делать экспериментальное прототипирование, сложные задачи с глубокой концентрацией и только логическое мышление.
Простое, четко определенное и рутинное кодирование выполняется более эффективным отдельным программистом, а затем проверяется партнером.
Следите за движением, держитесь за руки и держитесь вместе
В парном программировании
-
Между ними не должно быть конкуренции. Оба должны работать вместе, как если бы артефакт производился одним умом.
-
Партнеры должны доверять суждениям друг друга и преданности друг друга команде.
-
Партнер никогда не должен обвинять другого партнера в каких-либо проблемах или дефектах.
Между ними не должно быть конкуренции. Оба должны работать вместе, как если бы артефакт производился одним умом.
Партнеры должны доверять суждениям друг друга и преданности друг друга команде.
Партнер никогда не должен обвинять другого партнера в каких-либо проблемах или дефектах.
Знать о силе двух мозгов
Когда двое работают вместе, у каждого свой набор знаний и навыков, состоящий из:
-
Общий набор этих знаний и навыков, который позволяет им эффективно общаться.
-
Уникальные навыки, которые позволяют им внести свой вклад в выполнение своих задач.
Общий набор этих знаний и навыков, который позволяет им эффективно общаться.
Уникальные навыки, которые позволяют им внести свой вклад в выполнение своих задач.
Вместе пара будет —
-
Придумайте более чем в два раза больше возможных решений, чем те, которые были бы при работе в одиночку.
-
Приступайте к более быстрому поиску лучшего решения.
-
Реализуйте это быстрее и с лучшим качеством.
Придумайте более чем в два раза больше возможных решений, чем те, которые были бы при работе в одиночку.
Приступайте к более быстрому поиску лучшего решения.
Реализуйте это быстрее и с лучшим качеством.
Таким образом, парное программирование является мощной техникой, так как два мозга постоянно концентрируются на одной и той же проблеме. Это заставляет человека полностью сконцентрироваться на проблеме.