Парное программирование: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
оформление, орфография
Нет описания правки
Строка 1: Строка 1:
{{Стиль статьи}}
{{Стиль статьи}}
[[Файл:Pair Programming 3.jpg|мини|справа]]
[[Файл:Pair Programming 3.jpg|мини|справа]]
'''Па́рное программи́рование''' ({{lang-en|pair programming}}) — это методика [[Разработка программного обеспечения|разработки программного обеспечения]], при которой два [[программист]]а работают вместе над одной задачей, сидя за одним рабочим местом. Один из программистов, называемый «ведущим», управляет компьютером и фокусируется на деталях [[Программирование|программирования]]. Второй программист, известный как «штурман»<ref>{{cite web|url=http://www.cnews.ru/reviews/index.shtml?2012/09/07/502131|title=Парное программирование: эффективная работа или мучение?|last=Касьянова|first=Любовь|date=07.09.12|publisher=[[CNews]] Аналитика|lang=ru|accessdate=2013-02-24|archiveurl=https://web.archive.org/web/20130224090624/http://www.cnews.ru/reviews/index.shtml?2012%2F09%2F07%2F502131|archivedate=2013-02-24|deadlink=yes}}</ref>, сосредоточен на общей картине и непрерывно следит за кодом, создаваемым первым программистом. В течение сессии они периодически меняются ролями, обычно каждые полчаса, чтобы обеспечить равное распределение ответственности и вовлеченности каждого члена команды.
'''Па́рное программи́рование''' ({{lang-en|pair programming}}) — это методика [[Разработка программного обеспечения|разработки программного обеспечения]], при которой два [[программист]]а работают вместе над одним проектом. Один из программистов, называемый «ведущим», управляет компьютером и фокусируется на деталях [[Программирование|программирования]]. Второй программист, известный как «штурман»<ref>{{cite web|url=http://www.cnews.ru/reviews/index.shtml?2012/09/07/502131|title=Парное программирование: эффективная работа или мучение?|last=Касьянова|first=Любовь|date=07.09.12|publisher=[[CNews]] Аналитика|lang=ru|accessdate=2013-02-24|archiveurl=https://web.archive.org/web/20130224090624/http://www.cnews.ru/reviews/index.shtml?2012%2F09%2F07%2F502131|archivedate=2013-02-24|deadlink=yes}}</ref>, сосредоточен на общей картине и непрерывно следит за кодом, создаваемым первым программистом. В течение сессии они периодически меняются ролями, обычно каждые полчаса, чтобы обеспечить равное распределение ответственности и вовлеченности каждого члена команды.


== Преимущества ==
== Преимущества парного программирования ==
: Программисты, работающие в паре, чаще делают то, что от них требуются и реже устраивают перерывы во время работы. Программисты склонны к написанию качественного кода и меньшему количеству неудачный решений. Совместная работа позволяет обнаружить и исправить ошибки в коде ещё на ранних стадиях разработки. Это возможно благодаря тому, что два участника процесса анализируют и контролируют работу друг друга. Парное программирование помогает лучше вовлекаться в работу. При коллективном владении, программисты получают доступ ко всему коду за счёт совместной работы над ним. Это позволяет разбираться в коде большему числу программистов, что ускоряет процесс разработки, так как появившуюся ошибку в коде может устранить любой программист из команды. Каждый программист знает что-то, чего не знают другие и наоборот. Так, парное программирование — безболезненный способ обмена знаниями.
; ''Повышение дисциплины''
: Программисты, работающие в паре, чаще делают то, что от них требуются и реже устраивают перерывы во время работы.

; ''Лучший код''
: При парной работе, программисты склонны к написанию качественного кода и меньшему количеству неудачный решений.

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

; ''Высокий боевой дух''
: Работающие в паре программисты вовлечены в работу, что уменьшает количество отвлекающих факторов и повышает мотивацию.

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

; ''Наставничество''
: Каждый программист знает что-то, чего не знают другие и наоборот. Так, парное программирование — безболезненный способ обмена знаниями.

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

; ''Экономическая обоснованность''

; ''Высокое качество дизайна''

; ''Обратная связь''

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

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


== Разновидности ==
== Разновидности ==

Версия от 09:01, 26 марта 2024

Па́рное программи́рование (англ. pair programming) — это методика разработки программного обеспечения, при которой два программиста работают вместе над одним проектом. Один из программистов, называемый «ведущим», управляет компьютером и фокусируется на деталях программирования. Второй программист, известный как «штурман»[1], сосредоточен на общей картине и непрерывно следит за кодом, создаваемым первым программистом. В течение сессии они периодически меняются ролями, обычно каждые полчаса, чтобы обеспечить равное распределение ответственности и вовлеченности каждого члена команды.

Преимущества парного программирования

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

Разновидности

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

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

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

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

  • первый участник пишет тест;
  • второй — изменяет код для успешного прохождения теста, пишет ответный тест и отдаёт клавиатуру обратно.

Удалённое (дистанционное) парное программирование

Удалённое (дистанционное) парное программирование, также известное как виртуальное парное программирование или распределённое парное программирование — это разновидность парного программирования, в котором два программиста находятся на расстоянии друг от друга[2], работая через средство совместного редактирования кода, удалённый рабочий стол, или посредством плагина для интегрированной системы разработки. Удалённое парное программирование добавляет дополнительные трудности, отсутствующие в обычном парном программировании, такие как дополнительные задержки координации, зависимость от более тяжеловесных инструментов управления задачами вместо таких упрощённых вариантов, как карточки с индексами[прояснить], и отсутствие невербальных средств общения, приводящее к непониманию и конфликтам в таких вопросах, как «чья сейчас клавиатура».

См. также

Примечания

  1. Касьянова, Любовь Парное программирование: эффективная работа или мучение? CNews Аналитика (07.09.12). Дата обращения: 24 февраля 2013. Архивировано из оригинала 24 февраля 2013 года.
  2. Nick V. Flor. Globally distributed software development and pair programming (англ.) // Communications of the ACM. — 2006. — Vol. 49, no. 10. — P. 57—58. — doi:10.1145/1164394.1164421. Архивировано 9 сентября 2016 года.

Литература

  • Omar S. Gómez, José L. Batún, Raúl A. Aguilar. Pair versus Solo Programming -- An Experience Report from a Course on Design of Experiments in Software Engineering (англ.) // International Journal of Computer Science Issues. — 18 июня 2013. — arXiv:1306.4245.