Seria: automatyzacja obecności / część 1
Arkusze obecności w klubie pływackim — problem, który warto było zautomatyzować
Od papierowego dziennika, Librusa i ręcznego kopiowania arkuszy na telefonie do walidacji danych, tygodniowych kart, miesięcznych podsumowań i raportów wysyłanych z Google Apps Script.
Skąd wziął się problem
Przez kilka lat byłem związany ze środowiskiem pływackim — najpierw jako asystent trenera w Warcie Poznań, w formie wolontariatu, później już jako trener pływania w Posnanii. Właśnie w Posnanii zacząłem mocniej łączyć codzienną pracę trenerską z informatyką.
Jednym z pierwszych problemów, który naprawdę zaczął mnie męczyć, była ewidencja obecności. Na papierze brzmi to banalnie: zawodnik był na treningu albo go nie było. W praktyce bardzo szybko okazało się, że zwykła lista obecności nie wystarcza.
Treningi odbywały się codziennie, grup było kilka, część zawodników była ze szkoły, część spoza niej, a do tego dochodziły normalne sytuacje z basenu: spóźnienia, wcześniejsze wyjścia, nieobecności usprawiedliwione i treningi wykonane tylko częściowo.
Obecność to nie tylko tabelka
W szkolnych systemach typu Librus obecność działa dobrze dla lekcji: ktoś jest obecny, nieobecny albo spóźniony. W treningu pływackim to nie zawsze wystarcza.
Jeżeli zawodnik spóźnił się na trening, sama informacja o spóźnieniu nie mówi, ile pracy faktycznie wykonał. Jeżeli wyszedł wcześniej, problem jest podobny. Z punktu widzenia trenera różnica między zawodnikiem, który wykonał całą jednostkę, a zawodnikiem, który przepłynął tylko jej część, jest istotna.
Dlatego zacząłem używać prostego systemu procentowego: brak wpisu nie liczył się do obecności, 0 oznaczało nieobecność, wartości pomiędzy 0 a 1 oznaczały częściową obecność, a 1 pełną obecność.
To nadal był prosty model, ale dawał dużo lepszą kontrolę niż zwykłe „obecny / nieobecny”.
Ręczny proces szybko przestał wystarczać
Pierwsze rozwiązanie było zwykłym arkuszem Google Sheets. W wierszach byli zawodnicy, w kolumnach dni danego tygodnia. Arkusz miał nazwę dnia i datę, a podstawowe formuły liczyły frekwencję zawodnika oraz obecność całej grupy.
To działało, ale wymagało ręcznej pracy. Co tydzień trzeba było kopiować arkusz, przygotowywać nowe daty, poprawiać formatowanie i pilnować, żeby wszystko się zgadzało. Często robiłem to na smartfonie, co samo w sobie było niewygodne.
Do tego dochodziło współdzielenie pliku z innymi trenerami. Jedna osoba wpisywała 1, ktoś inny próbował wpisać coś w innym formacie, ktoś przez pomyłkę wpisywał 10, a później trzeba było sprawdzać, dlaczego zawodnik ma 110% obecności. Ktoś mógł zmienić formatowanie, ktoś usunąć formułę, ktoś wpisać dane w złe miejsce.
Sam arkusz nie był problemem. Problemem był brak zasad, które pilnowałyby poprawności danych.
10 wpisane zamiast 1.Papier, Librus i kilka źródeł prawdy
Na początku obecność funkcjonowała równolegle w kilku miejscach. Była lista papierowa, był Librus i był arkusz. Obecność wpisywałem podczas treningu, codziennie, osobno dla grup.
Przy dzienniku papierowym problemem było nawet samo przekazywanie go między osobami. Jeżeli dziennik był u jednego trenera, ktoś inny nie miał do niego dostępu. Jeżeli trzeba było coś sprawdzić później, najpierw trzeba było wiedzieć, gdzie fizycznie znajduje się zeszyt.
Librus rozwiązywał część problemów szkolnych, ale nie wszystkie. Na treningach pojawiały się też osoby spoza szkoły, których obecności nie mogłem wpisać w Librusie, a nadal potrzebowałem ich danych do statystyk.
Jeszcze większy problem pojawił się przy grupie licealnej, w której byli zawodnicy z różnych roczników — od siódmej klasy podstawówki do trzeciej klasy liceum. W praktyce oznaczało to wpisywanie danych w różnych miejscach, w różnych tabelach i w różnych kontekstach. To było po prostu irytujące i zabierało masę czasu.
Po co właściwie zbierać takie dane
Obecność nie była zbierana tylko po to, żeby mieć tabelkę. Dane o frekwencji pomagały sprawdzać zaangażowanie zawodników i dawały konkretne argumenty w rozmowach z rodzicami.
To było ważne na przykład wtedy, gdy trzeba było wyjaśnić, dlaczego dany zawodnik jedzie na Mistrzostwa Polski albo dlaczego nie zostaje zabrany. Jeżeli decyzja opiera się tylko na wrażeniu trenera, łatwo wejść w dyskusję. Jeżeli można pokazać regularność pracy i frekwencję z dłuższego okresu, rozmowa wygląda inaczej.
Na tamtym etapie nie była to jeszcze pełna analiza treningowa. To był raczej pierwszy krok: uporządkowanie podstawowych danych i sprawienie, żeby można było im zaufać.
Pierwsza automatyzacja
Pierwsza wersja była ręcznie przygotowywanym arkuszem, ale już z prostymi formułami. Później rozwiązanie zaczęło ewoluować: pojawiły się osobne tabele tygodniowe, walidacja wpisywanych danych, zabezpieczenia przed zmianą kluczowych elementów i automatyczne tworzenie nowych arkuszy.
Docelowo arkusze tworzyły się same w nocy z niedzieli na poniedziałek. Poprzednie karty były ukrywane, dzięki czemu łatwiej było znaleźć aktualny tydzień. Dane były walidowane, zakresy chronione, a trenerzy nie musieli co tydzień zaczynać od porządkowania pliku.
Raz w tygodniu powstawał raport tygodniowy, a raz w miesiącu raport podsumowujący. Raporty były wysyłane mailowo z Google Apps Script do trenerów oraz trenerki koordynatorki.
Co to realnie ułatwiło
Największą zmianą nie było samo liczenie procentów. Największą zmianą było uporządkowanie procesu.
Automatyzacja pomagała w kilku konkretnych rzeczach:
- tworzeniu nowych arkuszy tygodniowych,
- ustawianiu dat treningów,
- pilnowaniu poprawnego formatu danych,
- ochronie formuł i kluczowych zakresów,
- ukrywaniu starych albo niepotrzebnych kart,
- liczeniu frekwencji zawodników i całych grup,
- przygotowywaniu raportów tygodniowych i miesięcznych,
- wysyłaniu podsumowań do odpowiednich osób.
Dzięki temu trener mógł skupić się na wpisaniu danych treningowych, a nie na pilnowaniu, czy arkusz znowu trzeba skopiować, sformatować i poprawić.
Ewolucja: od obecności do kilometrażu
Z czasem zmienił się też sam charakter danych. Kiedy Librus wszedł na zajęcia na basenie, część informacji o obecności można było obsłużyć w systemie szkolnym. Wtedy arkusze zaczęły pełnić inną rolę — zamiast samej obecności zaczęliśmy wpisywać kilometraż, czyli dane, których Librus nie był w stanie dobrze obsłużyć.
To pokazuje ważną rzecz: dobra automatyzacja nie musi być wieczna w jednej formie. Może zmieniać się razem z procesem. Najpierw rozwiązuje problem obecności, później zaczyna wspierać analizę wykonanej pracy.
Co będzie dalej
Ten wpis jest początkiem serii o automatyzacji obecności. W kolejnych częściach pokażę, jak można było podejść do budowy takiego rozwiązania krok po kroku: od prostego arkusza, przez strukturę danych, walidację, automatyczne tworzenie tygodni, aż po raporty wysyłane z Google Apps Script.
W następnej części przejdziemy do struktury arkusza: zawodników, grup, tygodni, dat treningów i sposobu oznaczania obecności.