다음 날 마왕성에 돌아왔을 때, 내 책상 위에는 급여 명세서가 두 장 놓여 있었다.
둘 다 내 이름이었다.
"몰트 님, 이게 뭡니까?"
"자네가 우편조합에서 밤샘 조사를 하는 동안 누군가 자네 업무를 대신 처리했더군."
"그럴 수 있죠. 그런데 왜 제 이름이 두 개입니까?"
"하나는 본인 근무, 하나는 대행 업무 확인이라고 되어 있어."
나는 불길한 마음으로 뒷장을 넘겼다. 예상한 대로 구형 코드가 있었다.
0003.
"또 너냐."
"숫자에게 말을 걸어도 대답하진 않을 걸세."
"그러면 좀 더 마음이 편해질 텐데요."
대행 업무를 맡은 건 마왕성 인사실의 젊은 고블린 직원 네브였다. 그는 지난밤 내가 자리를 비운 동안 경비대 야간 수당 자료를 정리했다. 그런데 전산 기록에는 네브가 내 계정으로 로그인해 내 업무를 모두 대신 승인한 것으로 표시돼 있었다.
"제가 그런 권한이 있는 줄도 몰랐는데요?" 네브가 말했다.
"실제로 승인 버튼을 누른 적은요?"
"없습니다. 자료만 분류했습니다."
"그럼 분류 사실만 남겨야죠."
베르케가 전산 기록을 확인했다. 오래된 교대 근무 서식을 새 인사 시스템에 가져오는 과정에서 '대행 접수'가 '대행 승인'으로 표시되는 규칙이 남아 있었다.
"이거 지난번에도 고쳤잖습니까?"
"그때는 자동 퇴직 발주 규칙을 중지했습니다." 베르케가 난처하게 말했다. "이번에는 다른 모듈입니다."
나는 천장을 바라봤다.
이 세계의 시스템은 왜 이토록 끈질길까. 내가 고친 문은 닫히지만 벽 반대편에서 창문이 새로 열린다. 코딩으로 먹고살던 동료가 있었다면 아마 '레거시의 저주'라고 부르며 술을 마셨을 것이다.
"원본 업무 기록은 지우지 마세요. 실제 행위와 시스템 표시를 나눠 보정하고, 동일 규칙을 쓰는 다른 사용자 목록을 뽑읍시다."
베르케가 끄덕였다.
"그리고 변경은 시험 서버에서 먼저 검증하겠습니다."
"좋아요. 오늘은 시스템에게 우리를 퇴직시키게 두지 맙시다."
피코가 손을 들었다.
"퇴직하면 꽃다발은 또 와요?"
"그때 꽃집이 잘못 발주된 걸 아직도 기억하니?"
"꽃은 예뻤잖아요."
"꽃이 예쁜 것과 네 월급이 제대로 나오는 건 다른 문제야."
녀석은 잠깐 고민하다가 말했다.
"그럼 꽃도 받고 월급도 받으면 안 돼요?"
"회사 돈이라면 근거가 있어야지."
"자꾸 근거 찾으셔서 재미없어요."
나는 웃었다. 피코가 장부를 싫어하는 날은 온 세상이 평화로운 날이다.
점심쯤 네브의 실제 급여 지급일이 다가왔다. 대행 업무가 네브의 근무시간에 포함돼 있었다는 사실은 확인됐지만, 그 업무 때문에 추가 수당이 발생하는지는 별도 규정과 실제 시간을 봐야 했다. 나는 네브와 그의 상사에게 일한 시간표를 확인받았다.
"밤 열 시부터 열한 시까지 서류를 정리했어요."
"원래 교대시간은?"
"아홉 시까지입니다."
"그럼 최소한 추가 근로 내역은 있네요. 수당 산정은 담당 부서가 확인할 겁니다."
네브는 갑자기 표정이 굳었다.
"괜히 말씀드린 걸까요?"
"왜요?"
"상사가 추가 근로는 자발적으로 한 거라고 할 수도 있잖아요."
나는 잠시 말을 멈췄다. 이런 불안은 내 세계에서도 익숙했다. 누군가의 월급을 계산한다는 건 숫자만 만지는 일이 아니다. 그 사람이 자기 권리를 말한 다음 날에도 같은 자리에서 일할 수 있는지 고민해야 한다.
"업무 지시 기록이 있는지 확인해 보죠. 그리고 조사 중에 불이익을 받지 않도록 인사실에 별도 안내를 보내겠습니다."
네브가 고개를 끄덕였다.
"고맙습니다."
피코는 내 소매를 잡아당겼다.
"도윤 님, 네브 형이 추가로 일했으면 저도 어제 추가로 일했잖아요."
"맞지. 네 시간도 확인하자."
"그럼 저도 간식 수당이요?"
"근로 보상과 간식은 다르게 생각해야 해."
"그런 게 제일 슬퍼요."
녀석은 진심으로 슬퍼 보였다.
오후에는 왕국 조사관 라델이 찾아왔다. 그는 북문 시범 창구를 둘러본 뒤 내게 서류 한 장을 건넸다. 오래된 전역 연금 포기 서식의 기초 규정을 확보했다는 내용이었다.
"가론 씨의 신청에 대한 판단은 아직 진행 중입니다. 다만 포기 동의가 성립하려면 별도 의사 확인을 거쳐야 했다는 규정은 남아 있더군요."
"그럼 자동 복제 도장으로 처리된 건 문제가 되겠네요."
"문제가 될 가능성이 있습니다. 원본 대조와 실제 당사자 의사를 확인해야 합니다."
나는 고개를 끄덕였다. 라델은 이제 나만큼이나 신중하게 말하는 사람이 됐다. 그와 처음 만났을 때는 나를 범죄자로 취급하던 모습이 떠올랐다.
"아, 그리고 제 지명수배 취소는 어떻게 돼 갑니까?"
그가 난처한 표정을 지었다.
"집행정지는 유지 중입니다. 정식 취소는 아직 별도 결재가 남았습니다."
"한 백 화쯤 기다린 것 같은데요."
"그렇게 긴 건 아닐 겁니다."
"제 체감으로는 엄청 깁니다."
라델은 웃으며 다른 서류를 펼쳤다. 왕국 법무부의 안전 통신 가이드였다. 새 시범 창구가 강제 연락을 하지 못하도록 제한하는 조항을 검토하고 있었다.
"이걸 보면 한국어 우편 보관 문제에도 도움이 될 수 있겠네요." 그가 말했다.
"그렇긴 한데, 그 편지 수신자의 권한은 별도로 확인해야죠."
그는 고개를 끄덕였다.
대행 근무 문제를 시험하던 중, 베르케가 아주 재미있는 실험을 제안했다. 재미있다는 말은 프로그래머 기준이었다. 일반인이 들으면 재난 예고처럼 들릴 실험이었다.
"실제 계정은 건드리지 않고 이름 없는 시험 인원 두 명을 만들겠습니다. 각각 사무직과 경비직으로 설정한 뒤, 대행 접수 버튼을 누르면 무슨 일이 일어나는지 비교하는 거죠."
"좋습니다. 다만 시험 자료가 실급여 장부로 넘어가지 않게 차단해 주세요."
"이미 통로를 끊어 놨습니다."
피코가 눈을 반짝였다.
"시험 인원도 월급 받아요?"
"받지 않아야지. 실존 인물이 아니니까."
"그럼 사탕도 안 받아요?"
"응."
"불쌍하네요."
베르케는 웃음을 참고 시험을 시작했다. 사무직 가상 직원이 경비직 가상 직원의 자료를 대신 접수했다. 그러자 화면에 녹색 문구가 떠올랐다.
[처리 완료.]
아무 문제 없어 보이는 문장이었다. 그런데 상세 화면을 펼치자 경비직 직원의 근무조건 변경 칸에도 같은 녹색 표시가 붙어 있었다. 대행 접수는 했지만 근무조건에 동의한 사람은 없었다.
"이거군요."
나는 종이 위에 두 줄을 적었다.
'실제 행위: 자료 수령.'
'잘못 표시된 결과: 계약 변경 동의.'
베르케는 한숨을 쉬었다.
"한 화면에서 상태가 하나로 보이니까 그렇습니다."
"그럼 화면에 적힌 문구를 나눠야겠죠."
우리는 '자료 접수 완료', '당사자 확인 대기', '변경 승인 여부 미결정'으로 값을 분리한 시험 화면을 만들었다. 버튼은 세 개가 되었고, 피코는 그것을 보자 고개를 저었다.
"버튼 많으면 누르기 어려워요."
"맞는 지적이야. 그럼 필요한 사람에게 필요한 버튼만 보이게 해야겠지."
베르케가 고개를 끄덕였다.
"대행 직원 화면에는 접수 버튼만, 본인 화면에는 확인과 거절 선택을 보여 줄 수 있습니다."
"단, 거절하면 선택 기록이 남아야 합니다. 접수 담당자에게 부정적 평가가 가는 건 안 됩니다."
우리는 한참 동안 화면을 바꿔 가며 시험했다. 가상 직원이 아무 버튼도 누르지 않으면 '무응답' 상태로 남고, 거절하면 명확히 '거절'이라고 표시됐다. 다만 그 결과를 다른 기관이 동일하게 해석하는지는 별도 검증이 필요했다.
"이걸 모든 기관에 배포하면 끝인가요?" 피코가 물었다.
"아니. 각 기관의 법률과 권한 체계에 따라 확인해야 해. 우리는 원래 뜻을 잃지 않는 자료 구조를 제안하는 거지, 남의 조직에서 결정권을 가져오는 게 아니야."
"세상에서 가장 긴 대답이네요."
"공무원 시험 준비한다면 도움이 될걸."
"전 사탕 가게 사장이 될래요."
"좋은 선택이야."
작업이 끝나자 베르케는 운영 반영 전 시험 결과서에 서명했다. 그리고 내게 서명을 요청했다.
나는 서명란을 읽고 한참 머뭇거렸다.
"여기에는 '최종 배포 승인'이라고 적혀 있네요. 저는 그 권한 없는데요."
"아, 이전 양식이군요. 기술 검증 참여 확인으로 바꿔 오겠습니다."
베르케가 서류를 다시 가져갔다. 나는 피코를 바라봤다.
"봤지? 우리가 만든 양식도 틀릴 수 있어."
"그럼 도윤 님도 검사받아야겠네요."
"이미 매일 받고 있는 기분이야."
피코는 씩 웃었다.
"제가 검사해 드릴게요. 빵 한 개요."
그날 우리는 운영 시스템을 곧장 바꾸지 않았다. 먼저 급여 반영, 대행 접수, 본인 확인, 거절 상태가 제대로 분리되는지 각각 시험하고, 다른 부서가 어떤 화면을 보는지도 확인했다. 직원의 권리를 지키려고 만든 기능이 직원의 월급을 새로 흔드는 일은 없어야 했다.
해 질 무렵 작업이 끝나자 네브가 문 앞에서 기다리고 있었다.
"회계사님, 제 시간이 제대로 잡힌 건 확인됐습니다."
"실제 지급은 다음 정산일까지 기다려야죠."
"알아요. 그래도 이제 제가 한 일이 제 이름으로 남아서 좋습니다."
나는 웃었다. 자기가 한 일을 자기 이름으로 남기는 것. 평범해 보이는 일이지만 이 성에서는 꽤 큰 성과였다.
베르케는 테스트를 마치고 내게 개인적인 질문을 했다.
"도윤 씨는 왜 이런 오류를 보면 그렇게 화가 납니까?"
"화가 안 나는 줄 알았어요?"
"언제나 침착하게 말씀하시잖아요."
나는 잠깐 웃었다.
"회사에서 일해 보니까 알겠더라고요. 누가 제 이름으로 결재하면 나중에 책임은 제가 지게 된다는 걸요."
베르케는 고개를 끄덕였다.
"여기도 마찬가지군요."
"네. 거절한 기록이 남지 않으면 누군가 대신 승낙한 걸로 처리하고, 그때부터 자기 잘못이 아닌 일을 평생 설명해야 할 수도 있으니까요."
베르케는 잠시 침묵하다가 작은 메모를 했다.
[당사자가 하지 않은 일을 당사자에게 설명하게 만들지 말 것.]
나는 그 문장을 보고 손가락을 세웠다.
"좋네요. 기술 안내서 첫 페이지에 넣읍시다."
저녁 무렵 베르케가 시험 결과를 가져왔다. 원본 인사 기록과 새 시스템 조회값을 분리하자 네브가 도윤의 계정으로 업무를 승인했다고 표시되던 오류는 사라졌다. 적어도 시험 화면에서는 그랬다. 운영 반영은 다음 야간 점검 시간으로 예정됐고, 그전까지 위험한 자동 승인 규칙은 잠정 비활성화했다.
"이것만으로 끝나진 않겠죠?" 내가 물었다.
"네. 같은 코드를 사용하는 다른 기관의 시스템은 각자 고쳐야 합니다."
"그렇겠죠."
나는 숨을 내쉬었다. 모든 걸 한 번에 바꿀 수는 없다. 대신 우리 성 안에서 사람의 이름이 함부로 다른 사람의 손을 빌려 움직이지 않도록 할 수는 있다.
그날 밤 네브가 나를 찾아왔다.
"회계사님, 제가 오늘 느낀 게 하나 있습니다."
"뭔데요?"
"제가 대신 서류를 정리했다는 이유로 회계사님이 한 일이 없어지는 건 아니더군요."
"당연하죠."
"그리고 제 시간이 없어진 것도 아니고요."
나는 웃었다.
"그걸 알아서 다행이네요."
네브가 떠난 뒤 피코는 내 책상에 작은 쪽지를 붙였다.
[도윤 님은 한 명입니다. 네브 형도 한 명입니다. 둘 다 월급 주세요.]
"이거 누가 보면 네브 월급을 내가 안 준 줄 알겠다."
"주실 거잖아요?"
"규정에 따라 정산하겠지."
"그거면 됐어요."
나는 한동안 쪽지를 바라봤다. 별것 아닌 말인데 마음이 놓였다.
잠시 후 아우렐이 전송한 구형 우편조합 기록이 도착했다. 이상한 공통점이 있었다. 우리 인사 시스템이 대행 승인으로 잘못 변환하던 구형 코드와, 봉투 재확인 업무에 사용된 코드가 같은 숫자열이었다. 그러나 기능 이름은 달랐다.
하나는 대행 접수, 하나는 보존 확인.
둘 다 사람의 의사를 나타내는 코드는 아니었다.
나는 두 기록을 한 화면에 나란히 놓았다. 여러 기관이 서로 다른 일을 하며 같은 번호를 썼다면, 누군가 오래전 통합할 때 구분을 지워 버렸을 가능성이 더 커졌다.
문제는 그 구분을 지운 문서가 어디 있느냐는 것이었다.
나는 키엔에게 정식 조회 요청을 보냈다.
[0003 구형 코드의 원래 업무 분류표. 담당자 성명 불필요. 기관별 기능 정의만 요청.]
답장은 빠르게 왔다.
[공동 규격 심사 자료가 남아 있음. 다만 특정 페이지는 사고 조사 당시 별도 봉인됐습니다.]
나는 조용히 눈을 감았다.
또 봉인이었다.
하지만 이번에는 적어도 열람해야 할 이유가 명확했다. 누군가의 거절을 승인으로 바꿔 버리는 오류가 오늘도 사람들의 월급에 손을 대고 있었으니까.
제127화 댓글 0
댓글·공감·신고는 로그인 후 이용할 수 있습니다. 이전 익명 댓글은 그대로 표시됩니다.
댓글을 불러오는 중입니다.