Kanban w procesie tworzenia oprogramowania

Kanban to system organizacji pracy, który powstał w latach 50. XX wieku w japońskich zakładach Toyoty. Obecnie jest powszechnie stosowany w wielu branżach i środowiskach produkcyjnych, czego przykładem jest inżynieria oprogramowania. Na czym opierają się zasady Kanban w tworzeniu oprogramowania? W jakim celu się je stosuje? Odpowiedzi na te i inne pytania znajdują się w niniejszym artykule.

 

 

Cele zastosowania koncepcji Kanban w inżynierii oprogramowania

 

Adaptacji metody Kanban na potrzeby inżynierii oprogramowania dokonał David J. Anderson na podstawie zaobserwowanych podobieństw występujących pomiędzy procesami produkcji, a wytwarzaniem oprogramowania. Wnikliwa obserwacja pozwoliła dostosować zasady Kanban do warunków oraz sposobu pracy zespołów programistycznych. Koncepcja ta stała się nawet przedmiotem literatury, ponieważ David J. Anderson opisał ją w książce pod tytułem – Kanban: Successful Evolutionary Change for Your Technology Business.

Co jest głównym celem zastosowania zasad Kanban w inżynierii oprogramowania? Przede wszystkim wykorzystuje się je, by terminowo dostarczyć klientom najwyższej jakości oprogramowanie, co jest możliwe dzięki zwiększeniu wydajności zespołu IT. Zastosowanie metody Kanban pozwala sprawować pełną kontrolę nad procesem tworzenia oprogramowania, co umożliwia wyeliminowanie przyczyn nieefektywności, a co za tym idzie zwiększenie produktywności.

 

 

Zasady Kanban w tworzeniu oprogramowania

 

David J. Anderson określił również 3 podstawowe zasady występujące w czasie tworzenia oprogramowania przy wykorzystaniu metody Kanban. Należy do nich:

  • wizualizacja, czyli przedstawienie kolejnych etapów procesu w formie tablicy kanban. W przypadku tworzenia oprogramowania zadania najczęściej grupowane są jako analiza, tworzenie kodu oraz testy;
  • ograniczenie pracy w toku, z ang. Work in Progress, co jest bardzo ważne ze względu na fakt, że nie tworzy ona przyrostu w projekcie. Warto również mieć świadomość, że im będzie jej więcej, tym bardziej konieczny będzie multitasking, który z produktywnością nie ma zbyt wiele wspólnego;
  • zarządzanie przepływem, czyli systematyczne mierzenie, weryfikowanie oraz usprawnianie procesów twórczych. Dotyczy to zazwyczaj mierników takich jak czas i płynność wykonywania zadań, co jest weryfikowane w celu optymalizacji procesu.

Jak już wspomniano zasady określone przez Andersona to podstawa, która w praktyce jest rozszerzona o dwie kolejne, czyli:

  • uwyraźnienie polityki procesu – podział projektu na konkretne etapy pozwala dostrzec złożoność całego procesu wytwarzania oprogramowania oraz efektywnie nim zarządzać;
  • stosowanie modeli w celu dokonania oceny możliwości poprawy – wykorzystanie modeli statystycznych pozwala dokładniej zbadać efektywność, a w dalszej kolejności podjąć działania mające na celu jej podniesienie.

 

 

Kanban i Scrum – jakie są różnice?

 

Warto mieć świadomość, że Kanban nie jest jedyną koncepcją organizacji czasu wykorzystywaną w inżynierii oprogramowania. Równie często zastosowanie znajduje Scrum, czyli metodyka zwinna stworzona w oryginale dla zespołów deweloperskich. Na czym polega? W tym przypadku tworzone są małe, samoorganizujące się zespoły, które pracują nad wydzielonym fragmentem projektu o odpowiednim priorytecie oraz z nałożonym zasobem czasu. Cały projekt jest natomiast podzielony na konkretnej wielkości iteracje, które trwają maksymalnie miesiąc (zazwyczaj około 2 tygodni). Po każdej z nich organizowane jest natomiast spotkanie dla zespołu, podczas którego następuje omówienie postępów oraz określenie priorytetów. Obie metodyki łączy cel, czyli realizacja projektu w możliwie najkrótszym czasie przy zachowaniu najwyższej jakości. Co je różni? Przede wszystkim podejście do czasu, ponieważ Scrum obejmuje nałożone iteracje, których początek i koniec jest ściśle określony. W przypadku Kanban planowanie działań jest bardziej elastyczne, a głównym założeniem jest wizualizacja procesów oraz ograniczanie pracy w toku, która nie zwiększa postępów w projekcie  oraz negatywnie wpływa na efektywność działań. Kanban wymaga uporządkowania działań oraz może być stosowany dla jednej osoby. Metodyka Scrum przeznaczona jest natomiast dla zespołów IT.

 

 

