Wróć do projektów

Wszyscy chcą wolne na święta, ale ktoś musi zostać na recepcji

Moja kierowniczka żonglowała Excelem, prośbami na WhatsAppie i recepcją, której nie dało się zamknąć na święta. Ja pracowałem za ladą. W jeden weekend zbudowałem darmową aplikację układającą zmiany, a zespół zaczął przynosić jej gotowe propozycje grafików zamiast kolejnych próśb.

5 min czytania
  • JavaScript
  • Projektowanie procesów
  • Planowanie zmian
  • Narzędzia wewnętrzne
  • Automatyzacja
UdostępnijXEmailFacebookWhatsApp

Byłem jednym z recepcjonistów. Nikt nie zatrudnił mnie do pisania oprogramowania, a przełożeni nie mieli pojęcia, że w ogóle potrafię. Jakoś nigdy nie zeszło na ten temat. Trudno o tym zagaić między meldowaniem kolejnych gości.

Był mniej więcej listopad 2025 roku. Stara ekipa odchodziła. Przychodzili nowi ludzie. Pojawiła się też nowa dyrektorka. Sporą część tego wszystkiego trzymała w ryzach jej prawa ręka, która pracowała w hotelu od dawna i znała go od podszewki.

Grafik też był na jej głowie. Osiem osób, jeden miesiąc i każde z nas chciało od niego czegoś zupełnie innego.

Każda zmiana była kolejną sprawą na jej głowie

Grafik żył w Excelu. Prośby żyły na WhatsAppie. Jak można się domyślić, żadni agenci AI nie synchronizowali nam jednego z drugim.

Ktoś chciał wolną sobotę. Ktoś wolał nocki. Ktoś odchodził, ktoś zaczynał, a zespół miał jakoś wdrażać nowych ludzi i jednocześnie obsługiwać recepcję. Na to wszystko nałożyły się święta.

Grafik układała sama, pewnie niewyspana i bliska wyrywania sobie włosów. Na zmianę czekało się godzinami, czasem dniami, i wcale jej się nie dziwię. Miała do ogarnięcia hotel, a pod koniec dnia też już ledwo starczało jej sił.

Widziałem, ile ją to kosztowało. I sam byłem jedną z osób, które siedziały i czekały na odpowiedź.

Wiedziałem, jak zbudować coś, co mogłoby pomóc. Więc to zrobiłem.

Nikt mi tego nie zlecił. Żadnego spotkania, prezentacji ani pytania, czy coś takiego by się przydało. Wziąłem sobotę i niedzielę, zbudowałem narzędzie i dałem je zespołowi za darmo.

Oprogramowanie ma pomagać ludziom. To byli ludzie, z którymi pracowałem. Problem miałem przed oczami.

Grafik musiał sprawdzić się w prawdziwym hotelu

To nie był pusty kalendarz z wpisanymi nazwiskami. Recepcja potrzebowała zmiany dziennej i nocnej, po dwanaście godzin każda, każdego dnia miesiąca. W święta też.

Ludzie mieli miesięczne limity godzin, preferencje i dni, w które nie mogli pracować. Jedni chcieli więcej nocek. Inni mogli pracować tylko w dzień. To nie są dwa sposoby powiedzenia tego samego. Aplikacja musiała rozróżniać te sytuacje.

Zbudowałem ją więc wokół decyzji, które już podejmowaliśmy:

  • dodaj wszystkich, z miesięcznym limitem godzin, preferencjami i dniami lub zmianami, w które nie mogą pracować
  • wybierz miesiąc i wygeneruj propozycję grafiku z obsadą dzienną i nocną
  • zaznacz urlopy, pozmieniaj przydziały ręcznie
  • zablokuj to, co już ustalone, i wygeneruj resztę jeszcze raz
  • sprawdź obsadę, godziny i ostrzeżenia, potem udostępnij grafik

Na blokadach zależało mi najbardziej. Można było zamrozić jedną komórkę, cały dzień albo cały miesiąc jednej osoby. Jeśli coś było już z kimś uzgodnione, ponowne generowanie nie powinno tego ot tak kasować, jakby ustalenia nigdy nie istniały.

Nikt nie chce dwa razy prowadzić tej samej kłótni.

Ułóż mi grafik, a potem pokaż, co wymaga decyzji

Dobre oprogramowanie powinno po prostu rozwiązywać problem. Zamiana komórek Excela na komórki w aplikacji, żeby dalej robić tę samą gimnastykę umysłową, nie jest pomocą.

Układaniem zajmował się więc generator. Próbował obsadzić dni i noce, wyrównać godziny, uwzględnić preferencje i nie fundować nikomu morderczej serii zmian. Uzgodnione przydziały zostawały zablokowane, a on układał resztę. Bez AI. Za myślenie odpowiadały deterministyczne algorytmy matematyczne.

