Udostępnij przez


Wdrażanie praktyk Agile, które można skalować

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Organizacje przedsiębiorstwa stosują rozwiązania Agile z wielu powodów. Główne spośród tych powodów to:

  • Skracanie czasu na rynek i przyspieszanie dostarczania produktów
  • Zwiększanie skuteczności organizacji w celu zarządzania zmieniającymi się priorytetami
  • Zwiększanie przewidywalności jakości oprogramowania i dostarczania
  • Zwiększanie widoczności projektu i zmniejszanie ryzyka projektu

W miarę rozwoju organizacji chcesz skalować swoje praktyki, aby zachować elastyczność i osiągnąć zmieniające się cele. W tym celu należy wziąć pod uwagę te dwa wytyczne:

  • Jak wygląda sukces, twoje zespoły i twoja organizacja? Co cię najbardziej interesuje: dostarczanie na czas? Jakość produktu? Przewidywalność? Zadowolenie klientów?
  • Wróć do pierwszych zasad i wróć do zasad i wspólnych wartości wyliczonych w manifeście Agile Jak zauważył Ken Schwaber, jeden z założycieli Scrum:
    • "Wartości i zasady mogą być stosowane na różną skalę, ale praktyki są zależne od kontekstu."
    • "Zachowaj wartości, zachowaj zasady i pomyśl o sobie. Podstawowym założeniem Agile jest to, że ludzie wykonujący pracę to ludzie, którzy mogą najlepiej dowiedzieć się, jak to zrobić."

Tworzenie rytmu i przepływu

Przyjmując współdzieloną kadencję i zestaw okresowych komunikacji, tworzysz stały przepływ działań w całej organizacji. Praktyki, które ułatwiają tworzenie rytmu i przepływu w większych organizacjach, obejmują:

  • Wspólna kadencja: Regularne sprinty i wydania określają rytm działalności. Wspólne tempo pracy wszystkich zespołów pomaga we wszystkich działaniach koordynacyjnych i współpracownych.
  • Komunikacja Sprintów: Aby zapewnić organizacji i wszystkim zespołom informacje o postępach i planach zespołów funkcjonalnych, każdy zespół funkcjonalny może udostępnić podsumowanie poprzednich wyników sprintu i bieżących planów sprintu za pośrednictwem platform cyfrowych, takich jak Microsoft Teams, Slack lub e-mail.
  • Pokazy przebiegu i filmy wideo: utwórz szybkie 2-3-minutowe filmy wideo ilustrujące nowe funkcje tworzone przez zespół. Udostępniaj linki do takich filmów w komunikacji sprintu lub na kanałach zespołu.
  • Spotkania pokazowe: aby poinformować inne zespoły i poprosić o opinię na temat oprogramowania w trakcie tworzenia, zespoły prezentują pracę, którą ukończyły. Przeprowadzaj te spotkania w regularnych odstępach czasu w całym cyklu życia projektu i otwieraj je wszystkim zainteresowanym stronom.
  • Tablice wyników metryk jakości: Aby zapewnić wgląd w jakość produktu i zachęcić do utrzymywania dyscypliny w zakresie błędów, okresowo udostępniaj metryki jakości w organizacji. Te metryki mogą obejmować aktywne błędy dla zespołu zajmującego się daną funkcją, trendy błędów, pokrycie testów i współczynniki ucieczki defektów.
  • Spotkania i ceremonie koordynacji: Organizuj spotkania, które koordynują zespoły w regularnych odstępach czasu lub tak często, jak to konieczne, aby rozwiązać nakładające się cele, zależności i zagrożenia. Rozważ wdrożenie Scrum of Scrums lub sesji planowania Program Increment (PI).

Interakcja z klientami

