Crystal — сімейство методологій розроблення програмного забезпечення зі спільним генетичним кодом, що включає: часту доставку, особисті комунікації та вдосконалення через рефлексію. Для кожного типу проєкту є своя методика Crystal.
В статье рассмотрим Crystal Clear как концепцию для небольших команд (до 8 человек). Это хорошая альтернатива экстремальному программированию, с которым у неё есть общие стороны.
Історія створення сімейства Crystal
У 1991 році Алістер Кокберн, один зі співавторів маніфесту гнучкого програмування, поставив собі за мету створити ефективну методологію розробки програмного забезпечення. Для цього він опитав безліч проєктних команд і вивчив їхні кейси розробки.
Проведене дослідження лягло в основу ключових правил Crystal Clear як ефективної концепції розробки ПЗ:
- «людино-орієнтовані» методології приносять більше користі, ніж «процесо-орієнтовані»
- методологію потрібно підібрати індивідуально під проєкт і команду — немає універсальної методики розробки додатків.
Щасливий автор сімейства методологій Crystal, співавтор Agile-маніфесту Алістер Кокберн
У 2004 Кокберн визначив 3 основні методи концепції:
- швидка доставка корисного коду, перехід від великих і рідкісних розгортань коду до менших і частіших релізів.
- удосконалення через рефлексію — отримання відомостей про те, що працювало добре і погано в попередній версії програми для поліпшення наступної версії ПЗ.
- «осмотична» комунікація — Алістер пояснив сприйняття та обмін інформацією між розробниками застосунку в одній кімнаті як фоновий шум, що нагадує явища осмосу.
Того ж року Алістер випустив книгу «Crystal Clear: A Human-Powered Methodology for Small Teams». Подальший внесок у розробку CC зробив системний адміністратор Марсель Вагерманн, який написав есе про використання принципів розробки ПЗ за допомогою Crystal Clear, Agile і Scrum.
Що таке методологія Crystal?
Crystal — сімейство методологій, в основі яких лежать ці три методи.
Єдиної «кращої» методології Crystal Clear немає, кожна з модифікацій підходить для різних типів проєктів. При цьому сама організація або проєкт створюють цю модифікацію на основі «генетичного коду» (базових правил використання) Crystal.
Найпростіша з можливих класифікацій Crystal — за критерієм кількості людей у проєкті:
- Clear — від 2 до 8 осіб, які сидять разом в одному або суміжних офісах
- Yellow — 10 – 20 осіб
- Orange — 20 – 50 осіб у команді
- Red — від 50 до 100.
Для масштабних проєктів використовують додаткові кольори: Maroon, Blue і Violet.
Генетичний код Crystal Clear складається з:
- економічно-кооперативної ігрової моделі — не дарма творець методології Алістер розуміє розробку ПЗ як серію «ігор», ходи якої складаються з винаходу і спілкування, обмеженого ресурсами. У кожної гри є дві мети: доставити програмне забезпечення в цій грі та підготуватися до наступної гри в серії. При цьому гра ніколи не повторюється і під кожен новий проєкт потрібно готувати нові стратегії.
- обраних пріоритетів — до загальних для всіх методологій Crystal належать два пріоритети: безпека та ефективність розробки.
- обраних характеристик — вони слугують посиленню пріоритету безпеки. Три (швидка і часта доставка коду, особисті комунікації, удосконалення через рефлексію) є базовими, решта чотири — додатковими: персональна безпека, фокусування, легкий доступ до експертів і якісне технічне оточення з автоматичним тестуванням.
- з обраних принципів — один із них продовжує ключовий напрямок індивідуальності налаштування методології:
Деталізація вимог до ПЗ, документи з дизайну та планування залежать від особливостей проєкту, зокрема ступеню персональної взаємодії команди та шкоди, яку може бути завдано невиявленими помилками.
Циклічний процес Crystal Clear
Більшість проєктів з Crystal Clear складається з 6 циклів, які визначають список обов’язків і завдань проєктної команди:
- Проєктний цикл — хоч проєкт сам по собі є одиницею продукту, за ним зазвичай слідує інший проєкт, що повторює цикл. Проєктний цикл складається з трьох частин: підготовка (збір команди, дослідження на 360°, визначення методології), серія з двох і більше циклів доставки і «ритуалу завершення». Триває від кількох днів до тижнів.
- Цикл доставки — складається з повторного калібрування плану випуску ПЗ, серій з однієї або декількох ітерацій, у результаті яких створюється протестований інтегрований код, доставки реальним користувачам і «ритуалу завершення». Тривалість — від 1 тижня до 3 місяців.
- Ітерація — складається з трьох великих частин: ітераційне планування, денна та інтеграційна діяльність циклу та «ритуал завершення» проєкту.
- Робочий тиждень/день — вибір дня або тижня як одиниці часу циклу залежить від формату проєкту та команди. Наприклад, у такому форматі проводяться щотижневі зустрічі відділів, звітні зустрічі тімлідерів, «brown-bag» семінари (коли кожен приносить власний ланч і за перекусом вирішують питання щодо проєкту).
- Період інтеграції — розробка, інтеграція та тестування системи. У деяких командах процес складання-тестування проходить безперервно, за що відповідає окрема машина, інші йдуть шляхом інтеграції раз на день або тричі на тиждень. Що коротший цикл інтеграції, то краще. Тривалість від 30 хвилин до 3 днів (залежно від досвіду команди).
- Розробка — написання і перевірка частини коду. Це по суті основа роботи програміста в «гнучкій розробці». Член команди бере невелике завдання, програмує рішення (в ідеалі з тестуванням) і перевіряє його в конфігурації з цілою системою. Займає від 15 хвилин до кількох днів.
Стратегії та техніки Crystal Clear
«Чиста» Crystal Clear не потребує будь-яких стратегій і технік. Тому ми підготували для вас стартовий набір методик, які допоможуть команді ефективно працювати на кожному з циклів CC.
До основних стратегій належать:
- Дослідження на 360° — на самому початку роботи над проєктом команді необхідно зрозуміти, наскільки корисним і осмисленим є продукт, і чи можна його створити з наявними ресурсами і технологіями. Для цього проєкт розглядають у таких напрямках: бізнес-цінність, вимоги, необхідні технології, план проєкту, склад команди, обрані методології. Реалізація стратегії займає від кількох днів до 1 – 2 тижнів.
- Рання перемога — перемога згуртовує команду і підвищує впевненість кожного з її членів. Під час роботи над застосунками стратегія ранньої перемоги полягає в пошуку першого шматка робочого коду. У його ролі зазвичай виступає невеликий елемент корисної системної функції (наприклад, можливість додати об’єкт у базу даних системи і подивитися на нього), який називають «ходячим скелетоном». Члени команди на основі цієї маленької перемоги вивчають стилі роботи один одного, користувачі отримують раннє уявлення про систему, спонсори (замовники) бачать працездатність команди.
- Інкрементальна зміна архітектури — архітектура системи має розвиватися, адже технологічні та бізнес-вимоги змінюються з часом. Що більший проєкт, то менш ефективно зупиняти розробку для проведення архітектурного перегляду. На вирішення проблеми і спрямована стратегія: команда змінює архітектуру поетапно, без порушення роботи всієї системи. Цю саму стратегію можна застосовувати для внесення зміни у функціонал кінцевої системи.
- Інформаційні радіатори — дисплей, який розміщують там, де люди можуть його бачити під час роботи або відпочинку. Він показує потрібну інформацію без необхідності ставити зайві запитання, а це втілює в життя важливе для Crystal Clear правило «більше спілкування, менше перерв».
Інформаційний радіатор має бути великим, легкодоступним, простим у використанні та зчитуванні, містити актуальну інформацію. Яскравий приклад таких об’єктів — Scrum- і Канбан-дошки, менш очевидний — робочий глосарій, у якому прописано інтерпретацію термінології, використовуваної в проєкті.
Softwarevalue. Пример информационного радиатора
У Crystal Clear є і безліч технік, які допоможуть по максимуму використовувати потенціал методології.
До найбільш популярних технік належать:
- Формування методології — налаштування Crystal Clear проходить у два етапи: проєктні інтерв’ю (з яких створюється міні-бібліотека досвіду організації, що покаже слабкі та сильні сторони проєктної команди) і воркшоп із формування методології (вивчення досвіду для посилення сильних і компенсації слабких сторін організації). Як бачите, інформація, отримана на першому кроці, використовується в другому.
- Воркшоп рефлексії — час від часу команда має робити годинну паузу, під час якої проводити «воркшоп рефлексії» — обговорення таких моментів, як: що працює добре чи погано, що необхідно покращити, що можна зробити по-іншому на наступних етапах проєкту.
- Бліц-планування — можливість для замовника (спонсора), користувача і розробників спільно скласти карту проєкту з часовими обмеженнями.
- Щоденні «стенд-ап» зустрічі — короткі зустрічі для визначення статусу проєкту, прогресу та проблем. Ключове слово тут — «короткі». Ці зустрічі не для обговорення, а лише для ідентифікації проблем. Отримані результати вказують в онлайн таск-менеджері або на фізичній канбан-дошці.
- Парне програмування — у межах процесу двоє людей працюють над одним завданням із програмування на одному пристрої. Парне програмування часто критикують за позбавлення індивідуальності підходу до завдання та підвищеними вимогами до якості особистих взаємовідносин членів проєктної команди.
Цього позбавлена альтернативна техніка — «slide-by-slid», за якої двоє людей сидять досить близько один до одного, щоб бачити, що відбувається на екрані сусіда, але робота відбувається на окремих робочих станціях над різними завданнями. Це відповідає концепції «осмотичної взаємодії», про яку ми писали на початку статті.
Що почитати про Crystal Clear
На жаль, літератури про Crystal Clear дуже мало, а українською мовою спеціалізованих робіт і зовсім, станом на 2017 рік, не виходило.
Тому база з вивчення Crystal Clear складається з 5 найменувань:
- «Crystal Clear: A Human-Powered Methodology for Small Teams» Алістера Кокберна — ключова книга для вивчення методології від творця сімейства Crystal. У книзі багато кейсів, прикладів і міні-посібників із впровадження окремих елементів Clear у роботу організації.
- «Pair Programming Illuminated» Лорі Вільямс — детальний розбір однієї з технік Crystal Clear — парного програмування. Згідно з дослідженням авторки, використання техніки підвищує якість вихідного коду і водночас зменшує витрачений на розробку час. У книзі знайшлося місце і практичним порадам щодо використання PP у розробці ПЗ.
- «Agile Software Development: The Cooperative Game» Алістера Кокберна — у книжці детально пояснюється концепція розробки програмного забезпечення як «кооперативної гри винаходу та спілкування». У ній Алістер розвинув ідеї методології Crystal Clear, які пізніше оформив в окрему книгу «Crystal Clear: A Human-Powered Methodology for Small Teams».
- Офіційний сайт творця Crystal Clear — не книга, але інформації тут можна знайти на цілу бібліотеку. Багато інтерв’ю, схем, публікацій у різних блогах, обговорень щодо методології. Єдиний мінус — недружній дизайн сторінки.
Вердикт
Багато так званих «найкращих» методологій відторгаються проєктними командами, бо виявляються занадто важкими, нав’язливими, неповороткими.
Crystal Clear не претендує на звання «найкращої методики», але її можна назвати «придатною» для впровадження.
Завдання проєктної команди — підігнати CC під себе, індивідуалізувавши її з урахуванням сильних і слабких сторін організації.