Crystal to rodzina metodologii rozwoju oprogramowania z wspólnym kodem genetycznym, który obejmuje częste dostawy, osobistą komunikację i poprawę poprzez refleksję. Każdy typ projektu ma swoją własną metodologię Crystal. Artykuł ten bada Crystal Clear jako koncepcję dla małych zespołów (do 8 osób). To dobra alternatywa dla ekstremalnego programowania, z niektórymi wspólnymi aspektami.
Historia Rodziny Crystal
W 1991 roku Alistair Cockburn, jeden z współautorów Manifestu Agile, dążył do stworzenia efektywnej metodologii rozwoju oprogramowania. Przeprowadził badania wielu zespołów projektowych i analizował ich przypadki rozwojowe.
Badania te stanowiły fundament dla kluczowych zasad Crystal Clear jako efektywnej koncepcji rozwoju oprogramowania:
- Metodologie zawodowe są bardziej korzystne niż te zorientowane na proces.
- Metodologia powinna być dostosowana do indywidualnego projektu i zespołu — nie ma uniwersalnej metodologii rozwoju aplikacji.
W 1994 roku, jako główny konsultant w projekcie o stałej wartości 15 milionów dolarów, zatrudniającego 45 osób o nazwie “Orange”, wdrożył te pomysły. Zasady opracowane przez Alistaira stały się fundamentem sukcesu projektu. Dokumentował to doświadczenie w swojej książce “Surviving Object-Oriented Projects” (1997) i rok później opracował rodzinę metodologii Crystal.

