Я думаю, що перше, що потрібно усвідомити, це те, що є різниця між спритністю та спритністю. Повільне розгортання гнучких прийомів та характеристик - крос-функціональні команди, адаптивне планування, еволюційна / поступова доставка, ітерації в часі і навіть введення концепцій від Lean сильно відрізняються, ніж введення Extreme Programming, Scrum або Crystal.
Ви чітко згадуєте про залучення клієнтів. Так, багато методологій Agile вимагають залучення клієнтів, але це не обов'язково, щоб бути спритним. У будь-якій програмі, пов'язаній з урядом / обороною, я завжди мав керівника програми чи проекту, який був точкою контакту із замовником. Ця людина стає "голосом замовника". Це може бути уповільнено, коли вони здійснюють телеконференцію або електронну пошту або дзвонять та уточнюють, але у вас може бути одна людина (або група, якщо у вас є також заступники прем’єр-міністра), яка є представником замовника вашої команди. Справді, це не зовсім те саме. Але хіба не є спритним щодо гнучкості та реагування на зміни?
Ви також згадуєте кілька ключових понять: попередньо визначені вимоги, що мають запити щодо функцій, "кинуті через стіну", відсутність пріоритетності, оскільки "всі вони важливі", та проекти з фіксованою вартістю та / або з фіксованим графіком. Кожне з них можна вирішувати по-різному.
Якщо ви думаєте, що у вас є всі вимоги наперед, швидше за все, ви цього не зробите. Вимоги змінюються. Тільки тому, що у вас є специфікація "готового та відписаного", це не означає, що вона встановлена в камені. З огляду на будь-який документ із вимогами, який у вас є, зафіксуйте їх, як ви почуваєтесь комфортно та / або у спосіб, визначений договором, та доставляйте вимоги, дизайн та архітектуру. Крім того, подивіться, чи можна поводитися з цими живими документами (проектний документ, який я бачив сьогодні на роботі, позначений як редакція G, це означає, що це 8-е оновлення). Поцікавтеся, скільки ви можете залишити на TBD в будь-якій заданій ітерації та скільки потрібно зараз підкріпити - можливо, це може бути певним.
Будьте спритні зі своєю документацією. Не дублюйте зусилля між "тим, що хоче ваша команда" і "тим, що хоче клієнт". Наприклад, якщо ваш клієнт хоче традиційну специфікацію вимог до програмного забезпечення, а ваша команда хоче використовувати розповіді користувачів, спробуйте адаптуватися до традиційних SRS та використовуйте елементи дій та прокатний список елементів дії замість розповідей користувачів, щоб не витрачати час формулюючи і "система повинна ...", і "повинна бути здатна до цього". Однак це вимагає дисципліни з боку команди, щоб пристосуватися до відмінностей між проектами. Проблеми із захопленням у роздумах.
Як тільки ви перейдете до розробки, ви можете виконати 5 або 6 ітерацій, а потім запросити свого клієнта до вашого об'єкту, щоб побачити підмножину вашої реалізації. Промийте і повторіть цей процес. Це не постійне залучення, яке вимагають деякі методики, але ви маєте перевагу у високій видимості. Якщо ваш клієнт каже ні, принаймні ви намагалися. Якщо вони скажуть «так», ви можете просвітити їх за спритність. В одному проекті, на якому я працював, замовник відвідував сайт кожні кілька місяців (зазвичай 3-5 місяців). Вони спостерігали, як ми проходимо тестування якості, обговорювали б проблеми з інженерами та бізнес з офісом програми / проекту. Це була можливість для всіх потрапити на одну і ту ж сторінку.
Тестування та обслуговування відбуваються так само, як і в інших спритних проектах. Створіть належним чином свої тестові процедури та дефекти документів, відслідковуйте показники за договірними зобов’язаннями та документуйте результати тестування. Якщо ви хочете дотримуватися TDD, перейдіть до цього. Постійна інтеграція - ще одна добра ідея. Під час зустрічей зі статусом проекту ваш керівник проекту може використовувати цю інформацію, щоб сказати, "ми реалізували N вимог, маємо M тести, пройшли X тести" та оновити інформацію про стан та стан проекту людям з грошима.
Якщо говорити про гроші, у нас є проблема з фіксованою вартістю та / або з фіксованим графіком.
Справа з фіксованим графіком досить проста. З огляду на ваші вимоги, ви знаєте, скільки ітерацій ви можете виконати. Ваша навантаження на кожну ітерацію в значній мірі встановлена в камені з точки зору функцій для впровадження, тестування та інтеграції. Це може бути важким, але розбити функції та призначити їх ітераціям заздалегідь неможливо. Це повертається до моєї точки зору запрошення замовника - якщо у вас є один рік і ви використовуєте 2-тижневі ітерації, можливо, запрошуйте клієнта щокварталу (і запрошуйте їх щоквартально) та показуйте їм результати попередньої роботи. Дозвольте їм побачити вашу пріоритетність вимог, ваші майбутні плани та спосіб планування.
Справа з фіксованим бюджетом аналогічна. Ви знаєте, скільки часу у вас є, скільки ресурсів у вас є для проекту, скільки вони коштують, а отже, скільки годин кожен може працювати за ітерацію. Це лише питання, щоб усі ретельно стежили за цим. Якщо ваша компанія може з'їсти витрати на понаднормовий час, продовжуйте її. В іншому випадку переконайтесь, що кожен працює відповідний проміжок часу та використовуйте хороші навички управління часом та бокс, щоб підтримувати всіх продуктивними. Більш продуктивні години - це те, що потрібно, щоб зменшити витрати - доставити додаткові документи та програмне забезпечення без витрат на засідання та накладні витрати.
Зрештою, справа не в тому, щоб бути обов'язково спритним, а застосовувати те, що робить Agile хорошим і спритним. Будьте здатні реагувати на зміни в вимогах, вміти доставляти часте програмне забезпечення, навіть якщо клієнт цього не бажає, лише випускайте документацію з додатковою вартістю (разом із тим, що ви зобов'язані виготовити за контрактом) тощо.