Як працює Scrum, коли у вас кілька проектів? [зачинено]


91

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

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

Як Scrum працює з кількома проектами? Ви все ще просто плануєте ітерацію для окремого проекту за певний проміжок часу, і вся команда працює над ним, а потім переходите до наступного проекту з новою ітерацією, коли ця ітерація завершиться? Або існує «спритний» спосіб управління кількома проектами з їх власними ітераціями лише з однією командою одночасно?


9
Мені б хотілося, щоб я знав, що я беру участь у 3+ проектах і маю робити 3+ SCRUMS на день. : cry:
Чад Грант

Це запитання не стосується теми, оскільки воно не входить у сферу дії цього веб-сайту, як визначено у розділі « Які теми я можу тут запитати»? Також дивіться: Яких типів запитань слід уникати? Ви можете запитати на іншому веб-сайті Stack Exchange , наприклад, Управління проектами або Програмне забезпечення . Обов’язково прочитайте тематичну сторінку в довідковому центрі для будь-якого веб-сайту, на якому ви збираєтесь розмістити запитання.
Makyen

3
@Makyen, тут слід врахувати одне, що цьому питанню успішно виповнилося 8,5 років і воно з’явилося задовго до того, як існувала більшість бірж субстеків. Тож, хоча зараз цю тему може найкраще подавати щось на зразок обміну стеками управління проектами, на той час питання щодо практик Scrum було неймовірно актуальним для розробників та їх методологій щодо найкращого виконання роботи.
Тім Найт

Я згоден, це було розумно на той час, коли про це просили. У питанні як у питанні немає нічого поганого. На даний момент це просто не тема для SO. Тематична тема для SO з часом змінилася. Хоча це питання цікавить програмістів, мова не в першу чергу про програмування. Мова йде про процес Scrum, який є методом управління проектами, а не конкретно програмуванням. Йдеться про "управління кількома проектами ... лише з однією командою ...", що може бути різноманітним типом проектів. Таким чином, його доречно закрити. Я не хотів би голосувати за його видалення, оскільки тут є корисна інформація.
Makyen

2
Я голосую за те, щоб закрити це питання як нетематичне, оскільки мова йде про організаційні практики, а не про програмування.
Kristján

Відповіді:


61

Scrum насправді не диктує, що ви повинні працювати над одним автономним продуктом. У ньому просто зазначено, що потрібно виконати купу речей (відставання продукту), у наступній ітерації доступний певний час розробки (розроблений з урахуванням швидкості проекту), і є елементи, відібрані клієнтом / business як найбільш пріоритетний із цього пулу питань / завдань, які будуть виконані на наступній ітерації (відставання спринту).

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

Сказавши це, на практиці часто добре, щоб кожна ітерація мала основну тему - "зробити модуль звітування" або "інтерфейс з API системи XYZ" - так, щоб багато питань виходило з одного проекту чи області та в в кінці ітерації ви можете вказати на великий обсяг робіт і поставити галочку проти нього.


4
+1: Суть Scrum полягає в щоденній стендовій зустрічі для координації діяльності. Працює над окремими або декількома проектами.
S.Lott

4
Я не згоден із С.Лоттом, я думаю, що суть спринту, а стендова зустріч - це інструмент управління спринтом. Я б пробіг 6 спринтів або 1 на проект.
kenny

@Kenny: Якщо це не є важливим, чи не могли б Ви відмовитися від щоденної підготовки кожного окремого проекту? Якщо так, то що ви робите для того, щоб спринт кожного проекту залишався на шляху?
S.Lott

1
@ S.Lott, зустріч призначена для вирішення проблем, якщо вони виникають. Я мав би одного захисника для всієї команди. Не заважає інформувати, і різні / нові точки зору часто можуть бути цінними.
kenny

Що можна сказати про 3 проекти, по 3 члени команди, кожна з яких розробляє власну базу коду для різних власників продуктів? У цьому випадку є 3 команди?
jolySoft

25

Я думаю, що відповідь залежить від того, " хто буде надавати пріоритет елементам відставання " (тобто вирішити, що потрібно зробити першим). Якщо це одна особа, то ця особа є Власником продукту для ваших проектів, і ви можете мати єдине відставання всіх елементів для всіх проектів - або відставання за проектом - і ви вибираєте елементи відставання з усіх проектів, коли плануєте Спринт. У цьому випадку Scrum чудово "працює".

Якщо кожен проект має свого відповідального, тоді ви, швидше за все, зіткнетеся з деякими проблемами, коли кожен відповідальний - більш-менш свідомо - спробує надавати перевагу своєму проекту (проектам). ІМХО, вам потрібно мати одного Власника товару, який має повноваження вирішувати пріоритети за допомогою арбітражу.

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


16

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