Szczęśliwy autor rodziny metodologii Crystal, współautor Manifestu Agile Alistair Cockburn
W 2004 roku Cockburn zidentyfikował trzy główne metody koncepcji:
- Ekspresowe dostarczanie przydatnego kodu: Przejście od dużych, rzadkich wdrożeń kodu do mniejszych, częstszych wydań.
- Poprawa poprzez refleksję: Zbieranie informacji na temat tego, co działa dobrze i źle w poprzedniej wersji oprogramowania, aby usprawnić następną wersję.
- Komunikacja osmotyczna: Cockburn opisał postrzeganie i wymianę informacji pomiędzy deweloperami pracującymi w tym samym pomieszczeniu jako tło, podobnie do osmozy.
W tym samym roku Cockburn opublikował “Crystal Clear: A Human-Powered Methodology for Small Teams”. Dalsze wkłady w rozwój CC wniosły takie osoby jak administrator systemów Marcel Wagemann, który napisał esej o wykorzystaniu zasad Crystal Clear, Agile oraz Scrum w rozwoju oprogramowania.
Co to jest Metodologia Crystal?
Crystal to rodzina metodologii opartych na tych trzech metodach.
Nie ma jednej “najlepszej” metodologii Crystal Clear; każda modyfikacja pasuje do różnych typów projektów. Organizacja lub projekt tworzy tę modyfikację w oparciu o “kod genetyczny” Crystal (podstawowe zasady użytkowania).
Najprostsza klasyfikacja Crystal opiera się na liczbie osób w projekcie:
- Clear: 2 do 8 osób pracujących razem w jednym lub sąsiednich biurach
- Yellow: 10 do 20 osób
- Orange: 20 do 50 osób
- Red: 50 do 100 osób
Kod genetyczny Crystal Clear składa się z:
- Ekonomiczny model gry kooperacyjnej: Cockburn traktuje rozwój oprogramowania jako serię “gier” składających się z wynalazków i komunikacji, ograniczonych przez zasoby. Każda gra ma dwa cele: dostarczyć oprogramowanie w tej grze oraz przygotować się do następnej gry w serii. Każdy nowy projekt wymaga nowych strategii.
- Wybierane priorytety: Wspólne dla wszystkich metodologii Crystal są dwa priorytety: bezpieczeństwo i efektywność rozwoju.
- Wybierane cechy: Te zwiększają priorytet bezpieczeństwa. Trzy są podstawowe (szybka i częsta dostawa kodu, osobista komunikacja, poprawa poprzez refleksję), podczas gdy pozostałe cztery są dodatkowe: osobiste bezpieczeństwo, koncentracja, łatwy dostęp do ekspertów oraz jakość technicznego środowiska z automatycznym testowaniem.
- Wybierane zasady: Jedna kontynuuje kluczowy kierunek indywidualizacji metodologii:
Poziom szczegółowości w wymaganiach dotyczących oprogramowania, dokumentach projektowych i planowaniu zależy od specyfiki projektu, w tym stopnia interakcji osobistej zespołu oraz szkód, jakie mogą być spowodowane przez nieodkryte błędy.
Cykliczny Proces Crystal Clear
Większość projektów z Crystal Clear składa się z sześciu cykli, definiujących odpowiedzialności i zadania zespołu projektowego:
- Cykle projektu: Choć sam projekt jest jednostką produktu, zwykle jest on następnie powtarzany w następnym projekcie. Cykl projektu składa się z trzech części: przygotowanie (skład zespołu, badanie 360°, określenie metodologii), seria dwóch lub więcej cykli dostawy, i “rytuał zakończenia”. Czas trwania: od kilku dni do tygodni.
- Cykl dostawy: Obejmuje skalibrowanie planu wydania oprogramowania, seria jednej lub więcej iteracji prowadzących do przetestowanego zintegrowanego kodu, dostarczenie do rzeczywisty użytkowników, oraz “rytuał zakończenia”. Czas trwania: 1 tydzień do 3 miesięcy.
- Iteracja: Składa się z trzech głównych części: planowanie iteracji, codzienne i działania cyklu integracyjnego oraz “rytuał zakończenia”.
- Tydzień/dzień roboczy: Wybór dnia lub tygodnia jako jednostki czasowej cyklu zależy od formatu projektu i zespołu. Przykłady obejmują cotygodniowe spotkania działu, raporty lidera zespołu oraz seminaria “brown-bag” (dyskusje na temat problemów projektowych podczas lunchu).
- Okres integracji: Rozwój, integracja i testowanie systemu. Niektóre zespoły przeprowadzają ciągłe budowanie i testowanie na dedykowanej maszynie, podczas gdy inne integrują codziennie lub trzy razy w tygodniu. Im krótszy cykl integracji, tym lepiej. Czas trwania: 30 minut do 3 dni (w zależności od doświadczenia zespołu).
- Rozwój: Pisanie i sprawdzanie części kodu. To jest główna praca programisty w zwinnej atmosferze. Członek zespołu podejmuje małe zadanie, programuje rozwiązanie (najlepiej z testowaniem), i sprawdza je w konfiguracji z całym systemem. Czas trwania: 15 minut do kilku dni.
Strategie i Techniki Crystal Clear
“Czysty” Crystal Clear nie wymaga żadnych konkretnych strategii i technik. Niemniej jednak przygotowaliśmy zestaw startowy metod, które pomogą zespołowi skutecznie pracować w każdym cyklu CC.Kluczowe Strategie Zawierają:
- 360° Badania: Na początku projektu zespół musi zrozumieć, jak przydatny i znaczący jest produkt oraz czy można go stworzyć przy dostępnych zasobach i technologiach. Projekt jest badany w takich obszarach jak wartość biznesowa, wymagania, niezbędne technologie, plan projektu, skład zespołu oraz wybrane metodologie. Implementacja zajmuje od kilku dni do 1 – 2 tygodni.
- Wczesne Zwycięstwo: Zwycięstwo jednoczy zespół i zwiększa pewność siebie każdego członka. W rozwoju aplikacji strategia wczesnego zwycięstwa polega na znalezieniu pierwszego działającego fragmentu kodu, często małego elementu użytecznej funkcjonalności systemu. To małe zwycięstwo pomaga członkom zespołu nauczyć się swoich stylów pracy, użytkownicy uzyskują wczesny pogląd na system, a sponsorzy widzą możliwości zespołu.
- Stopniowa Zmiana Architektury: Architektura systemu powinna ewoluować wraz z technologicznymi i wymaganiami biznesowymi, które zmieniają się w czasie. Strategia ta pozwala zespołowi na stopniową zmianę architektury bez zakłócania ogólnej funkcjonalności systemu. Ta sama strategia może być stosowana do funkcjonalnych zmian w finalnym systemie.
- Radiatory Informacji: Wyświetlacze umieszczone w miejscach, gdzie ludzie mogą je zobaczyć podczas pracy lub odpoczynku. Pokazują niezbędne informacje bez potrzeby zadawania dodatkowych pytań, ucieleśniając zasadę Crystal Clear “więcej komunikacji, mniej przerw”.
Radiator informacji powinien być duży, łatwo dostępny, prosty w użyciu i odczytaniu oraz zawierać aktualne informacje. Przykłady obejmują tablice Scrum i Kanban oraz działający słownik interpretujący terminologię projektu.

