운전은 간접비입니다. 신호등 앞에 서 있는 시간에 돈을 주는 사람은 없으니까요. 그리고 나쁜 동선의 대부분은 전화가 온 순서대로 작업을 예약하기 때문에 생깁니다. 지리는 아무런 발언권도 갖지 못하는 것이죠. 하루 일정은 시간순이 아니라 지리적으로 짜야 합니다. 가까이 있는 방문지끼리 묶고, 도시를 두 번 가로지르는 대신 순환하는 동선으로 하루를 돌리세요. 다만 이 방법이 통하려면 모든 작업에 실제 부동산 주소와 정확한 소요 시간이 기록되어 있어야 하고, 실제로 이동 중일 때 고객에게 미리 알림을 보내면 그 가치는 한층 더 커집니다.

지난 화요일을 솔직히 되돌아봅시다.

서비스 콜 다섯 건이었습니다. 첫 번째는 북동쪽. 월요일 아침에 전화한 고객이었으니까요. 두 번째는 강 건너 남서쪽. 월요일 오후에 전화한 고객에게 생각할 겨를도 없이 "내일 10시쯤이요"라는 말이 튀어나왔기 때문입니다. 세 번째는 다시 북동쪽, 첫 번째 방문지에서 네 블록 떨어진 곳이었습니다. 네 번째는 시내. 다섯 번째는 다시 남서쪽, 두 번째 방문지에서 차로 12분 거리였습니다.

도시를 두 번 가로질렀고, 한 현장 바로 옆을 지나 다른 현장으로 향했고, 실제 작업량이 정당화하는 것보다 40분이나 늦게 퇴근했습니다. 그 동선은 아무도 계획하지 않았습니다. 전화가 울린 순서대로, 전화 한 통씩 저절로 짜인 것이었습니다.

소규모 팀의 하루는 대부분 이렇게 만들어지며, 그 비용이 정확히 얼마인지 따져볼 가치가 있습니다. 해결책은 거의 공짜나 다름없기 때문입니다.

이동 시간은 왜 돈이 될까요?

근무일의 매 시간은 세 가지 중 하나입니다. 청구되는 작업, 청구되는 작업을 따내는 작업(견적, 후속 연락), 또는 간접비입니다. 운전은 간접비입니다. 물론 필요한 간접비이긴 합니다. 작업은 내 소유지가 아니라 고객의 부동산에서 이루어지니까요. 하지만 어쨌든 간접비입니다. 신호등 앞에서 기다리는 시간에 돈을 주는 사람은 아무도 없습니다.

숫자로 환산해봅시다. 시간당 작업 요율이 95달러라면, 한 시간의 운전은 밴을 이동시키는 데 소모한 95달러어치의 역량입니다. 여기에 동선이 나쁜 하루가 더하는 추가 거리만큼의 연료비(예를 들어 18달러)와, 주행거리가 조용히 쌓아가는 차량 마모 비용까지 더해집니다. 팀원이 두 명이라면 인건비 쪽은 그대로 두 배가 됩니다. 둘 다 같은 밴에 타고 있으니까요.

불편한 진실은 이동 시간이 눈에 잘 띄지 않는다는 점입니다. 자재 배송이 늦어지는 것은 눈에 보이고 짜증스럽습니다. 하지만 피할 수 있었던 40분의 운전은 하루 동안 7분씩 나뉘어 흩어져 있고, 그 자체로 일처럼 느껴집니다. 움직이고 있고, 작업 사이에 있고, "이동 중"이니까요. 그러니 계산에 잡히지 않고, 계산되지 않으니 고쳐지지도 않습니다.

또 다른 비용은 더 눈에 덜 띄지만 실재합니다. 하루의 마지막 고객은 지친 나를 만나게 되고, 예상치 못한 일(고착된 밸브, 수다스러운 고객, 자재상 들르기)을 흡수했어야 할 여유 시간은 대신 도로 위에서 사라져버립니다.

작업당 이동 비용 계산기는 현장까지 가는 데 드는 비용을 작업당으로도, 1년 치로도 보여줍니다.

하루 일정은 왜 잘못된 순서로 잡힐까요?

