środa, 15 maja 2013

Zarządzanie zadaniami w arkuszu kalkulacyjnym

Moje środowisko pracy jest wieloprojektowe. Rodzi to konieczność radzenia sobie z kilkoma projektami na raz. Poniżej chciałem przedstawić i zaproponować prosty sposób w jaki ja staram się kontrolować i planować zadania w przecięciu na osoby i zasoby.

Korzystam w tym celu z arkusza kalkulacyjnego wyprodukowanego przez amerykańskiego potentata ale jestem przekonany, że taki sam efekt można osiągnąć korzystając z produktów innych producentów.

Arkusz składa się z trzech zasadniczych arkuszy:
  • arkusz "Ewidencja projektów"
  • arkusz "Ludzie i zasoby"
  • arkusz "Plan gry"

Arkusz "Ewidencja projektów"

Jest to prosta lista projektów wraz z parametrami takimi jak:
  • osoba odpowiedzialna za projekt
  • szacowana pracochłonność w osobodniach
  • testerzy przypisani do projektu
  • rekomendacja wdrożeniowa
  • testowy cykl życia
Ostatnia pozycja odzwierciedla aktualny etap, na którym - z perspektywy procesu testów - znajduje się projekt. Może to być, planowanie, wykonanie lub zakończenie.

 Ostatni etap okazuje się szczególnie "kłopotliwy". Zasada ogólna jest taka, że testy kończą się wraz z wygenerowaniem raportu końcowego. Raport końcowy zaś może być wygenerowany po kompletnym zakończeniu testów rozumianym jako zrealizowanie wszelkich rozpoznanych zadań testowych. W efekcie drobne zadanie, które może być zrealizowane dopiero po uruchomieniu całego projektu może "zablokować" raport końcowy. Dlatego zdecydowałem się na wprowadzenie dwóch raportów końcowych; wstępnego i końcowego.

Raport wstępny, jest dostępny po realizacji zasadniczej części testów, tuż przed "wdrożeniem". Tak jak raport końcowy, zawiera on rekomendację wdrożeniową ale zawiera także informacje o tym co pozostaje do zrobienia. Raport końcowy przygotowywany jest po definitywnym ukończeniu aktywności testowych.

Na marginesie zaznaczę, że "układanie" cyklu życia testów najlepiej jest zacząć od przyjętego modelu a następnie modyfikować go do zastanych potrzeb. Wprowadzenie cyklu życia testów wymaga także zmian po stronie innych partnerów. To z kolei modyfikuje sam proces testowy co właśnie wymusza iteracyjność procesu wdrażania cyklu życia testów.

Obrazek poniżej pokazuje wyimaginowany cykl życia testów.
Przykład struktury arkusza "Ewidencja"

Arkusz "Ludzie i zasoby"

Tutaj znajduje się zasadnicza część i stąd wynikaja główna korzyść: łatwy dostęp do informacji umożliwiającej planowanie i przeplanowywanie zadań testowych w zależności od oczekiwań developmentu bądź "biznesu". Z założenia jest to informacja szacunkowa. Nie wierzę w planowanie pracy członkom zespołu w godzinach.

Na początku potrzebne są pewne nakłady pracy ale dzięki temu uzyskujemy elastyczne narzędzie do planowania.

W komórce "B2" należy wpisać datę początkową. Ponieważ w moim wypadku datą przecięcia jest 1 stycznia to wpisuję jako datę początkową, poniedziałek ostatniego pełnego tygodnia grudnia - aby uzyskać pewien margines.
Następnie ciągnę komórkę aby uzyskać dzienne daty z całego roku. Korzystając z funkcji "DZIEN.TYG" oznaczam weekendy i dopisuję numery poszczególnych tygodni. Nie należy zapominać także o świętach. Jest to praca, którą rutynowo wykonuję na początku roku.

W pierwszej kolumnie wypisuję nazwiska osób. Można także wypisać środowiska testowe. Od tego momentu korzystam z elementów graficznych nazwanych "smartArt" ale równie dobrze mogą to być standardowe kształty. Przypisując zadanie do osoby ustawiam tak kształt aby jego początek zaczynał się pierwszego dnia aktywacji a koniec ostatniego. Następnie można skopiować kształt i ustawić go na środowisku także w odpowiednich ramach czasowych.

W przykładzie poniżej tego nie widać, ale ja używam czterech różnych kolorów na oznaczenia różnych klas aktywności. Wizualnie wyodrębniają mi one:
  • duże projekty
  • małe zadania wspierające dewelopment lub testy ad hoc
  • szkolenia i inne wydarzenia
  • urlopy

