Case study #1 - System rejestracji czasu dla freelancera - Coda.io
Analiza aktualnej sytuacji:
Miałem przyjemność tworzyć system do rejestracji czasu pracy dla Tomasza – Grafika, pracującego w branży GAMEDEV.
Tomek, zgłosił się do mnie posiadając narzędzie w postaci “excel + notatnik”. Taki zestaw wymagał od niego używania zewnętrznych programów do liczenia czasu poświęconego na realizacje zadań. Na zakończenie każdego miesiąca Tomasz robił podsumowanie zarejestrowanych czasów i przepisywał je do osobnego arkusza, aby utworzyć PDF zawierający informacje o zadaniach i sumie czasu dla całego miesiąca.
Problemy jakie chcemy rozwiązać wprowadzając nowe narzędzie to:
- Wyeliminowanie zewnętrznego stopera
- Wyeliminowanie konieczności tworzenia nowych arkuszy każdego miesiąca. Całkowite wyeliminowanie excela
- Ułatwienie generowania raportów
- Ułatwienie rozpoznania aktualnego obłożenia
W trakcie rozmowy z Tomkiem ustaliliśmy założenia projektu: Prosty system, który będzie maksymalnie intuicyjny. Jednocześnie muszę przewidzieć w tworzonym narzędziu możliwość obsługi kilku różnych projektów/zleceniodawców oraz generowanie dla nich raportów do rozliczenia czasu pracy. Narzędzie będzie wykorzystywane również do planowania zadań w osobistych projektach Tomka.
Przebieg projektu:
Zaczynam od zdefiniowania dokumentu z tabelą dla przechowywania infomracji o aktualnie obsługianych zleceniodawcach. W tabeli umieszczam podstawowe dane do komunikacji z zlecającym/klientem, uwzględniając, że tych podmiotów w przyszłości może być kilkanaście/kilkadziesiąt.
Umieszenie w tym miejscu danych jest ważnie nie tylko z powodu trzymania w jednym miejscu takich informacji. Jest to ważne również dlatego, że umożliwi późniejsze automatyzację przy przy wysyłaniu cyklicznych raportów.

