Причини парного програмування


13

Я працював у декількох магазинах, де менеджмент передав ідею парного програмування мені чи іншому менеджеру / розробнику, і я зовсім не можу за цим піти. З точки зору розробника, я не можу знайти причину, чому перехід на цей стиль кодування був би корисним, і я, як менеджер невеликої команди, не бачив жодної користі.

Я розумію, що це допомагає в основних синтаксичних помилках і може бути корисним, якщо вам потрібно щось вимкнути, але менеджери, які перебувають поза циклом програмування, схоже, продовжують бачити це як спосіб утримувати своїх дизайнерів від відвідування Facebook чи Reddit, ніж як інструмент дизайну.

Оскільки хтось, близький до підлоги розвитку, який, очевидно, не може зрозуміти з книги, яка кинула мені дорогу або сторінку з вікі на цю тему ... з позиції управління на високому рівні, які переваги Пара програмування в роботі з Scrum або Agile середовища?


2
Я думаю, що це корисно у дуже конкретних ситуаціях. Але як загальна модель розвитку, вона нібито марна.
Райан Кінал

4
Це може залежати від програмного забезпечення, яке може забарвити ваш погляд. Якщо у вас є багато маленьких віджетів і ви працюєте над різними маленькими спеціалізованими фрагментами програмного забезпечення щодня, це, ймовірно, не корисно. Це стає надзвичайно корисним, коли ви маєте справу з великою корпоративною системою, де розробникам потрібно враховувати каскад у всій системі, який виробляється за допомогою функціоналу, який вони реалізують. Написання одного класу, який впливає на дані, які використовуються у понад 30 різних місцях, як правило, краще обґрунтувати двома людьми, які мають для цього різні психічні процеси. Це як метод monte carlo для попереднього пошуку дефектів.
Джиммі Хоффа

@JimmyHoffa Отже, основним продуманим процесом є те, що якщо ми знайдемо помилки, перш ніж вони навіть приймуть його до тестування прийняття, ми можемо значно скоротити час, втрачений на оглядах коду / тестуванні коду?
Jeff Langemeier

3
@JeffLangemeier Це насправді більше того; Якщо ви бачите недоліки в дизайні розділу А1 підсистеми А до того, як А1 навіть написано через природний дискурс, який відбувається між двома розробниками в розпал впровадження підсистеми A, ви не тільки економите час, який би витратили на виправлення розділу A1, і розділи A5 і A7, які залежать від A1 (або знаходячи помилки в тих залежних секціях через каскад від фіксації A1), ви економите час, не записуючи цілком поганий розділ. Так, скорочується час тестування, але це також скорочує час розробки таким чином.
Джиммі Хоффа

@MartinWickman Це не дублікат. У вашому зв’язаному одному вони справді шукали мінусів, навіть якщо в назві просили плюси та мінуси. Також більш детальна відповідь плюсів була дана в цьому; до того, що громаді вигідно мати цю, навіть якщо вона близька до іншої.
Jeff Langemeier

Відповіді:


25

Частково це залежить від того, як ви займаєтесь парним програмуванням. У деяких випадках драйвер пари пише код, а другий член пари спостерігає та обговорює деталі проектування та впровадження системи. Інший екземпляр парного програмування передбачає одночасне написання коду обома людьми - одна людина записує реалізовану функціональність, а інша активно розробляє та пише тестовий код на рівні одиниці та інтеграції, знову обговорюючи деталі проектування та впровадження системи.

Незалежно від типу парного програмування, воно ефективно служить безперервним переглядом коду . Ви маєте на увазі код двох людей, спостерігаючи за помилками, перш ніж вони втечуть у більш пізнє середовище тестування / прийняття тестування або в поле. У вас також є двоє людей, які дуже добре розуміють певну частину системи, щоб вони послужили надмірністю, щоб мінімізувати ваш фактор шини . Раннє виявлення дефектів та поширення системних знань навколо команди зменшують витрати на побудову системи.

Поширення знань не обмежується лише технічними знаннями колективу. Залежно від того, хто така пара, вона може дозволити передачі інформації між старшим членом компанії до нового члена про інші речі, які виходять за рамки проекту - стиль кодування, культура компанії, очікування тощо. Це також може дозволити тому, хто більше знайомий з технологією чи інструментом, поділитися своїми знаннями з цієї технології чи інструменту в реальному світі.

Як ви вже згадували, це також допомагає тримати розробників зосередженими та потоковими . Крім потоку, багато людей мають меншу ймовірність перервати декількох людей, що працюють над чимось, ніж окремі особи, які працюють над чимось. Якщо ви проходите за чиїмсь столом, і вони працюють поодинці, але вам потрібно поговорити з ними, ви можете стукати і поговорити з ними. Це менш ймовірно, якщо ви бачите двох або більше людей, які спільно працюють або ведуть дискусію - ви не перебиватимете їх. Перерви витрачають час, а витрачати більше часу означає більші витрати. В інтересах бізнесу - максимізація продуктивності працівників.

Однак є деякі проблеми, які необхідно подолати, щоб зробити програмування пар життєздатним. Розгляньте такі речі, як зіткнення особистості або вибір пар для правильного розподілу знань. Також є розгляд того, коли саме потрібно обертати пари. Парне програмування, зроблене випадково, ймовірно, не буде ефективним, як заплановане. Залежно від складу вашої команди, спарювання людей може взагалі не ефективно.


+1 за чудову відповідь. Я все ще сильно не люблю цю ідею, але ви добре презентуєте її переваги.