일부러 앉아서 나쁜 동선을 고르는 시공업체는 없습니다. 나쁜 동선은 나름 합리적인 과정이 만들어내는 기본 결과물일 뿐입니다.

작업은 고객이 전화한 순서대로 예약됩니다. 캘린더는 전화가 온 시간순으로 채워지고, 지리는 어떤 발언권도 갖지 못합니다. 월요일 아침에 전화한 고객은 어디에 살든 오전 8시 자리를 차지합니다.

시간은 전화상으로 약속됩니다. "10시쯤이요"라는 말은 하기는 쉽고 물리기는 어렵습니다. 대략적인 시간 약속을 가진 고객이 세 명쯤 생기면, 누구도 지도를 들여다보기 전에 이미 순서가 굳어버립니다.

계획은 머릿속에만 존재합니다. 방문지가 다섯 곳이면 가능한 순서는 120가지입니다. 아침 6시 40분에 커피를 내리면서 120가지 순서를 머릿속으로 비교하는 사람은 없습니다. 그럴듯해 보이는 것 하나를 골라서 출발할 뿐입니다.

하루는 시작된 뒤에도 바뀝니다. 취소, 긴급 호출, 가지러 가야 할 부품 하나. 반쯤 짜둔 계획은 순식간에 낡은 것이 되고, 결국 빨간불 앞에서 다시 계획을 세우게 됩니다.

이 중 어느 것도 규율이 부족해서 벌어지는 일이 아닙니다. 동선의 순서가 결정이 아니라 부산물이 될 때 벌어지는 자연스러운 결과일 뿐입니다.

동선 순서를 바꾸면 실제로 얼마나 시간을 아낄 수 있을까요?

중형 도시에서 흔히 있을 법한 서비스 방문일을 예로 들어보겠습니다. 다섯 곳의 방문지가 실제 전화가 오는 방식대로 흩어져 있습니다.

전화가 온 순서대로 예약하면 하루는 이렇게 흘러갑니다. 작업장 → 북동쪽(14km) → 남서쪽(19km) → 다시 북동쪽(17km) → 시내(8km) → 다시 남서쪽(12km) → 작업장(11km). 총 81km이고, 도심 교통 상황을 감안하면 운전대를 잡고 있는 시간만 약 1시간 50분입니다.

순환 동선으로 재배열하면(북동쪽 두 곳을 함께 묶고, 그다음 시내, 그리고 돌아오는 길에 남서쪽 두 곳을 처리) 같은 다섯 개의 작업이 약 52km, 약 1시간 10분의 운전으로 끝납니다.

같은 고객, 같은 작업, 같은 밴을 그대로 두고서도 약 29km와 40분을 돌려받은 셈입니다. 그것도 특별히 나쁜 날이 아니었는데도요. 서비스 위주의 한 주를 이런 식으로 운영하면 차이는 두세 시간 정도로 벌어집니다. 이 정도면 작은 작업 하나를 더 처리하거나, 일주일에 두 번이 아니라 매일 저녁 식사 시간 전에 퇴근하기에 충분한 시간입니다.

이 예시의 핵심은 정확한 수치가 아닙니다. 사는 도시, 방문지, 교통 상황에 따라 결과는 달라질 것입니다. 핵심은 이 절감분이 오직 순서만 바꿔서 나온다는 점입니다. 아무도 더 빨리 운전하지 않았고, 어떤 작업도 줄어들지 않았고, 어떤 고객도 빠지지 않았습니다. 순전히 구조적인 낭비였고, 이것이야말로 소프트웨어가 제거하는 데 특히 뛰어난 종류의 낭비입니다.

주택가에 주차된 작업용 밴 뒤편에 공구를 싣는 기술자

오늘의 보드: 탭 한 번으로 순서를 바꾸는 방문지 목록