Майте на увазі ще одне, що паралельне виконання проектів вбиває ваш графік. Розглянемо це: для спрощення, скажімо, у нас є 5 проектів, що використовують одну команду і починають з тієї ж дати. Кожен проект потребує 3-х місячних зусиль. У найкращому випадку паралельно, ви закінчите їх усі відразу, і це займе 15 місяців. Ваша швидкість стане кремовою, тому що ви можете вмістити лише 1/5 місячних зусиль за один спринт. Ви також будете проводити 5 демонстраційних зустрічей одночасно. Отже, в найкращому випадку, ви виконуєте свої 5 проектів за 15 місяців, і ваша конкуренція заявлятиме, що вони могли б виконати таку ж роботу через 3. Ваші команди, які оцінюють зрілість, постраждають, оскільки вони зможуть врахувати лише 20% своєї доступної робочої сили. Ви можете виявити, що насправді не можете виконати деякі завдання за один спринт. Якщо вам доведеться змінити кількість проектів, з якими працюють, з 5, вашій команді доведеться скоригувати свої оціночні звички, що пошкодить ефективність команд. Крім того, вашій команді буде важко самоорганізуватися, коли для простого перепризначення завдань може знадобитися закрутити нове середовище розробника перед початком роботи.

Якби вам потрібно було запускати ті самі 5 проектів послідовно, ви б поставили 5-й проект за ті ж 15 місяців, але ви б навчили свого клієнта, що ваша команда користується таким попитом, що у вас є 12 місяців відставання і що ви можете використовувати цей час уточнити цілі проекту. Або якщо у вас постійно відставання, ви знаєте, що пора почати наймати іншу команду. Однак ваш найкращий проект закінчується за 3 місяці з клієнтом, який зазнав швидких покращень протягом активного періоду. Ви можете закінчити цей проект роком раніше і можете помістити його у своєму резюме. Ваша швидкість спринту стабілізується протягом цього періоду часу, і ви можете виявити, що після проекту чи двох він досягне свого кроку і зможе досягти більше за даний спринт.

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

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


Це працює, лише якщо ви МОЖЕТЕ перепризначити членів команди. Якщо їм нікуди їхати, ви не можете залишати їх без роботи.
BlueChippy

8

Я потрапив у цю точну ситуацію.

Якщо у вас є один власник продукту в усіх проектах, то Філіп абсолютно правильний; Один спринт з однією командою повинен працювати нормально.

Якщо у вас є більше одного власника продукту, то в ідеалі бізнес-стороні потрібно вибрати одного "пріоритета", на якого покладається відповідальність за планування роботи. Це, безумовно, найкраще рішення.

Якщо (як це, мабуть, бізнес) не хоче змінювати спосіб, яким вони хочуть розставити пріоритети (це було б занадто зручно), тоді ви можете розділити команду. Та провести два одночасних спринту. Однак з командою з шести людей я б не розділив її на більш ніж 3 команди (я б не хотів розділяти це взагалі, але я думаю, що 2-3 команди були б працездатними). Розділяти далі, як пропонує Кенні, і мати команди однієї людини мені здається дещо безглуздим, оскільки тоді у вас більше немає команди, а лише окремі програмісти.

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


5

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

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

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

Щось про що подумати ...


1
Погоджено, ми повинні звести до мінімуму "запас програмного забезпечення", який є накопиченою вартістю бізнесу, яка ще не була введена в дію.
AndyM

4

Я думаю, що anopres мав рацію: найкращий спосіб - уникати кількох проектів одночасно за допомогою scrum. Робіть все, щоб переконатись, що паралельно бігати занадто багато не ефективно.

Припустимо 5 проектів кожен приблизно 3 місяці для команди з 5-ма людьми.

Підхід 1: кожна людина працює над одним проектом у команді

  • 1/5 швидкості доставки на проект дає 15 місяців доставки для всіх проектів
  • Кожна людина є експертом, але лише у власному проекті
  • Жодного командного духу

Підхід 2: 1 спринт на проект, змінюючи проекти

  • Кожен 6-й спринт працює над проектом
  • Занадто довгий час між роботою над проектом - не регулярне додаткове значення для проекту (для відставання товару так), легко забути, зусилля, необхідні для відновлення контексту,
  • Перший проект здійснено приблизно через 12-13 місяців (при умові 2-тижневого спринту)

Підхід 3: 5 проектів в одиночному спринті

  • Потрібен занадто детальний розподіл завдань, щоб просто вписатися в спринт
  • Дуже мало поступової збірки на проект
  • Здійснення першого проекту приблизно через 12-15 місяців

