Lekcja 29. Planowanie przedsięwzięcia — metodyki pracy i narzędzia (Agile, Git, Jira/Trello)
PodstawowyPo co się tego uczymy?
Programowanie w zespole to nie tylko pisanie kodu — to też planowanie pracy, dzielenie zadań i śledzenie postępów. Podstawa programowa (INF.04.3.5 i INF.04.3.7) wymaga znajomości metodyk pracy zespołowej i narzędzi do zarządzania projektem — to wiedza przydatna od pierwszego dnia pracy w każdej firmie IT, niezależnie od języka programowania, jakiego używasz.
Teoria
Modele cyklu życia projektu:
- model kaskadowy (waterfall) — kolejne etapy (analiza → projekt → implementacja → testy → wdrożenie) następują jeden po drugim, dopiero po zakończeniu poprzedniego. Sprawdza się przy dobrze znanych, stabilnych wymaganiach, ale źle radzi sobie ze zmianami w trakcie projektu;
- model przyrostowy — produkt buduje się w kolejnych, coraz większych częściach (przyrostach), z których każda dodaje nową funkcjonalność;
- model prototypowy — najpierw tworzy się uproszczony prototyp do zebrania informacji zwrotnej od klienta, dopiero potem pełną wersję;
- Agile (zwinne podejście) — praca podzielona na krótkie, powtarzalne cykle z ciągłą informacją zwrotną od klienta. Najpopularniejsze konkretne metodyki Agile to Scrum (praca w Sprintach — zwykle 1-4-tygodniowych cyklach z planowaniem, codziennym krótkim spotkaniem/"daily", przeglądem i retrospektywą na koniec) oraz Kanban (wizualna tablica z kolumnami statusu zadań, np. "Do zrobienia / W trakcie / Gotowe", bez sztywnego podziału na sprinty) i Lean (nacisk na eliminowanie marnotrawstwa i ciągłe doskonalenie procesu).
Narzędzia praktyczne:
- Git — system kontroli wersji, pozwalający śledzić historię zmian w kodzie, cofać się do wcześniejszych wersji i pracować równolegle w zespole bez nadpisywania cudzej pracy (przez tzw. gałęzie/branche i łączenie zmian);
- Jira / Trello — narzędzia do zarządzania zadaniami: Trello to prosta tablica kanbanowa, Jira to bardziej rozbudowane narzędzie popularne w większych zespołach Scrum, z raportami postępu, backlogiem zadań i śledzeniem błędów;
- diagram Gantta — wykres pokazujący harmonogram projektu w czasie: jakie zadania, kiedy się zaczynają i kończą, oraz które zadania zależą od zakończenia innych.
Schemat
Kanban - tablica z kolumnami statusu zadań:
┌─────────────┬─────────────┬─────────────┬─────────────┐
│ DO ZROBIENIA │ W TRAKCIE │ DO SPRAWDZENIA│ GOTOWE │
├─────────────┼─────────────┼─────────────┼─────────────┤
│ Zadanie A │ Zadanie C │ Zadanie E │ Zadanie F │
│ Zadanie B │ Zadanie D │ │ Zadanie G │
│ │ │ │ Zadanie H │
└─────────────┴─────────────┴─────────────┴─────────────┘
karty przesuwają się w prawo w miarę postępu pracy
Scrum - praca podzielona na Sprinty (zwykle 1-4 tygodnie):
Sprint 1 Sprint 2 Sprint 3
[planowanie] [planowanie] [planowanie]
[praca zespołu] [praca zespołu] [praca zespołu]
[przegląd] [przegląd] [przegląd]
[retrospektywa] [retrospektywa] [retrospektywa]
Przykład z życia
Zespół programistów pracujący nad aplikacją bankową zwykle korzysta ze Scruma: co dwa tygodnie (jeden Sprint) planuje konkretny zestaw zadań, codziennie na krótkim spotkaniu ("daily standup") każdy mówi, nad czym pracuje i czy ma jakieś przeszkody, a kod zmienia w Gita, gdzie każda funkcjonalność powstaje na osobnej gałęzi i jest łączona z główną wersją dopiero po code review (sprawdzeniu przez innego programistę) i testach.
Komentarz i wyjaśnienie kodu
Ta lekcja, podobnie jak poprzednia, dotyczy organizacji pracy, nie samego kodu — dlatego nie ma tu bloku C#. Praktyczne poznanie Gita (podstawowe komendy: commit, push, pull, branch) najlepiej zdobyć poprzez samodzielne założenie darmowego konta na GitHubie i wypchnięcie tam swojego kodu z lekcji tego działu.
Ćwiczenie samodzielne
Załóż darmowe konto na GitHubie (jeśli jeszcze go nie masz) i utwórz tam repozytorium ze swoimi rozwiązaniami zadań z tego działu. Zrób pierwszy commit i push.
Zadania do pracy własnej
Wypisz różnice między modelem kaskadowym a Agile w formie tabeli porównawczej (min. 4 kryteria porównania, np. "reakcja na zmiany wymagań", "częstotliwość dostarczania działającego produktu").
Zaprojektuj prostą tablicę Kanban (na kartce albo w Trello, jeśli masz konto) dla projektu "Strona portfolio" z minimum 8 zadaniami rozłożonymi w kolumnach Do zrobienia / W trakcie / Gotowe.
Zaplanuj Sprint (2 tygodnie) dla zespołu 3-osobowego budującego prostą aplikację konsolową do zarządzania budżetem domowym — rozpisz cele sprintu, konkretne zadania przypisane do dni, i kryteria, po których poznacie, że sprint się udał (tzw. definition of done).
Typowe błędy
Mylenie Scruma z ogólnym pojęciem Agile — Agile to filozofia/zbiór wartości, Scrum i Kanban to konkretne, sformalizowane metodyki REALIZUJĄCE tę filozofię. Nie są synonimami.
Traktowanie Gita jak zwykłego "backupu w chmurze" — prawdziwa siła Gita to praca zespołowa: gałęzie (branche) pozwalają kilku osobom pracować równolegle nad różnymi funkcjami bez nadpisywania swojej pracy, a historia commitów pozwala zrozumieć, KTO i DLACZEGO zmienił dany fragment kodu.
Sztywne trzymanie się jednej metodyki bez adaptacji do zespołu — w praktyce wiele zespołów miesza elementy Scruma i Kanbana (tzw. Scrumban) — metodyki to narzędzia, nie dogmaty.
Nawiązanie do egzaminu zawodowego
To realizacja INF.04.3.5 ("dobiera narzędzia i metodologie do planowania projektu: diagram Gantta, Jira/Trello, Git") oraz INF.04.3.7 ("planuje przedsięwzięcie programistyczne: cykl życia projektu, model kaskadowy/przyrostowy/prototypowy, Agile"). Ta wiedza jest niezależna od konkretnego języka programowania i przyda się w każdej pracy zespołowej nad projektem — także przy projekcie końcowym z lekcji 19.