Мені подобається розріз вашого серця, це пояснення насправді робить це відчуття життєздатним.
Jeff Langemeier

9
Я віддаю перевагу гібридній моделі, де спарювання є більш спеціальними, виходячи з поточних потреб. Також бувають випадки, коли робота в самоті є більш ефективною, а час, коли робота з партнером - краще. Примушення до постійних пар мені здається довільним і негнучким.
jfrankcarr

Дуже гарна відповідь. Я також програміст у спритній команді, і ми робимо багато пари. На початку ми також були скептично налаштовані, ми вважали, що робота в самоті - це найкращий шлях. Тоді, в якийсь момент еволюції команди, ми нав'язували парне програмування. Ніякого виробничого коду не було здійснено, якщо не програмується пара. Це було штучним виконанням концепції спарювання, але це дуже допомогло команді. Нарешті, після того, як ми всі звикли до техніки та один одного, ми змінили свій стиль, і ми об’єднуємось тимчасово, і здебільшого, коли реалізація є більш складною або схильною до помилок.
Паткос Чаба

@jfrankcarr, ніхто навіть не пропонував постійних пар; Я не впевнений, звідки ви придумали цю ідею. (Зауважте, що у цій відповіді конкретно згадувалося про те, «коли потрібно обертати пари».) Наша команда виявила, що дійсно погана ідея тримати одне і те ж двоє людей, що поєднуються один з одним більше, ніж день-два; ти починаєш потрапляти в колію. Деякі команди обертаються кожні півтори години (PDF-посилання).
Джо Уайт

3
  1. Менше помилок у підсумковому коді (ефективність)
    Не повністю замінює огляди коду, але високоефективна для того, щоб виправити речі на ранньому етапі. Там є дослідження, які вказують у цьому напрямку.

  2. Швидше завершення (ефективність)
    Про це свідчить декілька досліджень. Що стосується складних особливостей, 2 голови просто ефективніші. Для цього необхідний досвід спарювання.

(Примітка. Це ваш продавець для менеджера. Фінансово обгрунтоване рішення, оскільки ви отримуєте більш ефективну через меншу кількість помилок та ефективнішу, швидше закінчуючи)

  1. Викладання юніорів
    Ви можете додати молодшого класу безпосередньо до досвідченого програміста. Якщо у вас є група абсолютних початківців, неважко триматися за ними і нехай вони, як пари, визначають основи. Потримайся і дай пораду. Концепція, мабуть, дуже стара і випливає з майстерності.

3

Швидкий відповідь: більшість переваг і витрат розміщені у Вікіпедії, однак давайте розглянемо це з дещо іншого кута.

Я хотів би зазначити конкретні випадки переваг програмування пар, які застосовуються до спритного / розробленого середовища scrum, взятого з публікації блогу :

Успіх або провал програмного забезпечення залежить від його якості, а програмування пар безпосередньо покращує якість численними способами. Коли два розробника працюють разом, якість дизайну покращується, оскільки пара розробляє короткий, простий та простий у підтримці код із меншою кількістю помилок. Помилки є головним питанням якості в розробці програмного забезпечення; з двома наборами очей, що пишуть код, виявляється більше помилок, тим самим зменшуючи витрати на розробку. Виправлені помилки в процесі розробки часто виправляють дорого. Швидке виявлення дефектів програмного забезпечення запобігає та допомагає стримувати складні проблеми в дорозі. Складність часто виникає в програмуванні, і два розуми, які працюють над вирішенням проблеми, можуть бачити більше варіантів і робити висновки швидше, ніж один.

в резюме:

  • Сприяє командному спілкуванню
  • Сприяє ефективній передачі знань додатків
  • Сприяє підзвітності підходу до проектування
  • Результати в кращому, простому для обслуговування коді
  • Допомагає усунути баггі-код на ранній стадії
  • Збільшує продуктивність команди, оскільки члени команди будуть приділяти нероздільну увагу під час кодування
  • Удосконалює навички спілкування та співпраці членів команди
  • Будує товариство на робочому місці
  • Робить роботу веселішою

When two developers work together design pattern quality improves-> ця фраза взагалі не має сенсу. Принаймні, не більше сенсу, ніж When two bakers work together wheat quality improvesабо When two race drivers work together asphalt quality improves.
френель

Це цитата з блогу, яку ви можете заглянути. Однак моя мета полягала в тому, щоб акцентувати більше увагу на технічному дизайні та якості коду, маючи певний тип підзвітності, оскільки кожен розробник прагне пишатися кодом, який створюється.
Юсубов

2

Є кілька переваг для парного програмування:

  • Два програміста здатні спільно співпрацювати над дизайном, потенційно створюючи кращу архітектуру / код - дві пари очей можуть помітити помилки
  • Знання про заклади зберігаються краще - якщо один програміст покидає або його немає, інший повинен мати можливість продовжувати роботу без особливих втрат продуктивності
  • Це один із способів швидкого навчання нових розробників - з'єднати їх з досвідченим членом команди розробників, і вони зможуть випробувати базу коду з точки зору ветерана команди
  • Краща дисципліна - парні програмісти, ймовірно, будуть продуктивними протягом більш тривалого періоду часу, оскільки той чи інший може взяти на себе участь у сплесках діяльності. Потенційно стомлюючі завдання, як-от тестування одиниць, можуть пропускатися рідше, ніж для соло розробників.

У Вікіпедії також є хороший підсумок витрат та переваг у вікі .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.