Pomyśl, gdzie naprawdę pracujesz.
Piwnica z betonowym fundamentem i bez okien. Nowa budowa: stalowe profile, poszycie, żadnych podłączonych mediów. Dom na wsi, dwadzieścia minut za ostatnim masztem. Maszynownia w środku wielkiego piętra biurowca. Parking podziemny.
Teraz pomyśl, gdzie odbywają się prezentacje oprogramowania: w biurze, na Wi-Fi.
To właśnie ta różnica sprawia, że oprogramowanie terenowe potrafi wkurzać w sposób trudny do nazwania. Aplikacja nie jest wolna ani źle zaprojektowana. Działa idealnie na podjeździe i przestaje działać w piwnicy, czyli dokładnie tam, gdzie była potrzebna. A to, jak zawodzi, rzadko jest uczciwe: zwykle wygląda to jak kręcące się kółko, zapis, który po cichu nic nie zapisał, albo formularz, który kasuje wpisane dane, kiedy się z niego cofasz.
Jak dokładnie to zawodzi
„Brak połączenia” to nie jeden problem. To kilka problemów i każdy psuje oprogramowanie inaczej.
Kompletny brak zasięgu. Przypadek najprostszy. Dobrze zbudowana aplikacja wie, że jest offline, i tak się zachowuje. Większość aplikacji radzi sobie z tym przyzwoicie, bo to łatwo wykryć.
Jedna kreska, formalnie jest połączenie. Ten naprawdę groźny. Telefon zgłasza połączenie, więc aplikacja próbuje dobić się do serwera, a żądanie wisi. Dostajesz kręcące się kółko przez czterdzieści sekund, a potem przekroczenie limitu czasu. Albo gorzej: żądanie, które zrealizowało się w połowie. Oprogramowanie, które sprawdza tylko „czy jest sieć?”, zamiast „czy to się faktycznie udało?”, zawodzi tu najmocniej.
Zasięg, który raz jest, raz go nie ma. Chodzisz z podjazdu do piwnicy cztery razy dziennie. Przy każdym takim przejściu synchronizacja może się urwać w połowie.
Połączenie jest, ale wolne. Zatłoczone maszty na wsi o 16:00. Wszystko formalnie działa, tylko w tempie, przy którym po prostu przestajesz z tego korzystać.
Aplikacja, która uczciwie działa offline, musi ogarnąć wszystkie cztery przypadki. Taka, która ogarnia tylko pierwszy, i tak zgubi Twoją pracę.

Co naprawdę musi znaczyć „działa offline”?
Tego zwrotu używa się dość swobodnie. Jest jednak sensowny test i ma cztery części.
Odczyt działa. Możesz otworzyć zlecenie, zobaczyć adres, zakres prac, numer telefonu klienta i wczorajsze zdjęcia bez żadnego połączenia. To znaczy, że dane naprawdę siedzą na urządzeniu, a nie są buforowane przy okazji.
Zapis działa i jest trwały. Możesz dodać notatkę, wpisać godziny, zapisać wydatek, zrobić zdjęcia. A jeśli telefon się wyłączy, aplikacja zostanie ubita na siłę albo bateria padnie na mrozie – ta praca wciąż tam będzie, kiedy telefon wróci do życia. Trzymanie czegoś w pamięci to jeszcze nie zapis.
Synchronizacja jest automatyczna i niewidoczna. Kiedy zasięg wraca, wszystko z kolejki wychodzi samo. Nigdy nie powinno być tak, że musisz pamiętać o wciśnięciu przycisku synchronizacji, bo ten jeden raz, kiedy zapomnisz, będzie akurat tym, w którym to miało znaczenie.
Konflikty są obsługiwane uczciwie. Dwie osoby edytowały to samo zlecenie i obie były offline. Dobre oprogramowanie to wykrywa i mówi o tym. Złe po cichu zostawia jedną wersję, a Ty dowiadujesz się kilka tygodni później, że notatka zniknęła.
Ten ostatni punkt najłatwiej pominąć i to on odróżnia aplikację, która offline toleruje, od takiej, która jest na offline zbudowana od podstaw. Żeby wykryć konflikt, aplikacja musi śledzić wersje każdego rekordu i porównywać je przy powrocie zasięgu. To prawdziwa robota inżynierska, po której nie zostaje żadna widoczna funkcja do pokazania – i właśnie dlatego często nikt jej nie robi.
Dlaczego zdjęcia zasługują na osobny akapit
Zdjęcia to najtrudniejszy przypadek offline w oprogramowaniu terenowym, a jednocześnie to, co fachowcy najbardziej muszą udokumentować na budowie: uszkodzenia zastane przed rozpoczęciem prac, to, co siedzi za ścianą, skończona robota, odczyt licznika, dostawa.
Są trudne, bo są duże. Zdjęcia z jednego zlecenia w pełnej rozdzielczości to dziesiątki megabajtów. Na jednej kresce zasięgu takie wysyłanie się nie uda. I to raz za razem. Aplikacja, która traktuje zdjęcie jak każdy inny rekord, albo zablokuje się w oczekiwaniu na wysłanie, albo je zgubi.
Zamiast tego musi być tak: zdjęcie od razu zapisuje się na urządzeniu i podpina pod zlecenie, a wysyłka to osobne zadanie w tle, które ponawia próby – także po restarcie aplikacji i przez kolejne dni, jeśli trzeba. Zdjęcie musi być użyteczne w aplikacji od razu po zrobieniu, niezależnie od tego, czy dotarło już na serwer.
Uważaj na aplikację, która pokazuje zdjęcie na urządzeniu, ale po cichu nigdy go nie wysyła. Wszystko wygląda poprawnie, dopóki nie otworzysz zlecenia na laptopie albo dopóki telefon się nie zgubi – a zdjęcia były wyłącznie lokalne.