바로 이 역할을 하는 것이 Zeus 작업 보드의 일별 탭, 곧 오늘의 보드입니다. 작업 보드에는 세 가지 보기가 있습니다. 누가 무엇을 하는지 보여주는 배차 보드, 일주일 동안 작업이 어떻게 쌓이는지 보여주는 플래너, 그리고 일별 보기입니다. 오늘의 보드는 오늘의 방문지를 가져와, 아침 6시 40분에 머릿속으로 하던 일을 대신해줍니다. 방문지를 지도 위에 표시하고, 버튼 하나로 순서를 정리해줍니다. 실용적인 이야기 하나, 이건 정직하게 밝혀 둘 부분입니다. 작업 보드는 Pro 기능입니다. 작업 일정 관리 자체는 Free 요금제에 들어 있고, 세 가지 보드가 유료 요금제에서 더해지는 부분입니다.

작동 방식 자체보다 무엇을 대체하는지가 더 중요하니, 있는 그대로 정확히 설명하겠습니다.

모든 방문지는 이미 일정에 잡혀 있던 작업에서 그대로 가져옵니다. '동선 계획'을 위한 별도의 데이터 입력은 없습니다. 작업에는 부동산 주소가 담겨 있고, 오늘의 보드는 오늘 예정된 작업을 읽어서 그대로 배치합니다. 작업에 주소가 있으면 그 방문지는 지도 위에 나타납니다.

순서는 시간순이 아니라 최적화된 순서입니다. 버튼 하나로 오늘의 방문지가 누가 먼저 전화했는지가 아니라 지리를 기준으로 다시 정렬됩니다. 왔다 갔다 하는 버전이 아니라 순환하는 버전의 하루가 되는 것이죠. 정렬된 방문지 목록과 지도 위 핀으로 모두 확인할 수 있으므로, 어딘가 이상하게 느껴지는 순서가 있다면 두 번째로 강을 건널 때가 아니라 시동을 걸기 전에 눈에 들어옵니다.

도착 예정 시각은 낙관적인 추측이 아니라 현실적인 계산입니다. 각 방문지는 정해진 순서와 방문지 사이의 이동 시간을 반영해 실제로 도착할 법한 시각을 보여줍니다. 이 숫자 하나가 "10시쯤이요"와 실제로 지킬 수 있는 약속의 차이를 만듭니다. 스스로의 기대치도 함께 조정되기 때문에, 다섯 곳짜리 하루에 여섯 번째 방문지를 억지로 끼워 넣는 일도 줄어듭니다.

하루는 현실과 부딪혀도 무너지지 않습니다. 오전 8시 15분에 고객이 취소하거나 정오에 긴급 호출이 들어와도, 신호등 앞에서 휴대폰 키보드로 퍼즐을 다시 풀 필요가 없습니다. 취소된 방문지를 빼고 새 방문지를 추가한 뒤 다시 정렬 버튼을 누르면, 남은 일정이 합리적인 순서로 재배열됩니다.

실질적으로 바뀌는 것은 작지만 꾸준합니다. 이제 동선을 스스로 짜는 일 자체를 그만두게 됩니다. 아침 6시 40분에 캘린더를 노려보던 의식은, 오늘의 보드를 열어 순서를 한 번 훑어보고 그대로 출발하는 것으로 바뀝니다.

전화 없이도 전해지는 "가는 중입니다"

잘 짜인 서비스 하루의 나머지 절반은 고객이 실제로 경험하는 것이며, 업체에 대한 고객의 가장 큰 불만은 가격도, 심지어 품질도 아닙니다. 바로 침묵입니다. "오전 중으로 온다고 했는데"라는 말은 11시 15분쯤 되면 별점 1점짜리 기분으로 곪아버리고, 그 뒤 11시 20분에 잘못한 것 하나 없이 도착해도 이미 늦은 뒤입니다.

전통적인 해결책은 미리 전화하는 것인데, 좋은 습관이긴 하지만 업무가 몰리면 금세 무너집니다. 운전 중이고, 손은 이미 다른 일로 바쁘고, 번호는 어느 문자 대화방엔가 묻혀 있습니다.

