Udostępnij przez


Co to jest programowanie agile?

Programowanie agile to termin używany do opisywania iteracyjnego tworzenia oprogramowania. Iteracyjne tworzenie oprogramowania skraca cykl życia DevOps, wykonując pracę w krótkich przyrostach, zwykle nazywanych sprintami. Sprinty są zazwyczaj od jednego do czterech tygodni. Rozwój agile często stawia się w kontrze do tradycyjnego lub kaskadowego podejścia, którego celem jest planowanie większych projektów z góry i ukończenie ich zgodnie z planem.

Dostarczanie kodu o jakości produkcyjnej w każdej iteracji wymaga, aby zespół Agile uwzględnił przyspieszone tempo. Wszystkie zadania dotyczące kodowania, testowania i weryfikacji jakości muszą być wykonane podczas każdego sprintu. Jeśli zespół nie zostanie odpowiednio zorganizowany, wyniki mogą nie spełniać oczekiwań. Chociaż te rozczarowania oferują doskonałe możliwości uczenia się, warto nauczyć się kluczowych lekcji przed rozpoczęciem pracy.

Ten artykuł zawiera kilka kluczowych czynników sukcesu dla zespołów programistycznych Agile:

  • Staranne uściślenie listy prac
  • Częsta i wczesna integracja
  • Minimalizacja długu technicznego

Staranne doprecyzowanie listy zaległych zadań

Zespół programistyczny Agile pracuje na bazie backlogu wymagań, które są często nazywane historyjkami użytkowników. Lista prac jest priorytetowa, z najważniejszymi historiami użytkowników u góry. Właściciel produktu zarządza rejestrem zadań i dodaje, zmienia oraz przydziela ponownie priorytety historiom użytkowników na podstawie potrzeb klienta.

Obraz tablicy Kanban zawierającej kilka kolumn. W każdej kolumnie widoczne są kilka kart.

Jednym z największych czynników ograniczających produktywność zespołu Agile jest źle zdefiniowany backlog. Nie można oczekiwać, że zespół będzie stale dostarczać wysokiej jakości oprogramowanie w każdym sprincie, jeśli nie mają jasno zdefiniowanych wymagań.

Zadaniem właściciela produktu jest zapewnienie, że na każdy sprint inżynierowie mieli jasno zdefiniowane historie użytkowników, nad którymi mogą pracować. Historie użytkowników w górnej części listy prac powinny być zawsze gotowe do rozpoczęcia pracy zespołu. To pojęcie jest nazywane doskonaleniem backlogu. Utrzymywanie listy prac gotowych dla zespołu deweloperów Agile wymaga wysiłku i dyscypliny. Na szczęście warto zainwestować.

Podczas uściślinia listy prac pamiętaj o następujących kluczowych kwestiach.

  1. Udoskonalanie historii użytkowników jest często długotrwałym działaniem. Eleganckie interfejsy użytkownika, piękne projekty ekranów i atrakcyjne dla klientów rozwiązania zajmują trochę czasu i energii, aby stworzyć. Sumienni właściciele produktów doprecyzowują historie użytkowników z wyprzedzeniem na dwa do trzech sprintów. Uwzględniają iteracje projektowe i recenzje klientów. Pracują nad zapewnieniem, że każda historia użytkownika jest czymś, co zespół Agile jest dumny z dostarczania klientowi.

  2. Historia użytkownika nie jest udoskonalona, chyba że zespół twierdzi, że tak jest. Zespół musi przejrzeć historię użytkownika i zgodzić się, że jest gotowa do realizacji. Jeśli zespół nie zobaczy historii użytkownika do pierwszego dnia sprintu, mogą pojawić się problemy.

  3. Historie użytkownika w niższej części backlogu mogą pozostać niejednoznaczne. Nie marnuj czasu na doskonalenie elementów o niższym priorytecie. Skup się na górnej części listy prac.

Integruj wcześnie i często

Ciągła integracja i ciągłe dostarczanie (CI/CD) przygotowują zespół do szybkiego tempa rozwoju Agile. Zautomatyzuj jak najszybciej linię procesów kompilacji, testowania i wdrażania. Skonfiguruj taką automatyzację jako jedno z pierwszych zadań, którymi zajmuje się zespół podczas uruchamiania nowego projektu.

Dzięki automatyzacji zespół unika powolnych, podatnych na błędy i czasochłonnych procesów wdrażania ręcznego. Ponieważ zespoły wydają każdą wersję w każdym sprincie, nie ma czasu na ręczne wykonywanie tych zadań.

CI/CD (Ciągła integracja/ciągłe wdrażanie) również wpływa na architekturę oprogramowania. Dzięki temu można dostarczać oprogramowanie do tworzenia i wdrażania. Gdy zespoły implementują funkcję trudną do wdrożenia, stają się natychmiast świadomi, czy kompilacja i wdrożenia kończą się niepowodzeniem. Ciągła integracja/ciągłe wdrażanie zmusza zespół do rozwiązywania problemów z wdrażaniem na bieżąco. Produkt jest wtedy zawsze gotowy do wysłania.