Angażowanie klientów w całym cyklu życia produktu jest podstawową zasadą Agile. Umożliwianie każdemu zespołowi bezpośredniej interakcji z klientami w zestawach funkcji, których są właścicielami.

  • Ciągłe pętle feedbacku: zbudujcie systemy opinii klientów. Pętle te mogą mieć wiele form:
    • Platformy głosowe klientów: ułatwia klientom przekazywanie opinii, dodawanie pomysłów i głosowanie nad funkcjami nowej generacji za pośrednictwem dedykowanych portali, forów społeczności lub zintegrowanych systemów opinii.
    • Opinie w produkcie: zaimplementuj przyciski opinii w produkcie i dane telemetryczne, aby zebrać szczegółowe informacje o środowisku produktu i określonych funkcjach.
    • Pokazy klientów i testowanie użytkowników: Zaplanuj regularne pokazy, które proszą o opinie klientów i przeprowadzają sesje testowania użyteczności, aby ułatwić kształtowanie produktów nowej generacji i śledzenie tworzenia aplikacji, które klienci chcą wykorzystać.
  • Programy dla wczesnych użytkowników i programy beta: Twórz programy z myślą, że wszystkie zespoły mogą zechcieć uczestniczyć w pewnym momencie. Wcześni użytkownicy uzyskują dostęp do wczesnych wersji działającego oprogramowania i dostarczają cenne opinie. Często te programy działają, włączając określone flagi funkcji dla listy wczesnych użytkowników.
  • Decyzje oparte na danych: znajdź sposoby instrumentowania produktu w celu uzyskania przydatnych danych i przetestowania różnych hipotez. Dążenie do przyjaznej dla eksperymentów kultury, która świętuje uczenie się i podejmowanie decyzji opartych na dowodach.

Zwiększanie widoczności projektu

Im więcej wglądu Ty i Twoje zespoły macie w cel, wizję i postępy pracy, tym lepiej możecie zmniejszać ryzyko i zarządzać zależnościami.

  • Struktura zespołu: bez względu na to, jak duża jest twoja organizacja, struktura organizacji wokół małych zespołów od 6 do 9 osób jest skalowana skutecznie. Utwórz pionowe, autonomiczne zespoły cech, pogrupowane w obszarach zarządzania portfolio.
  • Struktura podziału pracy: Podział dużych celów, funkcji lub wymagań na mniejsze pozostaje podstawą zarządzania projektami. Dzieląc pracę na zadania o podobnej wielkości, zespoły mogą lepiej oszacować i identyfikować czynniki ryzyka i zależności.
  • Skonsolidowane widoki i pulpity nawigacyjne: użyj narzędzi do śledzenia online, aby agregować pracę i zdobywać wiedzę między zespołami. Twórz pulpity nawigacyjne w czasie rzeczywistym, aby pokazywać postęp, trendy i kluczowe wskaźniki efektywności przy użyciu usług Azure DevOps Analytics.
  • Przeglądy doświadczenia i projektowania: Organizuj te spotkania przed rozpoczęciem opracowywania funkcji, aby kształcić przywództwo w scenariuszach i priorytetach, zbierać opinie, ustawiać oczekiwania i wyświetlać wszelkie problemy między zespołami dotyczące tej funkcji.

Zwiększanie produktywności pracowników

Konkretne praktyki agile, które dobrze skaluje się i prowadzą do szczęśliwszych, zaangażowanych i produktywnych pracowników, obejmują:

  • Osadzone przywództwo i bezpieczeństwo psychologiczne: Umożliwianie zespołom i liderom w organizacji samodzielnego organizowania i samodzielnego zarządzania jak najwięcej. Autonomia zespołu zwiększa elastyczność organizacji i efektywność zespołu. Upewnij się, że zespoły mają sponsoring korporacyjny potrzebny do sukcesu i tworzenia środowisk, w których członkowie zespołu czują się bezpieczni, aby wyrazić pomysły i obawy.
  • Codzienne spotkania na stojąco: Spotkania Scrum pomagają utrzymać zespoły skoncentrowane na tym, co muszą robić codziennie, aby zmaksymalizować swoją zdolność do spełnienia zobowiązań sprintu. W miarę rozwoju organizacji, powinny rozważyć rozłożenie w czasie tych spotkań, aby udział zespołów mógł odbywać się w razie potrzeby.
  • Scrum of scrums: Przedstawiciele różnych zespołów Agile spotykają się regularnie, aby zgłaszać ukończone prace, następne kroki oraz problemy i bloki występujące w swoich zespołach.
  • Komunikacja zespołowa i udostępnianie wiedzy: udostępnianie i zachęcanie zespołów do udostępniania swoich praktyk i wskazówek za pośrednictwem sieci firmowych. Typowe narzędzia obejmują witryny typu wiki zespołu, usługi Microsoft Teams, confluence lub witryny typu wiki usługi Azure DevOps.
  • Współpraca i jakość kodu: zachęcaj nieformalną komunikację między zespołami i współpracę. Ustanowić praktyki takie jak przeglądy kodu, przeglądy projektów, programowanie w parach i programowanie zespołowe. Te praktyki nie tylko zwiększają współpracę zespołową, ale pomagają rozwijać indywidualne i ogólne kompetencje firmowe.