Kanban vs Scrum – co wybrać?

 

Jak wspomniano w poprzednim akapicie zarówno Kanban, jak i Scrum to metodyki, które stosowane są w tym samym celu. Która będzie zatem lepsza? Trudno udzielić jednoznacznej odpowiedzi na tak postawione pytanie, ponieważ dużo w tym przypadku zależy od specyfiki projektu oraz realizującego do zespołu. Rozwiązaniem, które jest zalecane przez wielu specjalistów jest łączenie najlepszych cech obu metodyk, co oznacza, że zespoły pracujące w oparciu o Kanban decydują się często na przeprowadzanie codziennych standupów, czy określenia roli Product Ownera, co charakteryzuje Scruma. W odwrotnej sytuacji zespoły wykorzystujące Scruma starają się ograniczyć ilość pracy w toku, co jest charakterystyczne dla metody Kanban.

 

 

Zalety stosowania metodyki Kanban w procesie wytwarzania oprogramowania

 

Wykorzystanie metodyki Kanban w procesie wytwarzania oprogramowania przynosi wiele korzyści, które pozwalają go zoptymalizować. Należy do nich przede wszystkim:

  • łatwość implementacji – Kanban w porównaniu z innymi koncepcjami organizacji pracy (np. Scrum) jest bardzo łatwy we wdrożeniu oraz zrozumieniu nawet dla osób, które nie miały do tej pory styczności ze zwinnymi metodykami;
  • usprawnienie pracy zespołowej – tablica kanban opracowana dla danego projektu jest dostępna dla całego pracującego nad nim zespołu, co sprawia, że każdy jego członek może śledzić postępy, czy zauważyć ewentualne niedociągnięcia i pola do poprawy;
  • elastyczność względem nowych potrzeb – specyfika procesów wytwarzania oprogramowania sprawia, że wymagania klienta się zmieniają, co wymaga szybkiej reakcji ze strony zespołu;
  • znaczące podniesienie produktywności – ograniczenie pracy w toku sprawia, że zespół szybciej osiąga postępy w swoich pracach;
  • minimalizacja ilości pracy – wizualizacja procesów pozwala odpowiednio nimi zarządzać oraz wykluczyć te, które są zbędne dla końcowego efektu;
  • poprawa wydajności – kanban zakłada ciągłe mierzenie efektów oraz poszukiwanie ulepszeń, co przekłada się na zwiększenie wydajności zespołu;
  • ograniczenie kosztów – optymalizacja procesów przekłada się bezpośrednio na ograniczenie zbędnych kosztów.

 

 

Czym powinien się charakteryzować dobry system do pracy w systemie Kanban?

 

Dobry system do pracy zgodnie z metodyką Kanban powinien charakteryzować się przede wszystkim funkcjonalnością. W przypadku wykorzystania go do organizowania pracy zespołu wytwarzającego oprogramowanie należy zwrócić uwagę przede wszystkim na możliwość szybkiego zarządzania zadaniami, terminami, czy przełączanie się pomiędzy poszczególnymi tablicami. Bardzo istotne są również funkcje, mające na celu mierzenie wydajności pracy zespołu, np. kontrolowanie czasu, który programista spędza na wykonaniu danego zadania. Specjalistyczne systemy umożliwiają również przypisanie określonych zadań do konkretnych członków zespołu, czy śledzenie dyskusji odbywających się w ramach projektu. Jak widać są to narzędzia, które sprawiają, że metoda Kanban jest przystosowana do obecnych wymagań.

 

 

Jak wdrożyć metodę Kanban w procesie tworzenia oprogramowania w firmie?

 

Wdrożenie metody Kanban w procesie tworzenia oprogramowania w firmie wymaga przede wszystkim zastosowania jej 3 podstawowych zasad, czyli wizualizacji, ograniczenia pracy w toku oraz zarządzania przepływami. Poza tym należy również ustalić jednoznaczne zasady w ramach procesów oraz zachęcić członków zespołu do ich stosowania. W dalszej kolejności warto zbierać informacje zwrotne, pochodzące zarówno od zespołu, jak i klientów zewnętrznych. To właśnie one wraz z wynikami przeprowadzonych testów pozwalają ulepszać procesy oraz eksperymentować w celu ich rozwoju.

Wykorzystanie tablic Kanban w procesie tworzenia oprogramowania pozwala odpowiednio nim zarządzać, a zespół specjalistów ma bezpośredni wgląd w poszczególne zadania oraz widzi ich istotę dla całego projektu. Warto również mieć świadomość, że metodyka Kanban jest na tyle prosta i elastyczna, że sprawdzi się zarówno w przypadku małych, jak i dużych projektów, czy zespołów.