Що ви пропонуєте в перших двох ітераціях Agile?


22

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

Але на ранніх ітераціях ви можете побудувати основу або основи, на яких буде стояти додаток, щоб це було щось важливе, але не видно користувачам.

Що доставляється клієнту в цих перших ітераціях? Як ви показуєте прогрес у правильному напрямку, коли будуєте код будівельних лісів?


2
Побудова цільної рамки або фундаменту має бути рішенням, яке приймається якомога пізніше в проекті.
JeffO

@JeffO: що ти маєш на увазі якомога пізніше? Чи можете ви розширити це на відповідь?
JohnDoDo

5
В ідеалі це взагалі не повинно бути рішенням. Рамка не повинна створюватися, вона повинна органічно виникати в результаті рефакторингу. Жоден «хороший» (для мого власного суб’єктивного визначення поняття «хороший») ніколи не розроблявся з нуля, вони або були вилучені після факту з існуючих програм, або на основі інших рамок, які були.
Йорг W Міттаг

7
@JohnDoDo Створення фундаменту наперед передбачає, що ви знаєте, якими будуть вимоги вашої заявки до того, як вона ще існує. Кожного разу, коли я бачив людей, що роблять це, вони загрожують чимось жорстким і дуже важким для роботи. Частіше за все користувачі цієї "рамки" закінчують боротьбу з нею, ніж сприймають її.
Стефан Більяет

Відповіді:


15

Типово проводити 2-тижневі спринти.

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

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

Можливо, ви не змайструєте кожен предмет ешафот в першому спринті або 2. Можливо, частини можуть почекати і бути додані пізніше.

Можливо, у вашому першому спринті є "Створити веб-сторінку X з фіктивними даними", щоб ви могли отримати щось блискуче, щоб показати своєму клієнту. А потім наступний спринт має "Змінити веб-сторінку X для використання даних із бази даних".


6
+1 для останнього абзацу - це гарна ідея розпочати розробку з прототипу, призначеного для перевірки користувача.
Конаміман

4
"Можливо, у вашому першому спринті є" Створити веб-сторінку X з фіктивними даними ", щоб ви могли отримати щось блискуче, щоб показати своєму клієнту.": IMO це залежить від замовника та від часової шкали проекту. Для проекту на два місяці клієнт може хочете щось побачити через 1 тиждень або 2. Для 18-місячного проекту, можливо, буде нормально отримати перший демонстраційний показник через 1 або 2 місяці. У будь-якому випадку, хоча деяким клієнтам може хотіти побачити фіктивну сторінку, інші можуть захотіти побачити щось більш змістовне і отримати відчуття, що ви витрачаєте свій час. Я думаю, ви не можете узагальнити.
Джорджіо

4
+1, але завжди майте на увазі айсберг в таємниці, показуючи деталі інтерфейсу користувачеві joelonsoftware.com/articles/fog0000000356.html
Doc Brown

1
@MatthewFlynn - Scrum може не мати справжньої фази "вимог", але це не означає, що існують вимоги ZERO або документація. Я ніколи не брав участь у проекті, де замовник сказав: "просто продовжуй і розпочинай будівництво, і ми все це з'ясуємо". Я думаю, що для цього є термін. Зазвичай має бути якась фаза виклику проекту, яка включає деяку дискусію та згоду щодо того, що має бути досягнуто. Я представив прототипи під час продажу
ханзоло

1
@hanzolo - Дуже успішний проект, над яким я нещодавно працював, включав реалізацію рішення щодо вирішення нової юридичної вимоги, яка була частиною Закону про доступну допомогу. Основні вимоги були відомі, так, але прототипу чи дизайну нічого не було на місці того, яким може бути рішення. Команда проекту (до складу якої входили бізнес-аналітики) з'ясувала це в контексті спринтів. У кращому випадку, бакалаври розмовляли з діловими людьми про історії, спринт-два попереду решти команди, але це було все, з чим нам довелося працювати. Це добре спрацювало.
Меттью Флінн

13

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

Чому? Ну, крім іншого, дизайнери та розробники часто стають жертвою витрачати багато часу на предмети YNNI (вам це ніколи не знадобиться). На жаль, ті рамки, про які ви говорите, часто є великою відповідальністю у цій галузі. Розробники починають будувати все, що має підтримувати рамка, і раптом вам 3 місяці, і ви не маєте для цього нічого ділового значення. Тоді виявляється, що рамки навіть не дуже підтримують те, що їм в кінцевому підсумку потрібно.

Таким чином, запропонований підхід полягає в тому, щоб будувати лише те, що потрібно насправді, і реалізовувати його зараз.

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

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


8