Zeus는 메시징 서비스를 자처하지 않으면서도 이 습관을 동선 안에 녹여 넣습니다. 이 구분은 분명히 짚고 넘어갈 가치가 있습니다. 이제 막 출발하려는 방문지에서 '고객에게 알림' 기능을 누르면 메시지(고객 이름, 도착 예정 시각, 향하는 곳)가 자동으로 작성되어 휴대폰의 메시지 앱이나 메일 앱에 수신인과 함께 전달됩니다. 보내기는 직접 누릅니다. Zeus를 통해 자동으로 발송되는 것도, 스스로 나가는 것도 없습니다. 이 기능이 없애주는 것은 정작 습관을 무너뜨리는 부분, 즉 출발하려는 순간에 문장을 만들고 번호를 찾아 헤매는 일입니다. 창밖을 지켜보던 고객은 마음을 놓고, 잠깐 가게에 나갔던 고객은 서둘러 집으로 돌아옵니다. 하루 중 가장 불편한 부분이었던 불확실한 기다림을, 눈으로 확인할 수 있는 배송 추적 같은 느낌으로 바꿔놓은 셈입니다.

직접 문자를 보내거나 전화를 거는 쪽을 선호한다면, 정확한 문구는 크게 중요하지 않습니다. 하기만 하면 됩니다.

"안녕하세요, 배관 업체의 샘입니다. 지금 하던 작업을 마무리하고 그쪽으로 출발하려고 하는데, 11시 20분쯤 도착할 것 같아요. 통화한 이후로 달라진 점이 있을까요?"

마지막 질문은 그냥 넣는 말이 아닙니다. 대략 열 번 중 한 번은 대문 비밀번호, 개, "온 김에 이것도"처럼 진입로에 도착해서보다는 밴 안에서 미리 아는 편이 훨씬 나은 무언가가 드러납니다.

동선을 정직하게 만드는 입력값

최적화된 동선도 결국 아는 만큼만 정확합니다. 다음 세 가지 습관이 동선을 정직하게 유지해주며, 사실 어차피 해야 할 일들이기도 합니다.

작업에 실제 부동산 주소를 입력하세요. '헨더슨 씨 댁'이 아니라, 고객이 도시 반대편에 소유한 임대 부동산의 청구 주소도 아닙니다. 작업 주소는 밴이 실제로 향할 곳입니다. 이것만 정확하면 그 뒤로 이어지는 지도 핀, 순서, 도착 예정 시각 모두 저절로 정확해집니다.

작업 소요 시간을 정직하게 입력하세요. 사다리를 오르내리는 시간까지 합치면 실제로 90분이 걸리는 작업을 "필터 교체, 금방 끝나요"로 기록하면 그 뒤에 이어지는 모든 도착 예정 시각이 틀어집니다. 정밀할 필요는 없습니다. 다만 희망 사항으로 일정을 짜는 것만은 그만둬야 합니다.

정말로 고정된 것만 기준점으로 삼으세요. 오전 9시부터 11시까지만 작업을 허용하는 콘도, 출근 전에 문을 열어줘야 하는 고객처럼 진짜로 시간이 정해진 방문지가 있습니다. 이런 방문지가 기준점이 되어야 하고, 나머지 하루는 그 주변에서 유연하게 조정되어야 합니다. 흔히 저지르는 실수는 가볍게 던진 "10시쯤이요"라는 말까지 모두 기준점으로 취급하는 것입니다. 그러면 아무것도 움직일 수 없게 되고, 결국 이름만 다른 지그재그 동선으로 되돌아갑니다.

그리고 오늘의 보드는 오프라인 우선 앱의 일부이므로, 아침에 불러온 동선은 신호가 잡히지 않는 지하 주차장에서도 여전히 휴대폰에 남아 있습니다. 이 이야기는 이 블로그의 다른 글에서 자세히 다루고 있으니, 여기서는 신호가 사라져도 계획까지 함께 사라지지는 않는다는 점만 짚고 넘어가겠습니다.

동선이 알 수 없는 것들

현장 안내서라면 한계에 대해서도 정직해야 합니다. 그러니 분명히 말씀드리면, 동선 최적화는 방문지 순서를 잘 정리해줄 뿐 마음까지 읽지는 못합니다.

