@Joe "Ми - магазин" Agile ", тож я розумію, що ми повинні підлаштовуватися, а що ні, але колись зміна велика і нічого тривіального".
Якщо ваш процес не дозволяє контролювати швидкість зміни вимог, ваш процес не спритний, а випадковий. Agile не означає "брати все, що трапляється мені".
Для контролю зміни / повзучості вимог ви можете прийняти в процесі свого розуміння, що вимога не змінюється (уявлення про те, що вона лежить в основі Scrum.) Трактуйте зміну вимоги як заміну старої вимоги новою. Ви повинні мати відставання вимог, і ви повинні мати, щоб користувач вибирав, які саме з них він хоче реалізувати.
Ви хотіли X і Y через два тижні, але раптом ви хочете Z. Ну, тоді я можу доставити вас усіх трьох за 4 тижні. Або я можу дати пару (X і Z) або (X і Y) або (Y і Z) за два тижні, а решту доставити пізніше. Виберіть.
Так ви домовляєтесь із клієнтами. Ось як ви повідомляєте про вартість зміни вимог. Якщо ваша група не має такої сили, ви не перебуваєте в спритній крамниці, і ви нічого не можете з цим зробити. Це смокче, але це правда.
У випадку, коли ви можете вести переговори, вам потрібно з точністю відстежувати час, необхідний для впровадження вимог та змін вимог. Тобто ви повинні зібрати ці дані з минулих та теперішніх проектів.
Ви збираєте початкову оцінку часу та фактичний час завершення (крім ресурсів, таких як кількість розробників) за запит (або модуль, на який впливає N запитів). Ще краще, оцініть розмір запиту / зміни запиту (у частині рядків коду чи функціональних точок у минулих проектах та запитах.)
Скажіть, у вас є показник, з яким можна спілкуватися з користувачем. Ви знаєте, що новий запит матиме, скажімо, 1K рядків коду або 10 веб-сторінок із середнім значенням 5 полів введення кожне (50 функціональних пунктів).
Потім, переглянувши історичні дані, характерні для ваших минулих проектів (деякі за рядками кодів, деякі за веб-сторінками, деякі за фактичними пунктами функціонування), і ви можете оцінити, як кожна з них коштує з точки зору абсолютного часу завершення. Для тих, хто має достатньо даних, ви також можете визначити ті вимоги, які відстежують фактичну кількість голосів розробника.
Потім ви використовуєте це, і ви повідомляєте своєму клієнту, що виходячи з історичних даних; ви стверджуєте, що невдачі проекту мають тенденцію слідувати експоненціальному розподілу; і тоді ви озброєні наступним аргументом для свого клієнта:
Виходячи з даних наших минулих та теперішніх проектів та наявних ресурсів, вимога, яку ви запитуєте, буде прийнята
X кількість часу на завершення з 25% ймовірністю невдачі (або 75% успіху)
1,5 * X кількість часу для завершення з 5% відмови (або 95% успіху)
0,5 * X кількість часу на завершення 95% відмови (або 5% успіху)
Імовірність відмови як функція кількості часових ресурсів зазвичай перевищує 95%, 25% та 5% (що нагадує експоненціальний дистроф.) Ви передаєте повідомлення про те, що певна базова сума дає дещо гідний шанс на успіх (але з реальними ризиками ). 1.5 з цього може дати майже певний шанс на успіх з мінімальним ризиком, але набагато менше, ніж це (0,5 оригіналу гарантує майже певний збій.)
Ви дозволяєте їм перетравлюватися на цьому. Якщо вони все-таки йдуть на ризиковану пропозицію ( зроблену вчора! ), Принаймні ви письмово сказали, що ви їм так сказали. Якщо ваша надія є не просто спритною, а інженерно-подібною, то замовник може серйозно врахувати ваші номери та запланувати відповідний цей та майбутні запити відповідно.
Ваша робота інженера - пояснити інженером, перевіреними та чіткими умовами, що прохання про зміни не є безкоштовним харчуванням.