Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Парное программирование — это техника разработки программного обеспечения, в которой два программиста совместно работают за одним рабочим местом. Один, называемый водителем, пишет код, а другой, наблюдатель или навигатор, просматривает каждую строку кода по мере её написания. Программисты часто меняются ролями. Во время просмотра наблюдатель также обдумывает "стратегическое" направление работы, предлагая идеи по улучшению и прогнозируя возможные будущие проблемы. Это позволяет водителю полностью сосредоточиться на "тактических" аспектах выполнения текущей задачи, используя наблюдателя как страховку и помощника.
Collaborative technique for software development
Pair programming is a software development technique in which two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently. While reviewing, the observer also considers the "strategic" direction of the work, coming up with ideas for improvements and likely future problems to address. This is intended to free the driver to focus all of their attention on the "tactical" aspects of completing the current task, using the observer as a safety net and guide.
Экономика
Парное программирование увеличивает количество человеко-часов, необходимых для разработки кода, по сравнению с работой программистов поодиночке. Помимо предотвращения ошибок по мере их возникновения, могут существовать и другие неочевидные преимущества. Например, взаимная вежливость, выражающаяся в отклонении телефонных звонков или других отвлекающих факторов во время совместной работы, сокращение перерывов или совместные перерывы для ответа на звонки (с быстрым возвращением к работе, так как кто-то ждет). Один из участников команды может быть более сосредоточенным и помогать другому сконцентрироваться или взбодриться, если тот отвлекается, при этом эта роль может периодически меняться. Один из участников может обладать знаниями о теме или технике, незнакомой другому, что позволяет избежать задержек при поиске или тестировании решения, или найти более оптимальное решение, тем самым эффективно расширяя набор навыков, знаний и опыт программиста по сравнению с индивидуальной работой. Все эти неочевидные преимущества, и многие другие, сложно точно измерить, но они могут способствовать повышению эффективности рабочего времени.
Pair programming increases the man hours required to deliver code compared to programmers working individually. In addition to preventing mistakes as they are made, other intangible benefits may exist. For example, the courtesy of rejecting phone calls or other distractions while working together, taking fewer breaks at agreed upon intervals or sharing breaks to return phone calls (but returning to work quickly since someone is waiting). One member of the team might have more focus and help drive or awaken the other if they lose focus, and that role might periodically change. One member might know about a topic or technique that the other does not, which might eliminate delays to finding or testing a solution, or allow for a better solution, thus effectively expanding the skill set, knowledge, and experience of a programmer as compared to working alone. Each of these intangible benefits, and many more, may be challenging to accurately measure but can contribute to more efficient working hours.
Удовлетворенность
В онлайн-опросе 2000 парных программистов 96% респондентов заявили, что получают больше удовольствия от работы в паре, чем при индивидуальном программировании. Более того, 95% отметили, что парное программирование повышает их уверенность в качестве своей работы. Однако, поскольку опрос проводился среди программистов, добровольно выбравших парную работу, он не учитывал мнение тех, кто был вынужден программировать в паре.
In an online survey of pair programmers from 2000, 96% of programmers stated that they enjoyed working more while pair programming than programming alone. Furthermore, 95% said that they were more confident in their work when they pair programmed. However, as the survey was among self selected pair programmers, it did not account for programmers who were forced to pair program.
Учиться
Знания постоянно обмениваются между программистами, работающими в парах, будь то в индустрии или в учебной аудитории. Многие источники указывают на то, что студенты демонстрируют большую уверенность при программировании в парах. В случае "свободного парного программирования" каждый программист взаимодействует и работает со всеми остальными членами команды, а не только с одним партнером, что способствует распространению знаний о системе по всей команде. Хотя пара программистов может выполнить задачу быстрее, чем программист, работающий в одиночку, общее количество человеко-часов при этом увеличивается. Парное программирование может быть полезно для достижения высокого качества и корректности при решении сложных задач, но при этом значительно увеличивает трудозатраты (стоимость) разработки. Оно может сократить время разработки кода, но также несет риск снижения качества программы. Исследование программистов, использующих инструменты помощи на основе ИИ, такие как GitHub Copilot, показало, что, хотя некоторые программисты воспринимают помощь ИИ как нечто похожее на парное программирование, на практике использование таких инструментов существенно отличается с точки зрения опыта программирования, поскольку человеку приходится постоянно переключаться между ролями "водителя" и "навигатора".
Knowledge is constantly shared between pair programmers, whether in the industry or in a classroom. Many sources suggest that students show higher confidence when programming in pairs, In "promiscuous pairing", each programmer communicates and works with all the other programmers on the team rather than pairing only with one partner, which causes knowledge of the system to spread throughout the whole team. Although pair programmers may complete a task faster than a solo programmer, the total number of man hours increases. Pair programming could be helpful for attaining high quality and correctness on complex programming tasks, but it would also increase the development effort (cost) significantly. It may reduce the code development time but also risks reducing the quality of the program. A study of programmers using AI assistance tools such as GitHub Copilot found that while some programmers conceived of AI assistance as similar to pair programming, in practice the use of such tools is very different in terms of the programmer experience, with the human programmer having to transition repeatedly between driver and navigator roles.