Umieszenie w tym miejscu danych jest ważnie nie tylko z powodu trzymania w jednym miejscu takich informacji. Jest to ważne również dlatego, że umożliwi późniejsze automatyzację przy przy wysyłaniu cyklicznych raportów.
Kolejny dokument będzie służył do obsługi aktualnie otwartych zadań. Widok podzieliłem na dwie części. W pierwszej umieszczam tabelę, która wyświetla tylko aktualnie otwarte zadania oraz te, które rozpoczną się maksymalnie w kolejnych trzydziestu dniach. Ponieważ całość ma być maksymalnie prosta, nie umieszczam tutaj formularza dla dodawania nowych zadań. Nowe pozycje będą umieszczane bezpośrednio w tabeli wszystkich zadań poprzez dodanie nowego wiersza. Aby utworzyć nowe zadanie, trzeba będzie uzupełnić:
- Nazwa zadania – dowolny ciąg znaków
- Zleceniodawca – to pole wyboru powiązane z tabelą zdefiniowaną w poprzednim dokumencie. Tylko firmy zdefiniowane w tabeli “Zleceniodawcy” są tutaj możliwe do wyboru
- Rejestruj czas – przycisk “Start” tworzy nowy zapis w ukrytej kolumnie z datą i godziną jego wciśnięcia. Przycisk staje się nieaktywny jeśli jakiekolwiek zadanie ma uruchomiony stoper. Nie można rejestrować czasu na dwóch zadaniach jednocześnie
- Aktualny stoper – po wciśnięciu przycisku “Start” w tej kolumnie widoczny jest stoper pokazujący aktualnie naliczany czas.
- Zatrzymaj czas – przycisk “Stop” zatrzymuje stoper i przenosi informacje do tabeli rejestru czasu otwartych zadań (tj. poniżej). Przycisk jest aktywny tylko dla uruchomionego stopera
- Start zadania – Uwzględniam, że część zadań otwartych może być zaplanowana do wykonania w przyszłości dlatego możliwość ustalenia zaplanowanego terminu startu. W tej tabeli wyświetlać będą się pozycje, których termin startu jest maksymalnie 30 dni do przodu. Pozostałe będą ukryte.
- Termin – daje możliwość zdefiniowania ustalonego terminu z zleceniodawcą. Tabela sortuje wiersze po tej kolumnie, wyświetlając te, które mają najbliżej do terminu oddania. Jeśli zadanie jest po ustalonym terminie, będzie podświetlać się na lekko czerwony kolor alarmując przekroczenie terminu.
- Cel czasowy – ręcznie definiowana wartości czasowa, która jest informacją o budżecie danego zadania (jeśli zadanie ma ograniczenia czasowe)
- Suma czasu – automatycznie obliczana wartości sumy zarejestrowanych czasów dla każdego zadania znajdującego się w tej tabeli. Dla zadań o przekroczonym budżecie pojawia się wyróżnienie pomarańczowe w obszarze kolumny z czasem
- Zakończone – po zaznaczeniu checkboxa potwierdzamy wykonanie zadania i zostaje ono ukryte w tym widoku, tak aby całość reprezentowałą otwarte zadania
Poniżej wygląd tabeli w trakcie rejestracji czasu na jednym z zadań:
Dla poprawnego działania całości, tabela posiada kilka ukrytych kolumn. Kolumny są ukryte ponieważ ich działanie jest w 100% automatyczne:
- Start rejestracji – automatycznie uzupełniany czas wciśnięcia przycisku “Start”. Na tej informacji bazuje kolumna “Aktualny stoper”
- Przenieś czas – Przycisk wywołujący automatyzacje przeniesienia danych o zakończonym naliczaniu czasu do tabeli z rejestrem zapisów
- Czyść stoper – Przycisk wywołujący czyszczenie komórek z danych po przeniesieniu danych do rejestru
W drugiej części dokumentu umieszczam tabelę z rejestrem zapisów czasowych dotyczących otwartych zadań. Jeśli zadanie zostanie oznaczone jako “zakończone” w pierwszej tabeli “Lista zadań”, zniknie też z tabeli “Rejestracji czasu realizacji””. Tabela zawiera:
- Zadanie – to nazwa zadania automatycznie uzupełniania po naciśnięciu przycisku “Stop” znajdującego się w pierwszej tabeli. Wiersze w tej tabeli są grupowane po zadaniach, aby ułatwić przeglądanie ostanie rejestracje dla danego zadania.
- Start pracy – kolumna automatycznie uzupełniania datą i godziną, w której naciśnięty został przycisk “Start”. Po wartościach tej kolumny sortuje wiersze tej tabeli
- Koniec pracy – Automatycznie uzupełniania kolumna, ale jednym z założeń było utrzymanie możliwości ręcznej edycji daty zakończenia rejestrowania czasu. Dobrze zostawić taką opcję, aby uwzględnić możliwość nanoszenia korekty w przypadku np. braku wyłączenia stopera we właściwym momencie.
- Czas pracy – dla każdej pozycji liczony jest różnica czasu między startem, a końcem rejestrowanego czasu dla pozycji. Tutaj z dokładnością do 1 minuty
W kolejnym dokumencie umieszczam pełną historię rejestracji czasu. Grupuje względem miesiąca i ustawiam malejąco, tak aby najnowszy zapis był zawsze na górze tabeli. Tutaj znajduje się pełna historia bez żadnego filtrowania. Dokument na wypadek potrzeby weryfikacji czasów zadań, które były wykonywane w przeszłości.
Ostatnia zakładka to Generator raportów. Dla maksymalnego uproszczenia, ma tylko dwa pola, które należy wybrać, aby zobaczyć raport: Zleceniodawca oraz zakres dat. Tabela oraz wszystkie dane wraz z podsumowaniem generują się automatycznie.
Na koniec utworzę stronę startową całego narzędzia, aby już po uruchomieniu aplikacji widoczne były najważniejsze statystyki i linki.
Umieszczam tutaj informacje o przepracowanym czasie, wartości wypracowanego czasu, oraz harmonogram otwartych zadań
Umieszczam tutaj informacje o przepracowanym czasie, wartości wypracowanego czasu, oraz harmonogram otwartych zadań
Podsumowanie założeń projektowych:
- “Wyeliminowanie zewnętrznego stopera” – w 100%, poprzez utworzenie systemu rejestrującego czas wewnątrz dokumentu
- “Wyeliminowanie konieczności tworzenia nowych arkuszy każdego miesiąca. Całkowite wyeliminowanie excela” – teraz Tomasz porusza się po utworzonych kilku dokumentach i nie ma potrzeby generowania dodatkowych
- “Ułatwienie generowania raportów” – z poziomu jednej zakładki wybierany jest klient oraz zakres dat do raportu.
- “Ułatwienie rozpoznania aktualnego obłożenia” – na utworzonym dashbordzie widoczny jest harmonogram przedstawiający ilość otwartych zadań w linii czasu
- “Prosty system, który będzie maksymalnie intuicyjny.” – dla uzyskania maksymalnej prostoty, widok wszystkich zadań oraz wszystkich rejestrów czasowych umieściłem w osobnych widokach, aby nie trzeba było manewrować filtrami na jednej tabeli.
