Що таке "рой"?


42

Я чув про рій, що згадується в контексті програмування Екстремального або Екстремального. Здається, це доповнення до пари.

Що це саме? Коли його слід застосовувати? Як ти це робиш добре?


@CodeWorks: Мій пошук у Google дав мало релевантних результатів, і жоден із чіткою відповіддю на моє запитання. Якщо там є канонічна відповідь, то, будь-ласка, розмістіть її тут.
Джей Базузі


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

Відповіді:


43

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

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

Тут є деякі труднощі. Наприклад, QA не завжди може перевірити речі, перш ніж вони побудовані (або навіть спроектовані). У цьому випадку ви повинні створити дизайн разом на початку, і тоді QA може написати (спочатку невдало) тести проти дизайну, а не реальної реалізації.


+1. Цікаво. Ви бачили цю роботу на практиці?
CodeART

2
Ще один спосіб сказати, що це "мати якомога менше незавершених робіт", правда?
Джей Базузі

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

1
@JayBazuzi Так, дуже багато. Маючи повну командну підтримку, також важливо.
Олексі

9
@CodeWorks, зовсім не так. Насправді це, ймовірно, збільшило її. Оскільки всі працювали так тісно разом, було менше блокаторів, які з'явилися на світ. Коли щось з’явилося, принаймні хтось із команди знав, як це вирішити, і зміг це зробити відразу, оскільки на них було привернено їх повну увагу. Крім того, переключення контексту, як правило, погано впливає на вашу продуктивність. Просто запитай у вас процесор. : P
Олексі

10

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

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

Нещодавно у нас була невелика кількість історій, яка була досить сумною, нецікавою роботою. Я дав команді невеликий стимул (піца) та термін (кінець дня), щоб закінчити роботу, тому вони заграли в історію і вибили принаймні пару днів роботи за один день. Вони закінчили роботу і вийшли з дороги рано, потім кожен член команди повернувся до того, над чим працював. Вони отримали безкоштовний обід, я рано завершив роботу, яка могла затягнутися через тупу природу, і команда випередила свій спринт. Безпрограшна робота.

"Рой" - це не що інше, як вигадливий термін для "ей, давайте допоможемо вам у цьому".


Це здається зовсім іншим, ніж інші відповіді. Ви говорите, "коли є незвична, нагальна потреба, будьте всі". @Oleksi сказав: "Плануючи цикл розвитку, краще ставити всіх за одне завдання одночасно, ніж паралельно працювати кожній людині над окремим завданням". Будь-яке визначення є правдоподібним, і обидва є корисною практикою, але його голоси мають 4 рази, тому я припускаю, що його відповідь відображає найбільш широко прийняте визначення.
Джей Базузі

@ Джей Базузу: Незалежно від того, чи всі поставлені на одне завдання як частину плану спринту, чи це відбувається органічно в міру виникнення потреб, визначення все ще майже однакове - всі працюють разом над одним завданням.
Брайан Оуклі

Я думаю, що ваша відповідь тут дуже ключова. Інша відповідь, яка "прийнята", - це "що". Але ваше, здається, вирішує як.
Ape-inago

2

Роїння - це насправді центральна концепція спритності. Це не те, що робиться "коли є проблеми". Рой у своїй найпростішій формі означає, що команди працюють спільно над предметами (розповідями) та відпрацьовують їх до завершення. Основна концепція полягає в тому, щоб "кинути старт і почати закінчувати". Іншими словами, замість того, щоб кожен розробник працював самостійно над історією, команда зосереджується на більш обмеженому наборі історій / завдань разом і швидше виконує кожен предмет. Розгляньте це як різницю між однопотоковою системою та багатопотоковою. Якщо в User Story є 10 завдань, які необхідно виконати, і на кожне - 8 годин, якщо припустити, що не було ніяких ускладнень, один розробник міг працювати над кожним завданням послідовно і завершувати історію за 80 годин або приблизно за два тижні (даючи 10-денний спринт 8 годин на день). Що робити, якщо два розробники розділили завдання і попрацювали над ними одночасно? Ті ж 80 годин роботи можна виконати таким чином за один тиждень. Додайте третю частину, і ви можете побачити, що це може бути зроблено через 3 - 4 дні.

Роїння можна проводити кількома способами:

  1. Пара програмування (два розробники сидять поруч, щоб працювати над кодом, один - "драйвер", який пише код, інший - навігатор, зберігаючи на увазі більш тривалий напрямок і допомагаючи одночасно переглядати код.
    1. Парна робота: розробник і тестер працюють одночасно над однією роботою, одне кодування, а інше тестування, автоматизація запису тощо
    2. Роїння, як я вже згадував вище, що дуже часто. Зазвичай члени команди рояться Історією, але кожен володіє індивідуальними завданнями за цим методом.
    3. Мобільне програмування: вся команда орієнтована на одну історію (або навіть завдання) за один раз.

Команди, які надають історію кожному розробнику, як правило, мають занадто багато "незавершеної роботи" або WIP, і часто багато історій починається, але не робиться. Це АНТИПАТЕРНЕТ, і НЕ найкраща практика.

Команди, у яких рой, як правило, мають менше WIP та завершують більше історій - я вже маю на увазі Розвинені, перевірені, затверджені, готові до розгортання. Таким чином, така практика є основою спритності.


1

Наступна стаття про InfoQ описує один підхід до роїння:

  • Команда використовує мобільне програмування для більшості завдань з кодування
  • Частина команди або окремі члени команди часто розбиваються і приєднуються до команди за короткі проміжки часу
  • Всі роблять все (немає ролей)
  • Команда не використовує оцінок, WIP - це завжди один, немає необхідності в складі або подібних церемоніях

Прочитайте статтю для детального пояснення.

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