Ulepszanie kultury organizacyjnej

Zwiększasz efektywność organizacyjną, uczestnicząc w kulturze, którą chcesz utworzyć. Zmiany kultury występują, gdy osoby, zespoły i organizacje przyjmują co najmniej jedno ciągłe ulepszanie. Istnieje kilka skalowalnych rozwiązań agile:

  • Retrospektywy: Zadaj pytania, takie jak: "Co poszło dobrze?", "Co powinniśmy zrobić inaczej?" oraz "Z czego powinniśmy zrezygnować?", aby pomóc zespołom zastanowić się, jak mogą poprawić swoje procesy i praktyki. Retrospektywy pomagają zespołom zidentyfikować, co działa dobrze i co wymaga poprawy. Retrospektywy można przeprowadzać w dowolnym i dowolnym miejscu. Jednak instytucjonalizowanie pewnych retrospektyw z regularną częstotliwością pomaga w ustanowieniu praktyk ciągłego doskonalenia. Na przykład:

    • Retrospektywy sprintu pomagają zespołom identyfikować obszary do poprawy w regularnych odstępach czasu.

    • Retrospektywy wydań pomagają organizacjom identyfikować obszary w celu poprawy komunikacji i praktyk wewnętrznych oraz poprawy zużycia paliwa w następnej wersji.

    • Przeglądy operacyjne: zazwyczaj odbywają się co miesiąc i obejmują przedstawicieli z całego strumienia wartości. Obejmując portfolio projektów i innych inicjatyw oraz używając obiektywnych, ilościowych danych, projektuj te retrospektywy, aby prowokować dyskusje na temat dynamiki wpływającej na efektywność zespołów.

      Zobacz wiki dotyczące zasobów retrospektyw Agile po pomysły, porady i narzędzia do planowania i przeprowadzania retrospektyw. Zobacz również rozszerzenie Marketplace Retrospectives.

  • Tablica śledzenia ulepszeń: Dobre pomysły na ulepszanie procesów mogą powstać od każdego w dowolnym momencie. Przechwytywanie tych pomysłów w celu omówienia i podjęcia decyzji, jak szybko na nich działać, wspiera wysiłki związane z ulepszaniem procesów.

    Tablica zapewnia łatwy i wizualny sposób przechwytywania pomysłów. Ponadto możesz utworzyć zespół do monitorowania ulepszeń i zapisywać pomysły na tablicy elektronicznej.

  • Instytucjonalizacja udostępniania i nauki: Dzielenie się najlepszymi praktykami i wymiana pomysłów pomaga wszystkim zespołom w organizacji rozwijać się i udoskonalać. Opracowywanie kultury uczenia się wspiera tę i inne ciągłe działania związane z ulepszaniem. Rozważ następujące pomysły:

    • Wewnętrzne witryny typu wiki i bazy wiedzy

    • Społeczności praktyk i gildii

    • Tygodnie hackathonów lub czas na innowacje

    • Wewnętrzne zespoły szkoleniowe DevOps i Agile do obsługi zespołów obsługujących te praktyki

    • Regularne sesje lunchu i nauki

    • Wewnętrzne konferencje i rozmowy techniczne

      Gra kulturowa zapewnia dobry zasób dla menedżerów Agile, aby ułatwić zespołom wdrażanie praktyk Agile i udostępnianie najlepszych rozwiązań.

  • Społeczności praktyk: wspieranie wewnętrznych wspólnych dyscyplin (na przykład inżynierów niezawodności lokacji, architektów oprogramowania, projektantów środowiska użytkownika, analityków danych i specjalistów ds. zabezpieczeń)

Działające oprogramowanie

"Często dostarczaj działające oprogramowanie, od kilku tygodni do kilku miesięcy, z preferencją do krótszych okresów."
"Oprogramowanie robocze jest podstawową miarą postępu".
- Manifest Agile