Ile to kosztuje, kiedy tego brakuje
Widoczny koszt jest mały i stały: kilka minut straconych przy każdym takim zdarzeniu, spacer na podjazd po jedną kreskę.
Prawdziwy koszt bierze się z tego, jak zmienia się zachowanie ludzi. Kiedy dwa razy się na tym przejadą, przestają ufać aplikacji na budowie. Wracają do zapisywania godzin na kawałku kartki i wklepywania ich w piątek wieczorem, do wrzucania zdjęć paragonów do galerii w telefonie, której nikt nigdy nie porządkuje, do trzymania prawdziwego harmonogramu w głowie. Oprogramowanie wciąż jest zainstalowane i wciąż opłacone, a firma znów działa na pamięci.
Kiedy już do tego dojdzie, sypie się wszystko, co jest dalej. Kalkulacja kosztów zlecenia przestaje działać, bo koszty nigdy nie zostają przypisane do zleceń. Fakturowanie się opóźnia, bo nikt nie jest pewien, czy praca jest skończona. Wartość całego systemu stała na tym, że dane zapisuje się w chwili wykonywania pracy – a to właśnie psuje się, kiedy aplikacja nie radzi sobie bez zasięgu.
Jak to sprawdzić, zanim się zdecydujesz?
Z listy funkcji tego nie ocenisz; każdy pisze „działa offline”. Sprawdź to sam, zajmie jakieś dziesięć minut:
- Przełącz telefon w tryb samolotowy.
- Otwórz zlecenie, którego dawno nie otwierałeś. Czy ładuje się w całości, razem ze zdjęciami?
- Dodaj notatkę, wpisz godziny, zapisz wydatek, zrób trzy zdjęcia.
- Wymuś zamknięcie aplikacji. Otwórz ją ponownie. Czy wszystko wciąż tam jest?
- Przywróć połączenie. Czy wszystko synchronizuje się samo, bez naciskania czegokolwiek?
- Potem prawdziwy test: włącz Wi-Fi, ale połącz się z siecią bez internetu, żeby telefon zgłaszał połączenie, które nie działa. Powtórz krok 3. Wiele aplikacji, które przechodzą test z trybem samolotowym, na tym się wykłada.
Jeśli przetrwa wszystkie sześć, budowali ją ludzie, którzy sami stali w tej piwnicy.
Zeus jest zbudowany dokładnie w ten sposób, i to celowo. Aplikacja trzyma na urządzeniu pełną lokalną bazę danych, więc zlecenia, klienci i cennik są czytelne bez żadnego połączenia, a wszystko, co wprowadzasz, zapisuje się najpierw lokalnie i synchronizuje, kiedy wraca zasięg. Zdjęcia trafiają na urządzenie natychmiast, a w planach z kopią zapasową zdjęć są wysyłane w tle z ponawianiem prób, z opcją wysyłki wyłącznie przez Wi-Fi, żeby cały dzień zdjęć nie zjadł Ci pakietu danych. Sprzeczne edycje z dwóch urządzeń są wykrywane, a nie po cichu nadpisywane. Zeus oznacza je na wskaźniku synchronizacji, żebyś mógł je rozstrzygnąć.
Najczęściej zadawane pytania
Czy trzymanie wszystkiego na telefonie nie zajmuje dużo miejsca?
Rekordy tekstowe są maleńkie: tysiące zleceń, klientów i pozycji cennika to raptem kilka megabajtów. Realnie miejsce zjadają tylko zdjęcia i dlatego zwykle zarządza się nimi osobno, a oryginały w pełnej rozdzielczości po wysłaniu trafiają do chmury.
Czy dane na telefonie są bezpieczne, jeśli telefon zginie albo zostanie skradziony?
To zależy od aplikacji i warto zapytać o to wprost. Zwróć uwagę na dwie rzeczy: szyfrowanie lokalnej bazy danych oraz blokadę samej aplikacji, a nie samo poleganie na blokadzie ekranu telefonu. Zeus szyfruje swoją lokalną bazę danych i ma opcjonalną blokadę aplikacji, która korzysta z biometrii albo kodu PIN Twojego urządzenia.
Co się dzieje, kiedy dwie osoby z ekipy edytują to samo zlecenie offline?
W dobrze zbudowanym systemie konflikt zostaje wykryty w momencie, gdy synchronizuje się drugie urządzenie, i trafia do człowieka, żeby go rozstrzygnął. Uważaj na każdą aplikację, która obiecuje, że to się nigdy nie zdarza: zwykle stoi za tym zasada „ostatni zapis wygrywa”, a to znaczy, że czyjaś praca zniknęła i nikt się o tym nie dowiedział.
Czy muszę synchronizować ręcznie przed wyjazdem na zlecenie?
Nie powinieneś, a jeśli musisz – to sygnał ostrzegawczy. Synchronizacja ma chodzić w tle bez przerwy, zawsze kiedy jest zasięg.