Підхід 4: рекомендований - серіалізована робота

  • Команда працює над окремим проектом за проектом
  • Перший проект розпочато та реалізовано через 3 місяці
  • Другий проект розпочався після 3-го місяця, реалізований після 6-го місяця
  • ...
  • 5-й проект розпочався після 12-го місяця, реалізований після 15-го місяця
  • Команда високо зосереджена на проектах, інтенсивних дослідженнях та співпраці із замовником
  • Вся команда має загальні хороші знання про всі проекти
  • Не витрачайте час на перемикання контексту
  • Потрібна хороша співпраця команди (конфлікти можуть уповільнити доставку).

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

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

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

Ось чому я не вірю, що scrum є ефективним для кількох проектів паралельно, дуже складно поєднати його в структуру і працювати відповідно до правил scrum. Іноді може бути добре мати 2 проекти, щоб зайняти всіх людей, але чим більше проектів ми додамо, тим менш ефективною буде сутичка. Можливо, канбан - це альтернатива лише для того, щоб побачити прогрес і командну роботу (не настільки сильну, як у команді Scrum)?

З повагою, Адаме


3

Як сказав @Chris, у звичайного проекту всередині є підпроекти. У вас є лише одне відставання.

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

Маючи різних власників продуктів, і через те, що ці власники продуктів не збираються домовлятися про те, скільки часу вони повинні приділяти кожному проекту. "Хтось" повинен буде прийняти рішення про те, як керувати пріоритетами міжпроектів. Примітка: розробники не повинні цього робити.

Ось наш менеджер проекту "S", який збалансує ресурси, необхідні власникам продукту, і час, який можуть дати члени команди. Власник продукту A платить за один місяць роботи, але власник продукту B завжди оновлює свій проект (і теж добре платить вам). Є дещо, як ви збалансуєте свою команду, щоб А мав один місяць (час розробника), і не заважайте Б наповнювати ваші кишені.

Що стосується внутрішнього програмного забезпечення (одна компанія, тисяча проектів). Різні власники продуктів повинні домовитись про відведений їм час. Вони живуть не ізольовано, а в одному човні з вами (менеджер проекту "S"). Вони полегшать вам життя завдяки можливості відкласти деякі завдання, але в той же час ви ніколи не повинні забувати їх потреби.

Ну, я все ще намагаюся з’ясувати найкращий спосіб зробити це. Але це те, на що ми наполягаємо зараз. Сподіваюся, це допоможе.


3

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


0

Я б запропонував запустити по одному Sprint для кожного проекту та проводити 1 щоденну зустріч у режимі standup для обробки всіх активних Springs / проектів.


Кенні, так по одному спринту на кожен проект за раз? Або ви говорите про те, щоб пробігти кілька спринтів одночасно і розділити команду, як пропонують інші?
Тім Найт

Ей, Тім, я уявляв, що не змінюю структуру вашої команди, розділяючи команди на спринти, а просто запускаю окремі спринти / відставання / тощо ... для кожного проекту. Під час кожного стенду нехай кожна людина коментує те, що її турбує. Для мене було б непогано встигати за всіма / всіма, або обізнаними.
kenny

0

Я хотів би зробити свій внесок. Це я так роблю:

  • На одну команду є один власник продукту та одне відставання. Власник продукту не повинен бути однією особою, але ця організація власника товару відповідає за відставання товару.
  • У відставанні товару є історії користувачів кожного проекту (усі проекти тут). Кожна історія користувача має зусилля / історію (відповідальність команди) та ділову цінність (відповідальність власника товару).
  • У нас є "догляд за відставанням товарів", який проводиться під час кожного спринту. До цієї зустрічі власник продукту оновив ділові цінності історій (якщо вони потребують певних змін з якихось ділових причин - що нас не турбують і не повинні) - та включив кілька нових історій. На цій зустрічі пояснюються нові історії та також оновлюються зусилля. Ця зустріч триває близько години (крім першого разу, близько 4 годин).
  • Коли ми плануємо новий спринт, ми відкриваємо відставання продукту, замовляємо історії за рентабельністю інвестицій (це ділова цінність / зусилля) і плануємо історії, поки не піде час.

І це все. Я можу сказати, це працює досить добре. Для цього ми використовуємо кілька електронних таблиць Google (відставання продуктів та відставання спринтів, як з діаграмами, так і з іншими матеріалами), так і Redmine (з певною семантикою) для онлайн-організації щодня: час, хід виконання завдання тощо.

Проблема цього підходу полягає в тому, що я дублюю завдання в електронній таблиці спринтового відставання та redmine. Але я не знаходжу жодного онлайн-інструменту, щоб зробити це повністю в Інтернеті. Мені не вистачає відставання продукту в redmine (жодна інша семантична робота для мене не існує), одна дошка в jira, більше історій у тайзі та ін.


Як зосередити увагу на кожному продукті, що відстає? Теги, конвенція про імена тощо? Я застосував подібний підхід, але намагаючись зберегти все в TFS, і поки не знайшов хорошого рішення, щоб дозволити як відставання, так і перегляд продуктів Функцій / Історій.
BlueChippy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.