Isipin mo kung saan ka talaga nagtatrabaho.
Isang basement na may concrete na foundation at walang bintana. Isang bagong construction na may steel studs, sheathing at walang service hookups. Isang property sa probinsya na dalawampung minuto pa mula sa huling tower. Isang mechanical room sa gitna ng isang malaking commercial na palapag. Isang basement parking.
Ngayon, isipin mo naman kung saan nangyayari ang mga demo ng software: sa opisina, may Wi-Fi.
Ito ang puwang na nagpapabigo sa field software sa paraang mahirap ipaliwanag. Hindi naman mabagal o masama ang disenyo ng app. Gumagana ito nang perpekto sa driveway at titigil sa basement — kung saan mo mismo ito kailangan. At bihirang tapat ang pagbagsak: karaniwan, umiikot lang ang spinner, o isang tahimik na pag-save na hindi naman talaga nag-save, o isang form na binubura ang na-type mo kapag umatras ka.
Ang mga paraan ng pagbagsak, sa detalye
Hindi iisang problema ang "walang koneksyon." Ilang problema ito, at magkakaiba ang paraan ng pagsira nila sa software.
Walang signal, ganap. Ang malinis na kaso. Alam ng mahusay na app na offline ito at kumikilos ito nang naaayon. Naha-handle ito nang maayos ng karamihan sa mga app dahil madali itong matukoy.
Isang bar, teknikal na konektado. Ito ang tunay na mapanira. Sinasabi ng device na may koneksyon, kaya sinusubukan ng app na abutin ang server, at nabibitin ang request. Apatnapung segundong spinner ang makukuha mo, tapos timeout — o mas masahol pa, isang request na kalahati lang ang natapos. Ang software na "may network ba?" lang ang tinitingnan, sa halip na "totoo bang natanggap ito?", ang pinakamalalang bumabagsak dito.
Signal na dumarating at nawawala. Apat na beses kang naglalakad mula driveway papuntang basement sa isang araw. Bawat paglipat ay pagkakataong maputol ang isang sync sa gitna.
Konektado, pero mabagal. Siksikan ang mga tower sa probinsya pagsapit ng alas-4 ng hapon. Teknikal na gumagana ang lahat, pero sa bilis na magpapatigil sa iyo sa paggamit nito.
Ang app na tapat na offline-capable ay kailangang kayanin ang apat na ito. Sa app na ang una lang ang kaya nitong harapin, mawawala pa rin ang gawa mo.

Ano talaga ang ibig sabihin ng "gumagana offline"?
Maluwag ang paggamit sa pariralang iyan. May makabuluhang pagsubok, at may apat itong bahagi.
Gumagana ang pagbabasa. Kaya mong buksan ang isang trabaho at makita ang address, ang scope, ang numero ng telepono ng kliyente at ang mga litrato kahapon nang walang kahit anong koneksyon. Ibig sabihin nito, talagang naka-store sa device ang data, hindi lang basta na-cache kung kailan nagkataon.
Gumagana ang pagsusulat, at matibay ito. Puwede kang magdagdag ng note, mag-log ng oras, magtala ng gastos, kumuha ng litrato. At kung mamatay ang telepono, sapilitang isara ang app, o maubos ang baterya sa lamig, nandoon pa rin ang gawang iyon pagbalik nito. Ang nasa memory lang ay hindi naka-save.
Awtomatiko at hindi nakikita ang sync. Kapag bumalik ang signal, umaakyat nang kusa ang lahat ng naka-queue. Hindi mo dapat kailangang alalahanin pang pindutin ang sync button, dahil ang isang beses na makalimutan mo iyon ang mismong beses na mahalaga ito.
Tapat na hinaharap ang mga conflict. Dalawang tao ang nag-edit ng iisang trabaho habang parehong offline. Natutukoy ito ng magandang software at sinasabi nito sa iyo. Ang masamang software naman ay tahimik na pinipili ang isa sa dalawa, at malalaman mo lang pagkalipas ng ilang linggo na may nawawalang note.
Ang huling puntong iyon ang pinakamadaling malaktawan, at ito ang pagkakaiba ng app na offline-tolerant at ng app na offline-first. Para matukoy ang conflict, kailangang subaybayan ng app ang bersyon ng bawat record at ihambing ang mga ito habang paakyat pabalik sa server. Tunay itong engineering work na walang nakikitang feature na maipapakita, at iyon mismo ang dahilan kung bakit madalas hindi ito ginagawa.
Bakit may sariling talata ang mga litrato
Ang mga litrato ang pinakamahirap na offline case sa field software, at ito rin ang pinakakailangang kunan ng mga contractor sa site: ang pinsalang naroon na bago pa magsimula, ang kondisyon sa likod ng dingding, ang natapos na trabaho, ang reading ng metro, ang isang delivery.
Mahirap ito dahil malalaki ang mga litrato. Ang mga full-resolution na litrato ng isang trabaho ay umaabot sa sampu-sampung megabytes. Sa isang bar, mabibigo ang upload na iyon. Paulit-ulit. Ang app na tumatrato sa litrato gaya ng kahit anong ibang record ay gagawa ng isa sa dalawa: hihinto ito habang naghihintay ng upload, o basta ilalaglag na lang ito.
Ito ang dapat mangyari sa halip: nase-save agad ang litrato sa device at nakakabit ito sa trabaho, at hiwalay na background job ang upload na sumusubok ulit — kahit isara at buksan ang app, at kahit ilang araw pa kung kailangan. Kailangang magamit ang litrato sa app sa mismong sandaling makuha ito, nakaabot man ito sa server o hindi kailanman.
Ang pagbagsak na dapat bantayan ay ang app na nagpapakita ng litrato sa device pero tahimik na hindi ito kailanman ini-upload. Mukhang tama ang lahat hanggang sa buksan mo ang trabaho sa laptop, o mawala ang telepono, at malaman mong lokal lang pala nanatili ang mga litrato.

