Agile або Lean: Ага ага, яка різниця-то?

Є Agile аналогічним Lean? Коли люди кажуть «agile», мають на увазі чи вони насправді Scrum? Або люди все ще використовують різні типи agile і чому?

Отримуючи багато питань у минулому, я вирішив розставити всі крапки над "і".

image


LEAN
Lean прийшов з ощадливе виробництво (Lean Manufacturing), він має набір принципів в отриманні якості, швидкості і клієнтоорієнтованості (те ж, що ми намагаємося зробити в agile розробці, правильно?)

Мері і Тому Поппендик адаптували принципи «Бережливого Виробництва» для розробки програмного забезпечення, і я вірю, що ці ідеї є основами і причинами того, як agile працює:

1. Усунення втрат
2. Підвищення якості
3. Створення знань
4. Відстрочені зобов'язання
5. Швидка поставка
6. Повага людей
7. Повна оптимізація
У двох словах, Lean каже: безжально позбавляйтеся від усього, що не додає додаткової цінності, і робіть тільки те, в чому ми абсолютно впевнені, що це потрібно робити в даний момент. Усувати втрати означає усувати даремні зборів, завдання та документацію. Але це також означає позбавлятися від тимчасових втрат у будь-яких відомих завдання, які потрібно буде зробити в майбутньому (все постійно змінюється і часто в результаті стає не потрібним. Якщо б ми зробили це, то ми повинні були б витратити час на переробку цього, тому що умови або наше розуміння вже змінилося надалі). Це також означає, що ми повинні позбуватися не ефективних способів роботи, таких як багатозадачність, щоб ми могли робити поставки швидко.

Lean також робить дуже сильний акцент на те, що називається «системою», тобто що команда працює як єдине ціле. Ми завжди повинні дивитися на нашу роботу «з висоти», щоб бути впевненим, що ми улучшаемся в цілому. Наприклад, багато менеджерів хочуть «зайняти» роботою кожного розробника на 100%, але в більшості випадків це, насправді, контрпродуктивно. Давайте не будемо змушувати людей кодувати те, що не потрібно (або повністю не визначено), тільки заради того, щоб вони кодували, бо в майбутньому це для нас створює ще більше роботи.

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

«Організації, які по-справжньому слідують Lean, мають сильне конкурентну перевагу, тому що вони дуже швидко і у вищій ступеня дисципліновано реагують на ринковий попит, а не намагаються передбачати майбутнє» — Мері Поппендик.

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

Цінності Agile це:
Люди і взаємодія важливіше процесів та інструментів
Працюючий продукт важливіше вичерпної документації
Співпраця з замовником важливіше погодження умови контракту
Реагування на зміну важливіше проходження початкового плану
Принципи Agile це:
1. Найвищий пріоритет задоволення користувачів
2. Зміна вимог вітається
3. Працюючий продукт слід випускати якомога частіше
4. Представники бізнесу і розробки повинні працювати разом щодня
5. Над проектом повинні працювати мотивовані професіонали
6. Безпосереднє спілкування є найбільш практичним і ефективним
7. Працюючий продукт — основний показник прогресу
8. Інвестори, розробники і користувачі повинні мати можливість підтримувати постійний ритм нескінченно
9. Постійне увагу технічному вдосконаленню та якістю проектування підвищує гнучкість проекту
10. Простота — мистецтво мінімізації зайвої роботи — вкрай необхідна
11. Найкращі вимоги, архітектурні та технічні рішення народжуються у самоорганізуються команд
12. Команда повинна систематично аналізувати можливі способи поліпшення ефективності і відповідно коригувати стиль своєї роботи
Будь-який проект, який слід цим цінностям та принципам, по праву може вважатися agile. Тим не менш, безумовно є найбільш загальні практики для agile команд, слідуючи яким досягається гнучкість (agility).

Найбільш загальні це: Scrum або Kanban (або гібрид з обох) для «Управлінських практик». Екстремальне програмування (XP) для Технічних практик (з новими практиками стає популярним, багато в чому через Lean Statup, такі як безперервне розгортання та тестування на виявляли у своєму житті таку).

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

Подяки: Спасибі Юрію Прокудину, Катерині Кивелевой за допомогу в підготовці тексту.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.