Co to jest programowanie agile?

Programowanie agile to termin używany do opisywania iteracyjnego tworzenia oprogramowania. Iteracyjne tworzenie oprogramowania skraca cykl życia metodyki DevOps, wykonując pracę w krótkich przyrostach, zwykle nazywanych przebiegami. Sprinty są zazwyczaj od jednego do czterech tygodni. Programowanie agile jest często kontrastowane z tradycyjnym lub kaskadowym rozwojem, który planuje większe projekty z góry i kończy je zgodnie z planem.

Dostarczanie kodu jakości produkcyjnej każdego przebiegu wymaga, aby zespół programistyczny Agile uwzględnił przyspieszone tempo. Wszystkie weryfikacje kodowania, testowania i jakości muszą być wykonywane przy każdym przebiegu. Jeśli zespół nie zostanie prawidłowo skonfigurowany, wyniki mogą nie mieć 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
  • Integracja wczesna i często
  • Minimalizacja długu technicznego

Staranne uściślenie listy prac

Zespół programistyczny Agile działa poza listą prac wymagań, które są często nazywane scenariuszami użytkowników. Lista prac jest priorytetowa, z najważniejszymi historiami użytkowników u góry. Właściciel produktu jest właścicielem listy prac i dodaje, zmienia i ponownie zapisuje historie użytkowników na podstawie potrzeb klienta.

Image of a Kanban board that contains several columns. In each column, a few cards are visible.

Jednym z największych przeciągeń produktywności zespołu Agile jest źle zdefiniowana zaległość. Nie można oczekiwać, że zespół będzie stale dostarczać oprogramowanie wysokiej jakości każdego przebiegu, chyba że mają jasno zdefiniowane wymagania.

Zadaniem właściciela produktu jest zapewnienie, że każdy przebieg, inżynierowie mają jasno zdefiniowane historie użytkowników do pracy. 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 uściśleniem listy prac. 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 uściśliją historie użytkowników z wyprzedzeniem od dwóch do trzech przebiegów. Odpowiadają one za iterację projektową i przeglądy 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 pracy. Jeśli zespół nie widzi historii użytkownika do pierwszego dnia przebiegu, problemy mogą być prawdopodobnie wynikiem.

  3. Scenariusze użytkowników w dalszej części listy prac mogą pozostać niejednoznaczne. Nie marnuj czasu ujmowania elementów o niższym priorytcie. Skup się na górnej części listy prac.

Integracja wczesna i często

Ciągła integracja i ciągłe dostarczanie (CI/CD) skonfigurowała zespół w celu szybkiego tempa tworzenia aplikacji Agile. Jak najszybciej zautomatyzuj potoki 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 zwalniają każdy przebieg, nie ma czasu na ręczne wykonywanie tych zadań.

Ciągła integracja/ciągłe wdrażanie wpływa również 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 wymusza zespół, aby rozwiązać problemy z wdrażaniem w miarę ich występowania. Produkt jest wtedy zawsze gotowy do wysłania.

Abstract bar chart that shows the status of CI builds over time. Most builds succeeded. Only a few failed.

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. Tworzenie testów jednostkowych w ramach każdej kompilacji. Nieudane testy jednostkowe oznaczają nieudaną kompilację.

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

  3. Zasady rozgałęzinia i kompilacji. 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

Z finansów osobistych, łatwiej jest pozostać z długu niż kopać z pod nim. Ta sama zasada ma zastosowanie do długu technicznego. Dług techniczny obejmuje wszystko, co zespół musi rozwiązać ze względu na skróty, które został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.

Utrzymanie na szczycie długu technicznego 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 przebiegu. Równoważenie długu technicznego z rozwojem funkcji jest trudnym zadaniem. Na szczęście istnieją pewne proste techniki tworzenia wydajnych, skoncentrowanych na klientach zespołów.

Zawsze być agile

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 przebieg zapewnia coś nowego dla zespołu do nauki.

Na 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. Obejmują one pracę w następnym przebiegu, 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 przebiegó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.

Następne kroki

Istnieje wiele sposobów osiedlenia się nad procesem programowania 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.