Ano ang gastos kapag wala ito?
Maliit at pare-pareho ang nakikitang gastos: ilang minutong nasasayang sa bawat pangyayari, isang lakad papuntang driveway para makakuha ng bar.
Nasa ugali ang tunay na gastos. Matapos mapaso nang dalawang beses, hihinto na ang mga tao sa pagtitiwala sa app habang nasa site. Babalik sila sa pagsulat ng oras sa piraso ng papel at pagpasok nito tuwing Biyernes ng gabi, sa pagkuha ng litrato ng resibo papunta sa camera roll na hindi naman naaayos kailanman, at sa pagsasaulo na lang ng totoong iskedyul. Naka-install pa rin ang software at binabayaran pa rin, at umaandar na naman ang negosyo sa memorya lang.
Sa sandaling mangyari iyon, unti-unting bumabagsak ang lahat ng kasunod nito. Hindi na gumagana ang job costing dahil hindi na nakakabit ang mga gastos sa mga trabaho. Naaantala ang invoicing dahil walang sigurado kung tapos na ang trabaho. Nakasalalay ang halaga ng buong system sa pagkuha ng data sa mismong sandali ng trabaho, at ang pagbagsak kapag offline ang sumisira niyon.
Paano mo susubukan ito bago magpasya?
Hindi mo malalaman sa listahan ng feature; lahat naman ay nagsusulat ng "gumagana offline." Subukan mo ito, sa loob ng humigit-kumulang sampung minuto:
- Ilagay ang telepono sa airplane mode.
- Buksan ang isang trabahong hindi mo pa nabubuksan kamakailan. Buo ba itong nag-load, kasama ang mga litrato?
- Magdagdag ng note, mag-log ng oras, magtala ng gastos, kumuha ng tatlong litrato.
- Sapilitang isara ang app. Buksan mo ulit. Nandoon pa ba ang lahat?
- Ibalik ang koneksyon. Kusa bang nag-sync ang lahat, nang hindi mo pinipindot ang kahit ano?
- Pagkatapos, ang tunay na pagsubok: i-on ang Wi-Fi pero itutok ito sa network na walang internet, para sabihin ng telepono na may koneksyon na hindi naman gumagana. Ulitin ang hakbang 3. Maraming app na pumapasa sa airplane mode ang bumabagsak dito.
Kung nakaligtas ito sa lahat ng anim, ginawa ito ng mga taong nakapasok na sa basement.
Sadyang ganito ginawa ang Zeus: may buong lokal na database ang app sa loob ng device, kaya nababasa ang mga trabaho, kliyente at presyo kahit walang koneksyon, at ang anumang ipinasok mo ay nasusulat muna nang lokal bago mag-sync pagbalik ng signal. Nase-save agad ang mga litrato sa device at, sa mga planong may kasamang photo backup, ina-upload ang mga ito sa background nang may retries — may opsyong sa Wi-Fi lang mag-upload, para hindi kainin ng isang araw na litrato ang data plan. Ang magkakasalungat na edit mula sa dalawang device ay natutukoy sa halip na tahimik na mapalitan, at nilalagyan ng marka sa sync indicator para malutas mo.
Mga madalas itanong
Hindi ba malaki ang space na kinakain ng pag-store ng lahat sa telepono?
Maliliit lang ang mga text record: ilang megabytes lang ang libu-libong trabaho, kliyente, at line item. Ang mga litrato lang ang talagang kumakain ng space, kaya karaniwang hiwalay itong pinamamahalaan, at nasa cloud na ang full-resolution na orihinal sa sandaling ma-upload ito.
Ligtas ba ang data sa telepono kung mawala o manakaw ito?
Depende ito sa app, at karapat-dapat itong itanong nang diretsahan. Ang dapat hanapin ay ang encryption ng lokal na database, at isang lock sa app mismo sa halip na umasa lang sa lock screen ng telepono. Ini-encrypt ng Zeus ang lokal na database nito at nag-aalok ito ng opsyonal na app lock na gumagamit ng biometrics o PIN ng device mo.
Ano ang mangyayari kung dalawang crew member ang mag-edit ng iisang trabaho habang offline?
Sa mahusay na system, natutukoy ang conflict kapag nag-sync ang ikalawang device, at ipinapakita ito sa isang tao para lutasin. Mag-ingat sa anumang app na nangangakong hindi ito mangyayari kailanman: last-write-wins ang karaniwang implementasyon, at ang ibig sabihin niyon, may nawalang gawa ng isang tao nang walang sinasabihan.
Kailangan ko bang mag-sync nang manwal bago umalis papunta sa trabaho?
Hindi mo dapat kailangang gawin iyon, at senyales ng problema kung kailangan. Dapat tuluy-tuloy na nagaganap ang sync sa background sa tuwing may signal.