코왈스키 부인이 방문할 때마다 20분씩 이야기를 나눈다는 것도, 시내 방문지가 오후 3시 이후에는 주차가 안 된다는 것도, 동쪽 자재상 근처에서 늘 점심을 먹는다는 것도 모릅니다. 방금 다리를 막아버린 사고도 알지 못합니다. 거리는 도로가 아니라 직선거리로 계산하므로, 가까워 보이는 두 핀 사이에 강이나 철로가 가로놓여 있으면 겉보기엔 깔끔한 순서가 실제로는 더 나쁜 결과를 낳을 수 있습니다. 지도에서 위치를 찾을 수 없는 주소의 방문지는 아예 정렬되지 않고 목록 맨 끝으로 밀려나며, 주소를 수정하기 전까지 그 자리에 머뭅니다. 그리고 이따금씩 기하학적으로는 맞지만 사람의 눈으로 보면 틀린 순서를 제안하기도 합니다. 이를테면 지저분한 철거 현장을, 먼지 묻은 작업복 차림으로 이미 완성된 집을 지나가면 눈치챌 고객보다 먼저 배치하는 식으로요.

바로 이럴 때를 위해 내 판단이 필요한 것이며, 그래서 정렬된 목록은 확정된 결론이 아니라 언제든 뒤집을 수 있는 출발점입니다. 소프트웨어가 완벽한 하루를 설계해주는 것은 아닙니다. 진짜 이득은 무작위한 하루에서 시작해 불을 끄고 다니는 대신, 이미 괜찮은 하루에서 시작해 조정만 하면 된다는 데 있습니다. 10초짜리 검토가 매일 아침 10분짜리 머릿속 동선 짜기를 이깁니다. 언제나요.

자주 묻는 질문

하루에 방문지가 두세 곳뿐이어도 쓸모가 있을까요?

방문지가 적을수록 동선 최적화의 효과는 줄어듭니다. 방문지가 두 곳이면 가능한 순서도 두 가지뿐이니까요. 하지만 오늘의 보드의 나머지 기능들은 여전히 제 몫을 합니다. 현실적인 도착 예정 시각, 이동 중 알림, 그리고 캘린더와 문자 대화방과 기억 속에 흩어져 있던 주소와 작업 정보를 한곳에 모아주는 것까지요. 이 습관은 규모가 커져도 함께 성장합니다. 방문지가 여섯 곳으로 늘어난 팀도, 그날이 왔을 때 새로운 시스템을 새로 구축할 필요가 없습니다.

여러 날에 걸쳐 진행되는 작업은 어떤가요? 동선을 복잡하게 만들지 않나요?

여러 날에 걸친 작업은 플래너 보기에서 다룹니다. 그런 작업이 한 주를 어떻게 차지하는지 보여주는 화면이니까요. 오늘의 보드는 서비스 위주의 하루(짧은 방문지 여러 개)에서, 그리고 장기 작업이 몇 건의 부수적인 호출과 함께 캘린더에 섞여 있는 날에 가장 빛을 발합니다. 바로 이런 날이 동선 실수의 대가가 가장 비싸지는 순간이기도 합니다.

고객들이 시간대가 아니라 정확한 약속 시각을 원하는데, 최적화된 순서가 이걸 방해하지 않나요?

아니요, 오히려 그 반대입니다. 약속한 시각이 실제로 지켜질 가능성이 더 높아집니다. 순서는 전날 저녁이나 하루가 시작될 때 정해지고, 각 방문지의 도착 예정 시각은 그 순서에서 도출됩니다. 바뀌는 것은 '언제' 약속하느냐입니다. 하루의 순서가 정해진 뒤에 시각을 알려주거나, 전화로는 시간대만 말해두고 이동 중 알림으로 확정하는 식으로요. 며칠 전 예약 시점에 정확한 시각을 약속하는 것이야말로 늘 취약한 부분이었습니다.

동선 순서는 교통 상황을 고려하나요?

도착 예정 시각은 실시간 내비게이션이 아니라 계획을 위한 수치로 받아들이세요. 오늘의 보드가 담당하는 것은 방문지의 순서와 각 방문지에 도착할 대략적인 시각이며, 다음 핀으로 가는 길의 턴바이턴 안내와 실시간 교통 상황은 여전히 선호하는 지도 앱이 맡습니다. 두 기능은 서로 보완적입니다. 하나는 하루를 계획하고, 다른 하나는 구간을 운전합니다.