현장 작업에 쓸 오프라인 작업 관리 앱은 어떤 것이 가장 좋을까요?
네트워크보다 휴대폰에 먼저 기록하는 앱입니다. 후보에 올린 앱은 비행기 모드에서 시험해 보세요. 할 일을 하나 추가하고, 고쳐 보고, 사진을 붙인 다음, 강제 종료했다가 다시 엽니다. 버튼이 회색으로 죽거나, 저장을 거부하거나, 다시 열었을 때 입력한 것이 사라진다면 그 앱은 읽은 것을 캐시해 둘 뿐 쓴 것을 저장하지는 않습니다.
수요일 오후 3시 15분, 궬프에 있는 단층집 마루 밑 공간입니다. 집주인은 세탁실을 위층으로 옮기고 싶어 하고, 사다리를 트럭에 다시 싣기 전에 적어 둘 만한 것이 네 가지 있습니다. 홈을 파면 안 되는 장선, 방향이 거꾸로 난 건조기 배기관, 아무도 표시해 두지 않은 차단 밸브, 그리고 퇴근길에 사 가야 할 엘보입니다. 휴대폰에는 신호가 한 칸 뜨더니 그마저 사라집니다.
그래서 네 가지는 영수증 뒷면에 적히거나, 음성 메모에 담기거나, 이미 다른 현장 두 곳을 붙들고 있는 머릿속으로 들어갑니다. 금요일이 되면 그중 세 가지가 살아남습니다. 나머지 하나가 하필 월요일에 고객이 물어보는 그것입니다.
기술직을 상대로 파는 앱은 거의 다 오프라인에서 작동한다고 말하고, 그래서 이 말은 이제 알려 주는 것이 거의 없습니다. 이 표현은 최소한 세 가지 서로 다른 동작을 가리키는데, 마루 밑 공간에서 쓸모 있는 것은 그중 하나뿐입니다. 셋을 가려내는 데는 10분쯤 걸리고, 1년치 작업 메모를 어딘가로 옮기기 전에 해 볼 만한 일입니다.
"오프라인에서 작동한다"는 말이 보통 뜻하는 것
가장 약한 쪽은 읽기 전용 캐시입니다. 어제 일정이 화면에 떠 있는 것은 신호가 있을 때 미리 받아 두었기 때문이고, 지하 주차장에 서서 주소를 떠올려야 할 때는 이것만으로도 정말 요긴합니다. 그러다 뭔가를 추가하려고 하면 버튼이 회색으로 죽어 있거나, 표시만 빙글빙글 돌거나, 연결되지 않았다는 빨간 띠가 뜹니다. 하루 일정을 볼 수는 있어도 고칠 수는 없습니다.
중간쯤 되는 쪽은 입력은 받아 두되 그것을 메모리에 담아 둡니다. 겉보기에는 잘된 것처럼 보입니다. 화면을 잠가도 남아 있고, 트럭까지 걸어가는 동안에도 대개 남아 있습니다. 못 견디는 것은 운영체제가 메모리를 확보하려고 앱을 닫아 버릴 때인데, 이 일은 묻지도 않고 벌어지고 아무것도 남기지 않습니다. 셋 중 가장 나쁜 쪽입니다. 무언가를 잃기 전까지 한 달 동안 믿게 만들어 놓기 때문입니다.
돈을 낼 값어치가 있는 쪽은 휴대폰 안의 데이터베이스에 직접 기록합니다. 저장을 누르는 순간 그 기록은 기기에 존재하고, 반대편에서 누가 듣고 있든 아니든 상관없으며, 업로드가 성공할 때까지 대기열이 그것을 붙들고 있습니다. 신호는 앱이 나중에 제 시간에 알아서 처리할 문제입니다. 비행기 모드 테스트가 찾는 동작이 바로 이것입니다.
10분짜리 비행기 모드 테스트
지금 쓰는 앱으로도 해 보고, 옮겨 갈까 생각 중인 앱으로도 해 보세요. 소파에 앉아 10분 쓰는 편이 마루 밑 공간에서 알게 되는 것보다 쌉니다.
- 비행기 모드를 켜세요. 약한 신호가 아니라 비행기 모드여야 앱이 무엇에 닿을 수 있는지가 분명해집니다.
- 새로 하나 만드세요. 작업이든, 작업에 딸린 할 일이든, 목요일 예약이든 좋습니다.
- 거기에 사진을 붙이고, 잃어버리면 짜증이 날 만큼 긴 메모를 적으세요.
- 오프라인이 되기 전부터 있던 것을 고쳐 보세요. 시간을 바꾸거나 할 일 하나를 완료로 표시하면 됩니다.
- 앱을 완전히 강제 종료했다가, 비행기 모드인 채로 다시 여세요. 방금 한 것이 전부 그대로 남아 있어야 합니다.
- 비행기 모드를 끄고 휴대폰을 내려놓은 뒤, 앱을 열지 않은 채로 2분 동안 자리를 비우세요. 그런 다음 다른 기기에서 보거나 같은 기록을 다시 열어, 업로드가 알아서 이뤄졌는지 확인하세요.
5단계를 통과하지 못하는 앱은 메모리 캐시이고 종잇조각처럼 다뤄야 합니다. 6단계를 통과하지 못하는 앱은 쓸 수는 있지만, 맞는 자리에서 앱을 열어야 한다는 것을 기억하고 있어야만 합니다. 그런 종류의 습관은 바쁜 철에 3주쯤 갑니다.
잊어버린 메모 하나의 실제 값
비싼 쪽은 절대 메모가 아닙니다. 화요일에 정해 놓고 어디에도 적어 두지 않은 부속 하나 때문에 자재상까지 되돌아가며 시작되는 목요일 아침입니다.

