У Scrum, чи слід керувати такими завданнями, як налаштування середовища розробки та розвиток можливостей як підзадачі в межах фактичних історій користувача?


23

Іноді в проектах нам потрібно витратити час на такі завдання, як:

  1. вивчення альтернативних рамок та інструментів
  2. вивчення рамки та інструментів, вибраних для проекту
  3. налаштування серверів та інфраструктури проекту (контроль версій, середовище побудови, бази даних тощо)

Якщо ми використовуємо Історії користувачів, куди слід піти всі ці роботи?

Один із варіантів - зробити їх частиною першої історії користувача (наприклад, зробити домашню сторінку для програми). Інший варіант - зробити шип для цих завдань. Третій варіант - зробити завдання частиною проблеми / перешкоди (наприклад, середовище розробки ще не вибране), а не користувача Story.


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

Відповіді:


12

Ми досить багато думали над цією проблемою минулого року.

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

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

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

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

Історії : Орієнтовані лише на перспективу бізнесу, історії завжди приносять помітну цінність для замовника. Внутрішня якість - це те, що поєднується з виробництвом вартості бізнесу.

Ми навіть присвоюємо завданням історії, а іноді працюємо з ними так само, як і з історіями.

Зрештою, я б запропонував це рішення у вашому випадку (яке можна було б застосувати і загалом):

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

? Так що ви викликаєте ЗАВДАННЯ в основному елемент роботи , як розповідь користувача або Бугу .. Це не завдання , як і в завданнях всередині користувач історій , наприклад , коду, тестування, розгортання і т.д.
Асім Гаффар

2
Так, щоб розрізнити ті, які ми називаємо підзадачами оповідань "Діяльність".
мальте

То, що ви називаєте Завдання, це в основному випуск відповідно до MSF для Agile 5.0
Асим Гаффар

Якщо ви посилаєтесь на цей опис тут: msdn.microsoft.com/en-us/library/dd997897.aspx - Ви можете назвати це питання так, як це було описано там, це могло б відповідати. Отже, це зробить ваш варіант № 3.
Мальте

2
Пункт 3 "Прийняти, що ці завдання спливають протягом тривалості проекту" є особливо важливим. Agile Unified Process має чудову картину, яка демонструє це: i.stack.imgur.com/CUVFI.jpg . Зауважте, що "екологічна" дисципліна ніколи насправді не зникає. Також зауважте, що основна частина екологічних робіт передує. Тож якщо ви раптом виявите, що ви займаєтесь великою роботою над оточуючим середовищем на більш пізньому етапі, можливо, щось піде не так.
Майкл

4

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

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

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

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


коли я сказав, що рамки .. це було так, як ми повинні піти на JSF або Spring .. або коли я сказав інструмент .. це було так, як ми повинні піти на Jboss або Glassfish ..
Асим Гаффар

1
Я не знаю, що ви маєте на увазі "задовго до того, як розпочати розробку". Коли проект починається, не слід спринтувати 1 запуск якомога швидше, наприклад, протягом 2 тижнів від дати початку проекту ... а в спринті 1 є реальне кодування.
Асим Гаффар

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

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

@ S.Lott hmm Я подумав, що людина отримує необхідні навички НА РОБОТІ, тобто під час роботи над проектом, і немає необхідної умови для спринту 1.
Asim Ghaffar

2

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


1

Один з варіантів - зробити їх частиною першої історії користувача, наприклад, зробити домашню сторінку для застосування.

Розбиває "історію користувача" як концепцію. Який користувач бере участь у цьому? Немає. Це робота, яку ви вже повинні були виконати.

Ще один варіант - зробити для цього шип.

Непогано.

Третій варіант - зробити завдання частиною випуску (наприклад, середовище розробки ще не вибране), а не користувачам Story.

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

Налаштування - це не історія користувача.

Це те, що ви повинні мати, перш ніж ви навіть розпочали цей проект.

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

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


Випуск не такий, як Спайк. Подумайте про проблему як робочий предмет, запланований у звичайному спринті, але не має сюжетних точок. Приклад випуску: SVN не вибрано. Я запозичую слово у MSF для Agile 5.0
Asim Ghaffar

"питання - це не той самий шип". Щодо визначень слів, ви праві. Але коли ви думаєте про планування додаткової роботи перед спринтом 1, не має значення, називаєте ви це проблемою чи шипом. Вибрати один. Киньте монету. Голови.
S.Lott

Знову я мав на увазі випуск планування разом із розповідями в Sprint 1 - не раніше Sprint 1. Отже, для Sprint 1 можна сказати, що ми вибираємо 2 історії користувача та 1 випуск. Немає жодних сюжетних точок для Issue. Спайк дійсно буде перед спринтом 1 ..
Асим Гаффар

Спайк або Випуск не має значення. Це вся робота, яка не є частиною історії користувача. Це вся робота, яка повинна бути виконана до першого спринту. Ви можете назвати це шипом або проблемою, що б не зробило вас щасливими. Але це не історія користувача.
S.Lott

1

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

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

Вони можуть не застосовуватися у вашому робочому середовищі, але вони добре працювали для нас.


0

Я думаю, ви змішуєте дві незалежні речі. Історія користувача не повинна містити технічних деталей.

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


Ви маєте рацію, і я не пропоную їх містити в описі розповіді. Що я мав на увазі, щоб мати такі завдання, як "встановити MySQL", "оцінити рамку" як частину першої фактичної історії користувача .. тобто як користувача, якого я хочу домашню сторінку, щоб я мав швидкий доступ до основних функцій.
Асим Гаффар

@AsimGhaffar Це можна зробити в початковій ітерації. Це не як історія користувача, оскільки користувачам не потрібно знати (і їм не варто дбати), яку технологію ви використовували для задоволення своїх потреб.
BЈович

0

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

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

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


3
Цитуючи Алістера Кокберна, у мене є примхливе відчуття, що хтось тиснувся на його використання Scrum, коли він робив щось, що не мало очевидної ділової цінності на початку, і він вигадав "О, це був спринт нуль!" щоб відвести селян із кирками подалі від його порогу.
Асим Гаффар

0

про вивчення 2-3 альтернативних рамок / інструментів

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

потім, вивчаючи рамки, які ми вибираємо для проекту

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

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

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

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

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

налаштування серверів (SVN, баз даних тощо)

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


Ми розробляємо продукцію, а не замовницькі проекти :).
Асим Гаффар

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