Popularne Techniki Zawierają:
- Formowanie Metodologii: Dostosowanie Crystal Clear odbywa się w dwóch etapach: wywiady projektowe (tworzenie mini-biblioteki doświadczeń organizacyjnych podkreślających mocne i słabe strony projektu) oraz warsztat formowania metodologii (analiza doświadczeń w celu wzmocnienia mocnych stron i zrekompensowania słabości). Informacje z pierwszego kroku są wykorzystywane w drugim.
- Warsztat Refleksji: Okresowo zespół powinien zrobić godzinną przerwę na przeprowadzenie “warsztatu refleksji,” omawiając co działa dobrze lub źle, co wymaga poprawy i co można zrobić inaczej w kolejnych etapach projektu.
- Blitz Planning: Pozwala sponsorom, użytkownikom i deweloperom wspólnie stworzyć mapę drogą projektu przy ograniczeniach czasowych.
- Codzienne Spotkania Stojące: Krótkie spotkania w celu określenia statusu projektu, postępów i problemów. Te spotkania nie są przeznaczone do dyskusji, lecz tylko do identyfikacji problemów. Wyniki są rejestrowane w online menedżerze zadań lub na fizycznej tablicy Kanban.
- Programowanie w Parach: W tym procesie dwie osoby pracują nad jednym zadaniem programistycznym na jednym urządzeniu. Programowanie w parach jest często krytykowane za eliminację indywidualnych podejść do zadań i wymaganie wysokiej jakości relacji międzyludzkich w zespole projektowym. Alternatywna technika, “slide-by-slide,” polega na dwóch osobach siedzących wystarczająco blisko, aby widzieć swoje ekrany, ale pracujących nad różnymi zadaniami na oddzielnych stanowiskach. To odpowiada koncepcji “interakcji osmotycznej.”
Zalecana Literatura na Temat Crystal Clear
Niestety, istnieje bardzo mało literatury na temat Crystal Clear i do 2017 roku brakowało specjalistycznych prac w języku ukraińskim.Kluczowe zasoby do studiowania Crystal Clear obejmują:
- “Crystal Clear: A Human-Powered Methodology for Small Teams” autorstwa Alistaira Cockburna: Kluczowa książka do zrozumienia metodologii od jej twórcy. Zawiera wiele studiów przypadków, przykładów i mini-przewodników na temat wdrażania poszczególnych elementów Clear w organizacji.
- “Pair Programming Illuminated” autorstwa Laurie Williams: Szczegółowa analiza jednej z technik Crystal Clear, programowania w parach. Książka dostarcza praktycznych rad na temat stosowania PP w rozwoju oprogramowania.
- “Agile Software Development: The Cooperative Game” autorstwa Alistaira Cockburna: Wyjaśnia koncepcję rozwoju oprogramowania jako “kooperacyjnej gry wynalazczej i komunikacyjnej.” Cockburn rozszerza pomysły z Crystal Clear w tej książce, a następnie formalizuje je w “Crystal Clear: A Human-Powered Methodology for Small Teams.”
- Oficjalna strona internetowa twórcy Crystal Clear: Choć to nie książka, oferuje ogrom informacji, w tym wywiady, diagramy, posty na blogu i dyskusje na temat metodologii. Jedynym minusem jest nieprzyjazny design strony.
Wyrok
Wiele tzw. “najlepszych” metodologii jest odrzucanych przez zespoły projektowe, ponieważ są zbyt skomplikowane, inwazyjne i nieporęczne.