Zrozumienie zwinnego projektowania i dlaczego jest to ważne
Nie jest tajemnicą, że zwinny proces rozwoju przemyka przez świat deweloperski od kilku lat, odsuwając na bok starszą, nieporęczną metodę rozwoju wodospadu. Szczerze mówiąc, niezależnie od tego, czy był zwinny, czy coś innego, wodospad naprawdę nadszedł, ponieważ jego podejście do ryzyka z góry na dół nie może nadążyć za wymaganiami dzisiejszego rynku.
Podczas gdy podobne zmiany zachodzą w świecie projektowania, zwinny proces projektowania powinien koniecznie wyglądać nieco inaczej niż zwinny rozwój; w końcu są to różne dyscypliny. Przyjrzyjmy się najpierw, czym jest zwinny rozwój, a następnie kilka świetnych sposobów dostosowania procesu do świata projektowania.
Szybki podkład dla zwinnego rozwoju
Manifest Agile podkreśla ludzi i interakcje nad procesami i narzędziami. W praktyce oznacza to częstą komunikację zarówno w zespołach, jak i z klientem, a także robienie takich rzeczy, jak codzienne spotkania scrumowe, dzięki czemu cały zespół może być na bieżąco z działaniami swoich członków. Tworzy to spójną pętlę informacji zwrotnych, która umożliwia zespołom dostosowywanie się na podstawie tego, co mówią im klienci, beta testerzy i rynek, a także częste sprawdzanie, czy ich praca funkcjonuje w środowisku, w którym ostatecznie będzie żyć.
Zwinny proces kładzie nacisk przede wszystkim na terminowe i budżetowe dostawy, a nie na perfekcję, ponieważ produkty można zawsze ulepszać na drodze. Przeważnie przybiera to formę iteracji, krótkich, intensywnych okresów produkcji z mniejszymi, bardziej osiągalnymi celami, które budują kolejne iteracje w dół drogi.
Jakie kroki możesz podjąć, aby dostosować podobne mentalności do projektu? Spójrzmy.
Zmień swoje relacje z klientami
Tradycyjny proces projektowania wpisuje się w powszechne pragnienie projektantów, aby prezentować klientom tylko najdoskonalsze produkty. Zaczyna się to na etapie propozycji i badań od zbyt skomplikowanych makiet PSD i przechodzi do końcowej fazy zatwierdzania. Ale w przypadku najbardziej skomplikowanych projektów naprawdę nie ma sensu projektować przez tygodnie, a nawet miesiące w sposób abstrakcyjny, całkowicie pozbawiony wkładu klienta. Jak wiemy aż nazbyt dobrze, klienci często lepiej rozumieją, czego szukają, gdy strona się łączy. Co więcej, popyt na rynku ma zwyczaj zmieniać się szybciej niż producenci są w stanie wyprodukować. Może to być frustrujące podczas pracy w paradygmacie, w którym zmiana trasy jest zarówno pracochłonna, jak i czasochłonna.
Przyjęcie zwinnego podejścia polegającego na zapętlaniu klientów na każdym etapie procesu i wytwarzaniu stałego strumienia wyników może pomóc w rozwiązaniu tego problemu, ponieważ pozwala klientom bawić się projektami na bieżąco. Pozwala im także lepiej zrozumieć, w jaki sposób zrealizowana wizja będzie działać w realnym świecie. Im bardziej regularna komunikacja, tym mniejsze szanse na niespodzianki pojawiające się na drodze, tym lepiej zespół może dostosować się do zmieniających się wymagań po drodze, bez konieczności cofania się.
W skrócie: uczyń klienta członkiem swojego zespołu.
Często kompiluj pracę między zespołami
W świecie programistycznym integracja pracy w zespole i między zespołami jest kluczową częścią każdego projektu. Jest to tym bardziej prawdziwe, że zespoły rosną od dziesiątek do tysięcy w największych organizacjach. Jednak integracja z metodą wodospadu odbywa się w rzadkich odstępach czasu, co sprawia, że deweloperom trudniej jest znaleźć błędy w ogromnej ilości kodu. Prowadzi to również do wielu opóźnień i opóźnień statków.
Nie jest tak w przypadku zwinnej metody ciągłej integracji, w której programiści integrują kod raz, jeśli nie trzy razy dziennie. Ciągła integracja naprawdę usuwa niechcianą tajemnicę z integracji, pozwalając deweloperom wychwytywać błędy w miarę ich pojawiania się i albo natychmiast je naprawiać, albo dodawać do zaległości na następną iterację projektu. Dobrze wpasowuje się również w zwinną koncepcję uprzywilejowania interakcji między procesami, ponieważ deweloperzy między zespołami muszą się często komunikować, aby zidentyfikować i naprawić tego rodzaju błędy.
Projektanci mogą czerpać korzyści z podobnej mentalności, bez względu na to, czy oznacza to codzienne przeprowadzanie prostej odprawy z innymi członkami zespołu, czy też częstsze komunikowanie się z programistami w celu ustalenia, co jest technicznie możliwe do wdrożenia przed wybraniem ekscytującej, ale trudnej trasy projektowej. Komunikacja między zespołami i kompilacja pracy pozwolą projektantom skoncentrować się na projektowaniu, gdy projekt jest niezbędny, zamiast na planowaniu lub nawet wdrażaniu prac projektowych, które nie są synchronizowane z działaniami innych zespołów.
Testuj, testuj, testuj… Cały czas
Z podobnej, ale bardzo odmiennej nuty, częste testowanie jest ważną częścią utrzymywania iteracji na dobrej drodze. Przez „testowanie” rozumiem nie tylko integrację, ale także funkcjonalność projektu zarówno na poziomie mikro, jak i makro, poprzez opracowanie punktu widzenia rozwiązywania problemów. W zwinnym rozwoju twórcy dzielą większe problemy na mniejsze, które można lepiej rozwiązać w ramach szybkich iteracji. Testowanie tej pracy pozwala następnie zidentyfikować problemy, które należy rozwiązać natychmiast lub w następnej iteracji. Dzięki temu deweloperzy są na bieżąco i na czas, zapobiegając paraliżowi, który pojawia się, gdy zbliża się zbyt wiele.
W ten sposób częste testy i mentalność rozwiązywania problemów mogą nie tylko podtrzymywać proces projektowania, ale także pobudzać kreatywność, ponieważ nie pozwalają projektantom zbyt pochłonąć największego problemu: od samego początku wiedzieć dokładnie, jak strona powinna wyglądać i działać. Koncentrując się na mniejszych problemach, projektanci mogą zastosować nowy proces twórczy i odkrywać swoją wizję.
Mimo to nie można zignorować wartości zbliżenia z powrotem do poziomu makro, w przeciwnym razie projekty staną się zbyt rozłączne. Aby zachować równowagę między mniejszym podejściem do rozwiązywania problemów Agile a bardziej holistycznym widokiem wodospadu, warto poświęcić kilka iteracji na rozwiązywanie problemów w kontekście większego obrazu, a także po prostu wziąć ten widok ze względu na spójność.
W skrócie
Kiedy naprawdę o tym myślisz, zwinne projektowanie to po prostu zastosowanie pewnych zwinnych zasad programistycznych w procesie projektowania. Ponieważ każdy projektant i zespół projektowy jest inny, najlepiej wybrać odpowiednie dla siebie metody i dostosować je na bieżąco. W końcu wydaje się, że to zwinne.