Що доставляється клієнту в цих перших ітераціях?

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

Є також питання про

ви можете побудувати рамку або основи

Я вважаю, що набагато важливіше, ніж те, що насправді доставлено. В Evolutionary Design є велика річ , яка говорить про те, що ви повинні створювати архітектуру з часом, а не намагатися створити її на початку. Що стосується фундаменту, то це зазвичай означає якусь базу даних або фреймворк інтерфейсу користувача. У такому випадку існує ідея " Гарна архітектура - це та, яка дозволяє відкласти важливі рішення ". І вибір бази даних або інтерфейсу є важливим рішенням. Наприклад, у вас може бути добре просто зберігання даних у пам'яті, замість того, щоб спробувати використовувати БД з першої ітерації.


3

Ми намагаємось зробити в перших ітераціях найпростіший можливий додаток (привіт, світова версія того, що ми постачаємо). У цьому ми бачимо 3 важливі переваги:

  • Налаштуйте процедуру доставки (завжди одна з найскладніших частин imho) (знайдіть середовища, сервери на місці, оновіть безпеку для цього середовища). Оскільки ми будемо часто виступати, важливо досягти цього права якнайшвидше.
  • Дайте користувачам перші уявлення про те, як буде виглядати програма. Це допомагає користувачам та розробникам зрозуміти, що вони насправді хочуть і потребують.
  • Майте базове уявлення про те, як буде виглядати архітектура програми (програма повинна охоплювати основні 'шари' або компоненти програми).

"Налаштувати процес доставки" набагато складніше, ніж думають люди.
Френк Шейрар

Так. Ось чому ви повинні робити це якомога раніше.
користувач99561

2

Але на ранніх ітераціях ви можете побудувати основу або основи, на яких буде стояти додаток, щоб це було щось важливе, але не видно користувачам.

Це неправильно, оскільки вам не потрібно будувати рамки, які ви можете використовувати в майбутньому. Ідея полягає в тому, щоб будувати лише те, що потрібно (див. Також YAGNI ).

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

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

Що доставляється клієнту в цих перших ітераціях? Як ви показуєте прогрес у правильному напрямку, коли будуєте код будівельних лісів?

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

Якщо у вас запитання "як вибрати те, що переходить в ітерацію X?", Погляньте на ці відеопередачі (відео для ітерації 0 A та частини B).


+1 за те, що єдиний згадав нульову ітерацію
crad

Я не розглядаю питання встановлення процесу збирання та вибору завдань фреймворку для нуля спринту. Як ви можете дізнатися, яка рамка вам потрібна, якщо ви не знаєте, що будувати? Я завжди обмежую спринт 0 до мінімуму. Отримати ПК для людей і знайти місце, де вони можуть сидіти. Дізнайтеся, з ким вам потрібно поговорити з бізнесу. Настройте першу зустріч з планування. Я реєструю YAGNI до решти.
користувач99561

@ user99561 Рамки - це великі рішення, які зазвичай важко змінити. Наприклад, ви повинні знати, чи збираєтесь ви використовувати gtest або cppunit для одиничних тестів, перш ніж починати писати код. Пізніше змінити це буде великий біль у попці та багато часу витрачений.
BЈоviћ

@ BЈовић: Так, рамки - це великі рішення, тому слід відкласти рішення. Немає сенсу приймати рішення про рамки, якщо ви не знаєте, що потрібно розробити та як виглядатимуть додаток та архітектура. Ви повинні вирішити, які рамки використовувати в останній можливий момент. Інакше ви точно ризикуєте, що вам доведеться це змінити.
користувач99561

@ user99561 Якщо ви не знаєте, що потрібно розробити, тоді ви навіть не можете почати :) Вимоги та історії користувачів повинні бути записані, інакше ітерація 1 навіть не може початися.
BЈоviћ

2

Ви можете доставити майже все, що завгодно. Ідея побудови інфраструктури просто неправильна / не спритна / нестійка.

Наприклад: створення повністю функціональної програми Hello World може бути побудовано за години. Вивести сервер (навіть тимчасово) у хмару або як VM можна за години.

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

Але почніть доставку з першого дня і ніколи не зупиняйтеся!


1

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

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

Частина підходу Agile полягає в тому, щоб клієнт був закритий, тому документація не потрібна, оскільки все, що вам потрібно зробити, - це забрати телефон / надіслати електронну пошту, і це очікується. Очікування клієнтів повинні бути встановлені відповідним чином, а будь-яка завершена робота повинна бути дуже короткою та НЕОБХІДНОЮ . Ні позолочення, ні "Вам це може знадобитися" тощо. Побудуйте те, що вам потрібно в A, щоб перейти на B.

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

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

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