Arkusz monitorujący ludzi i zasoby w czasie

Ten arkusz wykorzystuję do celów komunikacyjnych w rozmowach z innymi osobami lub działami, planując przyszłe zadania, pokazując status bieżący czy po prostu przygotowując plan prac na nadchodzący tydzień.

Arkusz "Plan gry"

Ten arkusz służy mi do komunikacji z najbliższym otoczeniem. Przygotowuję tutaj listę zadań przypisanych do osób i wysyłam do zainteresowanych (głównie mój zespół, inni kierownicy oraz dyrekcja). Przydzielam także procentowo czas.  20% oznacza 1 dzień roboczy. Jest to wartość umowna pozwalająca przyjąć moim współpracownikom pewne założenia co do organizacji tygodnia pracy.


Pozycja "Urlopy/Święta" oraz "Zasoby" jest stała i pozwala mi alokować czas odpowiednio albo dla nieobecności albo dla zadań typu ad hoc (np. szybkie testy fixów). Staram się też regularnie przeznaczać pewien czas w tygodniu na aktywność nazywaną "wsparciem developmentu". Jest to rodzaj dyżuru. W ramach tej aktywności, przypisana osoba ma za zadanie obsługiwanie małych zadań testowych, których potrzebę doraźnie zgłasza development.

Ukrywając przemijające tygodnie jestem w stanie wysłać prostą tabelkę, pokazującą plan prac per osoba z obciążeniem. Pozwala też na dystrybucję informacji o dostępności poszczególnych ludzi.

Podsumowanie

Podejście przedstawione powyżej wypracowywałem w różnych wariantach przez parę lat. Dla obecnej organizacji i w obecnym trybie pracy wydaje się to wystarczające do realizacji potrzeby planowania, uzgadniania i kontrolowania przepływu pracy.

Dodatkowo, korzystając z mechanizmów automatyzujących (VBA) można użyć tego arkusza do bardziej wyrafinowanych celów. W moim przypadku najbardziej przydatne funkcje to:

  1. Automatyczne monitorowanie czasu
    Za każdym razem kiedy w arkuszu ewidencji projektów zmieniam status projektu, w odpowiednich komórkach skrypt VBA wpisuje datę tej zmiany. Pozwala to na zbieranie danych statystycznych pomocnych przy szacowaniu pracochłonności. Mając informację ile średnio zajmuje planowanie i wykonanie jestem w stanie dostarczać prawdziwych szacunków.
  2. Generowanie zadań w Outlooku
    Jeszcze do niedawna wykorzystywałem funkcjonalność Outlooka do przydzielania zadań do wykonania. Stworzyłem dodatkowy arkusz, w którym z przygotowywałem spis zadań dla każdego członka zespołu. Taką informację wysyłam do wszystkich zainteresowanych (development, produkcja, zarządzanie produktem).
    Następnie stworzyłem macro, które szczytuje wszystkie zadania razem z osobą odpowiedzialną. To samo macro odwołuje się do macra odpowiedzialnego za utworzenie obiektu zadanie w Outlooku. W ten sposób bardzo szybko jestem w stanie generować zadania dla zespołu.
  3. Synchronizowania listy aktywnych projektów pomiędzy arkuszem "Ewidencja projektów" a "Plan gry".
Główną wadą tego rozwiązania jest brak możliwości współdziałania grupowego. Jednak nie taki miał być zasadniczy cel i jak wspomniałem poszczególne zadania definiowane są w systemie zewnętrznym. Aby jednak umożliwić dostęp on-line zainteresowanym, wygospodarowałem w infrastrukturze firmy miejsce na wewnętrznym serwerze www i tam publikuję aktualną wersję tego pliku. Korzystam z wbudowanego mechanizmu, który przy każdym zapisaniu pliku publikuje mi jego wersję na serwer www.

Informacje o tym jak skorzystać z tego mechanizmu, można uzyskać w wbudowanym systemie pomocy, wyszukując frazę "Zapisywanie całości lub części skoroszytu w statycznej stronie sieci Web".

1 komentarz:

aniria pisze...

Odpowiedni system pozwala na większą kontrolę nad kosztami oraz zasobami w projektach. Technologie znacząco usprawniają takie zadania jak kompleksowa obsługa czasu pracy czy nawet śledzenie przypisanych zadań. Więcej o tym - tutaj. Wpływa to bezpośrednio na efektywność, nie tylko poszczególnych pracowników, ale także całego przedsiębiorstwa.