Як ви ставитесь до змін, що змінюються? [зачинено]


14

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

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

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


Відповіді:


14

@Joe "Ми - магазин" Agile ", тож я розумію, що ми повинні підлаштовуватися, а що ні, але колись зміна велика і нічого тривіального".

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

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

Ви хотіли X і Y через два тижні, але раптом ви хочете Z. Ну, тоді я можу доставити вас усіх трьох за 4 тижні. Або я можу дати пару (X і Z) або (X і Y) або (Y і Z) за два тижні, а решту доставити пізніше. Виберіть.

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

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

Ви збираєте початкову оцінку часу та фактичний час завершення (крім ресурсів, таких як кількість розробників) за запит (або модуль, на який впливає N запитів). Ще краще, оцініть розмір запиту / зміни запиту (у частині рядків коду чи функціональних точок у минулих проектах та запитах.)

Скажіть, у вас є показник, з яким можна спілкуватися з користувачем. Ви знаєте, що новий запит матиме, скажімо, 1K рядків коду або 10 веб-сторінок із середнім значенням 5 полів введення кожне (50 функціональних пунктів).

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

Потім ви використовуєте це, і ви повідомляєте своєму клієнту, що виходячи з історичних даних; ви стверджуєте, що невдачі проекту мають тенденцію слідувати експоненціальному розподілу; і тоді ви озброєні наступним аргументом для свого клієнта:

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

  1. X кількість часу на завершення з 25% ймовірністю невдачі (або 75% успіху)

  2. 1,5 * X кількість часу для завершення з 5% відмови (або 95% успіху)

  3. 0,5 * X кількість часу на завершення 95% відмови (або 5% успіху)

Імовірність відмови як функція кількості часових ресурсів зазвичай перевищує 95%, 25% та 5% (що нагадує експоненціальний дистроф.) Ви передаєте повідомлення про те, що певна базова сума дає дещо гідний шанс на успіх (але з реальними ризиками ). 1.5 з цього може дати майже певний шанс на успіх з мінімальним ризиком, але набагато менше, ніж це (0,5 оригіналу гарантує майже певний збій.)

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

Ваша робота інженера - пояснити інженером, перевіреними та чіткими умовами, що прохання про зміни не є безкоштовним харчуванням.


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

8

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


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

2
@joe, ви даєте тоді оцінку
jk.

4

Ви можете спробувати встановити мінімальний вік нового доповнення / зміни (не застосовується до виправлень помилок). Наприклад, жодних нових змін не можна працювати, поки не виповниться 3 тижні.

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

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


1

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

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

  1. Огляди коду / очищення коду: старий код роздувається і псується, і йому потрібні регулярні огляди та очищення, це займає багато часу, і клієнт ніколи не повірить у це.
  2. Аудит безпеки та виправлення. Особливо, якщо у вас є юні члени команди, у вас виникне багато проблем із захистом коду, і ви хочете регулярно переглядати весь цей новий код, який був написаний, і переписувати речі, які не виглядають добре з безпеки з точки зору, клієнт за цей час ніколи не дізнається чи не буде рахувати.
  3. Зміни, пов’язані з архітектурою: зростаюча база коду може (і, швидше за все, буде) в декількох точках вимагати структурного переосмислення та рефакторингу. Це може включати: A - зміни / оптимізації, пов'язані з продуктивністю (зміни алгоритму, заміна бібліотеки, кеш-двигуни тощо) або: B - пов'язані з продуктивністю зміни / оптимізації (читабельність, повторне використання коду, простота розуміння, нові умови кодування, новий фреймворк, тощо).

Кінцеві клієнти ніколи з вищезазначеного ніколи не будуть зрозумілі та належним чином враховані.

В основному все, що не має "поглядів" (елементів графічного інтерфейсу), не було зроблено.

Назвемо це теоремою про проексів, ха-ха, не просто жартую: D

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