Abstrakcyjny diagram słupkowy przedstawiający stan budowy CI na przestrzeni czasu. Większość kompilacji zakończyła się pomyślnie. Tylko kilka nie powiodło się.

Istnieją pewne kluczowe działania ciągłej integracji/ciągłego wdrażania, które są niezwykle ważne dla efektywnego programowania agile.

  1. Testowanie jednostkowe. Testy jednostkowe są pierwszą obroną przed błędem człowieka. Rozważ użycie testów jednostkowych w ramach kodowania. Zaewidencjonuj testy przy użyciu kodu. Twórz testy jednostkowe jako część każdej kompilacji. Nieudane testy jednostkowe oznaczają nieudaną kompilację.

  2. Automatyzacja budowania. System kompilacji powinien automatycznie ściągać kod i testy bezpośrednio z kontroli źródła podczas uruchamiania kompilacji.

  3. Zasady rozgałęzień i budowania. Skonfiguruj zasady rozgałęzienia i kompilacji, aby tworzyć automatycznie, gdy zespół sprawdza kod w określonej gałęzi.

  4. Wdrażanie w środowisku. Skonfiguruj potok wydania, który automatycznie wdraża wbudowane projekty w środowisku, które naśladuje środowisko produkcyjne.

Minimalizowanie długu technicznego

W finansach osobistych, łatwiej jest pozostać bez długów niż wykopać się spod niego. Ta sama zasada ma zastosowanie do długu technicznego. Dług techniczny obejmuje wszystko, nad czym zespół musi pracować ze względu na skróty, które były podjęte wcześniej. Jeśli na przykład masz napięty harmonogram, możesz poświęcić jakość, aby spełnić ostateczny termin. Dług techniczny to cena, którą płacisz później, gdy trzeba refaktoryzować kod, aby nadrobić ten brak jakości. Przykłady obejmują poprawki, które umożliwiają rozwiązywanie problemów z słabym projektem, usterkami, problemami z wydajnością, problemami operacyjnymi, problemami z ułatwieniami dostępu i innymi problemami.

Zarządzanie długiem technologicznym wymaga odwagi. Istnieje wiele nacisków, aby opóźnić przerobienie kodu. Dobrze jest pracować nad funkcjami i ignorować dług. Niestety, ktoś musi spłacić dług techniczny wcześniej lub później. Podobnie jak dług finansowy, dług techniczny staje się trudniej spłacić im dłużej istnieje. Inteligentny właściciel produktu współpracuje z zespołem, aby upewnić się, że jest czas na spłatę długu technicznego każdego sprintu. Równoważenie redukcji długu technicznego z rozwijaniem funkcji jest trudnym zadaniem. Na szczęście istnieją pewne proste techniki tworzenia wydajnych, skoncentrowanych na klientach zespołów.

Zawsze bądź zwinny

Bycie agile oznacza uczenie się od doświadczenia i ciągłe ulepszanie. Programowanie zwinne zapewnia więcej cykli szkoleniowych niż tradycyjne planowanie projektów ze względu na ściślejsze pętle procesów. Każdy sprint zapewnia coś nowego, aby zespół się uczył.

Przykład:

  • Zespół dostarcza wartość klientowi, otrzymuje opinię, a następnie modyfikuje listę prac na podstawie tej opinii.
  • Dowiedzą się, że w ich automatycznych kompilacjach brakuje kluczowych testów. Włączają tę pracę do następnej iteracji, aby rozwiązać ten problem.
  • Uważają, że niektóre funkcje działają słabo w środowisku produkcyjnym, więc planują poprawę wydajności.
  • Ktoś z zespołu słyszy o nowej praktyce. Zespół decyduje się wypróbować go na kilka sprintów.

Zespoły, które dopiero zaczynają się od tworzenia aplikacji Agile, powinny oczekiwać większej liczby możliwości szkoleniowych. Są one bezcenną częścią procesu, ponieważ prowadzą do wzrostu i poprawy.

Dalsze kroki

Istnieje wiele sposobów ustalenia procesu rozwoju Agile, który jest odpowiedni dla zespołu. Usługa Azure DevOps udostępnia różne szablony procesów. Zespoły, które szukają różnych struktur bazowych do planowania, mogą używać tych szablonów jako punktów początkowych. Aby uzyskać informacje na temat wybierania szablonu procesu, który najlepiej pasuje do kultury i celów zespołu, zobacz Wybieranie przepływu procesu lub szablonu procesu do pracy w usłudze Azure Boards.

W miarę rozwoju organizacji może to być wyzwanie, aby pozostać zdyscyplinowanym. Dowiedz się więcej o skalowaniu metody Agile do dużych zespołów.