Wraz ze wzrostem ilości oprogramowania, funkcji i złożoności należy wdrożyć rozwiązania ułatwiające tworzenie rozwiązań eksploatacyjnych.

  • Flagi funkcji i dostarczanie progresywne: używaj flag funkcji, aby bezpiecznie włączyć lub wyłączyć dostęp do różnych funkcji. Obsługa uruchamiania funkcji dla wczesnych użytkowników w celu uzyskania praktycznych informacji zwrotnych. Zaimplementuj progresywne wzorce dostarczania, takie jak wersje kanarowe i wdrożenia niebieski-zielony.
  • Plany wydania i ciągłe dostarczanie: zapewnia inny cykl dostarczania jednej lub więcej funkcjonalności. Zespoły funkcjonalne rozumieją wstępnie zaplanowany harmonogram wdrażania nowych funkcjonalności i odpowiednio planują. Wydania mogą odpowiadać temu samemu cyklowi sprintów ustalonemu dla organizacji lub odbywać się w innym tempie. Zobacz Scaled Agile Framework ,aby dowiedzieć się, jak skonfigurować przebiegi i zwolnić pociągi.
  • Ciągła integracja i ciągłe wdrażanie (CI/CD): wdrażanie zautomatyzowanych procesów, które eliminują ręczną pracę i automatyzują przepływ oprogramowania za pośrednictwem cykli testowania, kompilowania i wdrażania. Zaimplementuj kompleksowe strategie testowania, w tym testy jednostkowe, testy integracji i zautomatyzowane testy akceptacyjne.
  • Wewnętrzne źródło i rozwój otwarty: przynieś wartość i etos opracowany w społeczności oprogramowania open source do wewnętrznych zespołów programistycznych. Zachęcaj do udostępniania, dokumentacji i współpracy rozwiązań programistycznych między zespołami.
  • Rozwiązania natywne dla chmury: obejmują konteneryzację, architektury mikrousług i wzorce wdrażania natywne dla chmury, aby zwiększyć skalowalność i łatwość konserwacji.

Nowoczesne rozwiązania i zagadnienia

W miarę ewolucji praktyk Agile należy wziąć pod uwagę inne nowoczesne podejścia:

  • Integracja z usługą DevSecOps: integrowanie praktyk zabezpieczeń w całym cyklu projektowania, a nie traktowanie zabezpieczeń jako oddzielnego problemu.
  • Inżynieria niezawodności lokacji (SRE): wdrażanie praktyk inżynierii niezawodności lokacji w celu zwiększenia niezawodności systemu i zmniejszenia nakładu pracy operacyjnej.
  • Mapowanie strumienia wartości: mapowanie i optymalizowanie przepływu wartości od pomysłu do dostarczania przez klienta.
  • OKRs (Cele i Kluczowe Wyniki): użyj OKRs, aby zjednoczyć zespoły wokół mierzalnych wyników, a nie tylko rezultatów.
  • Myślenie projektowe: uwzględnij podejścia projektowe skoncentrowane przez człowieka, aby lepiej zrozumieć potrzeby klientów.

Wraz z powyższymi rozwiązaniami możesz znaleźć więcej wskazówek dotyczących skalowania narzędzi Agile w następujących artykułach:

Zasoby branżowe

Praktyki, które się nie skalują

  • Szacowanie dużych inicjatyw: część metod projektu kaskadowego obejmuje szacowanie zasobów i harmonogramów. Im większe inicjatywy, tym mniej prawdopodobne, że te szacunki zapewniają jakąkolwiek wartość. W miarę zwiększania się projektów ryzyko i nieprzewidziane problemy i przeszkody mogą wystąpić, unieważniając wiele szacunków.
  • Prędkość jako metryka między zespołami: Podczas gdy prędkość zespołu może zapewnić przydatną metrykę do uzyskania wglądu w to, ile pracy może wykonać każdy zespół podczas cyklu przebiegu, nie można dodać prędkości zespołów w celu uzyskania znaczących lub przydatnych metryk. Ponadto użycie prędkości uzyskanej przez wiele zespołów do niezawodnej pełnej prognozy dalekiego zasięgu jest problematyczne. Zespoły mogą się różnić w zależności od tego, jak szacują swoją pracę, a zmiany te rosną wraz z upływem czasu.
  • Rozwiązania preskrypcyjne najwyższego poziomu: jeden rozmiar nie pasuje do wszystkich, a jedno rozwiązanie zwykle nie pasuje do wszystkich zespołów. Wspieranie autonomii zespołu oznacza umożliwienie zespołom znalezienia własnych rozwiązań przy jednoczesnym zapewnieniu niezbędnych struktur i pomocy technicznej.
  • Agile jako kult cargo: Skupienie się wyłącznie na ceremoniach Agile bez zrozumienia ich celu lub dostosowania ich do kontekstu często prowadzi do nieskutecznych implementacji.