Rozróżniał „wolę nocki” od „mogę pracować tylko w nocy”. To ma znaczenie. Wrzucenie obu do jednego worka to prosty sposób, żeby ktoś po cichu zaczął mieć do ciebie żal. Jeśli twardy limit godzin nie pozwalał obsadzić zmiany, zostawiał ją pustą zamiast dopisywać komuś godziny. Kiedy naprawdę nie było alternatywy, niektóre ograniczenia można było naruszyć, ale z ostrzeżeniem do sprawdzenia przez człowieka przed udostępnieniem grafiku.

O to chodziło. Program może układać zmiany. Nie powinien halucynować dodatkowego recepcjonisty, kiedy obecny zespół nie wystarcza na cały miesiąc. Dostajesz propozycję, a jeśli nie uda się znaleźć idealnego rozwiązania, widzisz, co jest nie tak i co trzeba poprawić.

Wszystko aktualizowało się podczas edycji. Zostawiasz dzień albo noc bez obsady i od razu to widzisz. Tak samo nockę, po której ta sama osoba ma dniówkę, zbyt wiele zmian z rzędu albo przydział w dniu oznaczonym jako niedostępny.

Każdy miał podsumowanie godzin, dniówek, nocek, urlopów i nadgodzin. Było widać, kto ma za dużo pracy, komu brakuje godzin i gdzie miesiąc się nie spina.

Chciałem, żeby problemy były widoczne, kiedy ktoś jeszcze edytuje grafik. Zauważenie nieobsadzonej nocki na ekranie, z kawą w ręku, jest przyjemniejsze niż odkrycie jej, gdy nikt nie przyjdzie do pracy.

Aplikacja nadal jest ✨ darmowa i dostępna dla każdego ✨. Jest po polsku i zakłada ten sam system dwunastogodzinnych zmian dziennych i nocnych. Dodaj swoich ludzi i spróbuj. Jest też instrukcja.

Zespół mógł przyjść z propozycją zamiast kolejnej prośby

Na tej zmianie zależało mi najbardziej.

Wcześniej wysyłałeś kierowniczce prośbę i czekałeś, aż dowiesz się, jak wygląda twój miesiąc. Z aplikacją mogłeś usiąść i spróbować ułożyć cały grafik samemu. Dodać zespół, uwzględnić prośby wszystkich, wygenerować punkt wyjścia i poprawiać, aż wszystko się zepnie. A potem przynieść kierowniczce gotową propozycję do sprawdzenia zamiast kolejnego pytania, czy możesz mieć wolne 24 grudnia.

Nadal to ona decydowała. To się nie zmieniło. Po prostu nie była już jedyną osobą, która wszystko układała.

Był też efekt uboczny, którego skali się nie spodziewałem: widziałeś, co twoja prośba robi z grafikiem pozostałych. Dostać upragniony dzień wolny to jedno. Zobaczyć, że przez to ktoś inny bierze trzy niewygodne zmiany, to drugie. Cały miesiąc leżał przed tobą.

Ludzie przestali tylko dorzucać swój kawałek układanki. Zaczęli pomagać ją ułożyć.

Potrzebowaliśmy tego w ten weekend, nie za miesiąc

Celowo uprościłem całą konstrukcję. Bez backendu. Bez serwera bazy danych. Bez logowania. Aplikacja w przeglądarce, hostowana na GitHub Pages, z danymi zapisanymi lokalnie w przeglądarce.

Aplikacja jest publiczna, ale wpisane dane pracowników zostają na twoim urządzeniu. Każdy mógł przygotować własną propozycję bez konta i bez czekania, aż ktoś nada mu dostęp.

Eksport do PNG pozwala udostępnić lub wydrukować grafik. JSON zapisuje pracowników, ustawienia i grafik, żeby ktoś inny mógł go zaimportować albo zachować kopię. Tak przenosi się tu grafik między urządzeniami. Żadna wspólna przestrzeń online nie synchronizuje niczego po cichu w tle, bo nie ma takiego zaplecza.

Dzięki tym wyborom coś użytecznego mogło być gotowe w niedzielę wieczorem. Potrzebowaliśmy pomocy z następnym grafikiem, a nie projektu infrastrukturalnego.

Korzystałem z tego razem z ludźmi, dla których to zbudowałem

Zespół i kierownictwo używali aplikacji przez parę miesięcy, kiedy jeszcze pracowałem w hotelu.

Nie mam dla ciebie zgrabnego wyniku w stylu „zaoszczędzone X godzin miesięcznie”. Pamiętam za to ulgę mojej ekipy, kiedy korzystali z czegoś, co zbudowałem, żeby poradzić sobie z naszym wspólnym problemem. To było naprawdę dobre uczucie.

Czasem robisz coś po prostu dla samej frajdy. Mogłem pomóc, więc pomogłem. Patrzenie, jak ich dzień staje się trochę łatwiejszy, dawało mi więcej satysfakcji niż przypisywanie temu liczby.

Nie mogłem dać wszystkim wolnego na święta. Ale mogłem sprawić, żeby układanie grafiku było trochę mniejszym świątecznym horrorem :)