그 걸음을 정직하게 계산해 봅시다. 운전 45분에 카운터에서 25분이면 70분이고, 청구 요율이 시간당 95달러라면 아무도 내주지 않는 시간 약 111달러어치입니다. 연료비는 아직 빼고요. 한 달에 두 번이면 1년에 스물네 번, 대략 28시간, 2,660달러입니다. 이미 갖고 있던 정보를 다시 찾아오는 데 일주일치 일을 쓴 셈입니다.
더 조용한 숫자는 청구서에 끝내 오르지 못한 자재입니다. 현장으로 가는 길에 산 60달러짜리 부속을 트럭에서는 기억했다가 청구서를 쓸 때쯤 잊어버리는 일이 한 달에 네 번이면, 1년에 2,880달러를 남의 집에 내 돈으로 넣는 셈입니다. 계산이 잘 와닿지 않는다면 청구하지 못한 한 시간의 값에 자기 숫자를 넣어 보세요. 자기 요율에 놀라는 사람이 대부분입니다.
세 번째 비용은 운이 나쁜 해에만 모습을 드러냅니다. 캐나다 국세청(CRA)은 사업 기록을 그 기록이 관련된 마지막 과세연도가 끝난 때부터 6년 동안 보관하라고 요구하는데, 휴대폰 밖으로 한 번도 나온 적 없는 손상된 장선 사진은 기록이 아닙니다. 다시 찾을 수 없는 메모도 마찬가지입니다. 지하실에서 무엇을 합의했는지를 두고 고객과 다툴 때는 날짜가 찍힌 메모를 가진 쪽이 이깁니다.
대기열은 눈으로 볼 수 있어야 하는 부분입니다
로컬에 기록하는 앱이라도 결국은 그 일감을 넘겨야 하고, 두 번째 부류의 문제는 바로 그 인계 지점에 있습니다. 화면 하나를 열어 아직 서버에 닿지 않은 것을 볼 수 있어야 합니다. 빙글빙글 도는 표시가 아니라 목록이어야 합니다. 열한 건이 대기 중인 것은 괜찮습니다. 화요일부터 열한 건이 대기 중인 것은 월말이 아니라 화요일에 물어봐야 할 문제입니다.
두 사람이 같은 작업을 고치면 어떻게 될까요
지하실에서 작업 이름을 바꾸는 동안 사무실은 그 작업을 목요일로 옮깁니다. 두 수정 모두 진짜이고, 그중 하나가 나중에 도착했습니다. 나중에 닿은 쪽을 아무 말 없이 남기는 앱은 누군가의 작업을 조용히 되돌려 놓고, 그 사실을 몇 달 동안 아무도 모르는 경우도 있습니다. 멈춰 서서 물어보는 앱은 옳게 하고 있는 것입니다. 물어보는 것이 조금 성가시더라도 그렇습니다. 이것은 기술적인 세부 사항이라기보다 작업 자체를 굴려 나가는 일의 일부입니다.
Zeus가 맞물리는 지점
Zeus는 휴대폰 안의 데이터베이스에 먼저 기록하고 서버와는 그다음에 이야기합니다. 모든 기록은 신호가 없어도 성공하고 기기의 발신함에 쌓이는데, 이것이 남은 메모와 사라진 메모를 가르는 차이입니다. 휴대폰이 다시 네트워크를 찾으면 발신함은 알아서 비워집니다.
신호 없이 만들고 고칠 수 있는 범위는 앱의 한구석이 아니라 그 대부분입니다. 고객, 작업 현장, 작업, 작업에 딸린 할 일, 예약, 메모, 사진, 지출, 그리고 항목과 결제까지 딸린 청구서가 모두 그렇습니다. 대기열은 열어 볼 수 있는 화면이라, 아직 서버에 닿지 않은 것은 읽을 수 있는 목록으로 남습니다. 같은 기록에 대해 서버가 서로 어긋나는 수정본을 들고 돌아오면, 그것은 어느 쪽을 남길지 직접 고르는 충돌 화면으로 넘어갑니다.
휴대폰 안의 데이터베이스는 설치할 때 그 기기에서 생성한 키로 암호화됩니다. 신호가 없을 때 얇아지는 것은 주소 자동 완성 하나입니다. 추천 목록이 뜨지 않을 뿐, 손으로 입력한 주소는 그대로 저장됩니다. 앱이 다루는 나머지도 똑같이 움직입니다. 시작 규모는 비용이 들지 않고 소진되지도 않으며, 규모마다 무엇이 들어 있는지는 요금 안내 페이지에서 읽어 볼 수 있습니다.
다시 마루 밑 공간으로 돌아가면, 이 가운데 어느 것도 소프트웨어 취향의 문제가 아닙니다. 중요한 네 가지는 90초쯤 머릿속에 살아 있었고, 유일한 질문은 휴대폰이 그것을 받아 주느냐였습니다. 테스트는 10분이면 됩니다. 지금 쓰는 것으로 해도 되고 Zeus 앱으로 해도 됩니다.
자주 묻는 질문
오프라인 앱은 배터리를 더 먹거나 휴대폰을 꽉 채우지 않나요?
휴대폰에 기록하는 일 자체는 거의 아무것도 들지 않습니다. 용량 문제는 사진이고, 사진은 앱 안에 있든 사진첩에 있든 차지하는 자리가 같습니다. 확인할 것은 이미 업로드된 것을 보고 지울 수 있게 해 주는 앱인지입니다. 그래야 휴대폰이 꽉 차는 일이 작업 도중의 사고가 아니라 정비 거리로 남습니다.
문제가 되기 전까지 얼마나 오래 오프라인으로 있어도 되나요?
앱이 진짜로 로컬 우선이라면 며칠도 괜찮습니다. 제약은 시간이 아니라 다른 사람들입니다. 지하실에서 적은 것은 올라가기 전까지 사무실에 보이지 않으니, 일주일 동안 연락이 끊긴 팀은 데이터 문제이기 이전에 일정 문제입니다. 하루에 한 번 네트워크에 붙어 대기열을 확인하면 이 질문은 의미가 없어집니다.
동기화를 눌러야 한다는 걸 기억하고 있어야 하나요?
그럴 필요가 없어야 합니다. 로컬 우선 앱은 네트워크를 감지했을 때, 그리고 정해진 주기로 다시 한번 올려 보냅니다. 버튼을 누르는 것은 조바심 이상이어서는 안 됩니다. 판단 기준은 위 테스트의 6단계입니다. 와이파이에서 앱을 열기 전까지 아무것도 움직이지 않는다면, 그것은 8월에 잊어버릴 습관이고 8월은 하필 가장 바쁜 때입니다.
메모 앱에 카메라면 충분하지 않나요?
혼자서 한 현장만 다룬다면 솔직히 충분할 때도 있습니다. 충분하지 않아지는 지점은 적어 둔 것을 다른 사람이, 동업자든 사무실이든 견습생이든 봐야 할 때, 또는 반년 뒤에 청구서를 방어하려고 메모를 작업에 붙여 두어야 할 때입니다. 메모 앱의 메모에는 작업이 붙어 있지 않고, 그 차이가 전부입니다.




