brunch

You can make anything
by writing

C.S.Lewis

by 드라이클리너 Oct 25. 2022

앞으로 앞으로

어릴 적 게임을 할 때면 세이브 기능과 로드 기능은 필수였다. 가장 근본적인 목적은 지금까지의 진행 상황을 저장한 뒤 다음에 이어서 하도록 하는 것일 테다. 게임 삼매경에 빠져 있다가 이제 그만 좀 하라는 엄마의 잔소리가 들리기 시작하면 다음을 기약해야만 했고, 그럴 때마다 세이브-로드 기능이 있었기에 마음 놓고 컴퓨터를 끄곤 했다.


소위 ‘세이브-로드 신공’을 펼치는 경우도 많았다. 어려운 구간을 앞두고 세이브를 해 둔 뒤, 도전이 실패할 때마다 로드하여 앞으로 돌아가서 도전을 반복한다. 예를 들면 롤플레잉 게임에서 보스 몹과의 대전을 이기는 데에는 꽤 노력이 필요하다. 내 캐릭터를 웬만큼 강하게 키운 게 아니라면 첫 시도에서 보스 몹을 잡을 가능성은 극히 희박하며, 세이브-로드를 반복하면서 보스 몹의 기술과 움직임을 익히고 약점을 파악해야 이길 수 있다.


게임에서는 세이브-로드 기능 덕분에 언제든 무얼 하든 원하는 만큼 기회가 주어진다. 그렇기 때문에 두려움 없이 새로운 시도를 할 수 있고 실수를 해도 얼마든지 만회가 가능하다. 이 사실이 내게 심리적 안정감을 제공해 주었다. 그래서 어릴 적부터 인생에도 세이브-로드가 있으면 좋겠다고 자주 생각했다. 게임에서처럼 도전을 반복해서 무언가를 이루고 싶다는 게 아니라 심리적 안정감 그 자체를 원했다. 이를테면 중요한 시험에서 세이브-로드 신공으로 시험을 몇 번이고 다시 봐서 높은 점수를 받기보다, 언제든지 세이브-로드가 가능하니 속 편히 봐도 되겠다는 마음가짐을 얻고 싶었다. 내가 워낙에 긴장감이나 중압감을 느끼는 걸 싫어하는 사람이라 그랬던 것 같다.



그래서 개발자는 나와 잘 맞는 직업이다. 컴퓨터 안에서 이루어지는 프로그래밍만큼 마음 편한 일이 또 있을까. 일단 개발자가 코딩을 하는 데 사용하는 소프트웨어, 즉 통합 개발 환경 또는 코드 편집기에는 여느 프로그램처럼 세이브-로드 기능과 실행 취소 기능이 있다. 웬만하면 실수하기 이전으로 돌아갈 수 있다는 뜻이다. 가끔 진도가 안 나가 집중력을 잃을 때면 ‘s*bal’이라는 단어를 연달아 타이핑하곤 하지만 Ctrl+Z 덕분에 아무 걱정이 없다.


무엇보다 버전 관리 시스템이 발달한 것이 아주 큰 플러스 요인이다. 개발자가 아니더라도 한 번쯤은 들어봤을 만한 깃Git이 대표적이다. 버전 관리 시스템을 사용하면 코드가 담긴 파일의 변화를 원하는 시점마다 단계별로 기록해 두었다가 필요하면 언제든 특정 시점의 버전으로 코드를 되돌릴 수 있다. 새로 기능을 개발하거나 평소보다 실험적인 작업을 하고 싶을 때에는 브랜치branch를 생성하면 된다. 새로운 브랜치에서의 코드 변경은 기존 코드를 바탕으로 하지만 기존 코드와는 완전히 독립적이다. 그렇기 때문에 지금까지 개발한 코드를 망칠 걱정을 하지 않아도 된다.


사실 세이브 기능은 수정된 내용을 덮어 쓸 뿐이지 파일의 변화 과정을 하나하나 기록하지는 못한다. 세이브할 때마다 다른 이름으로 파일을 만들 수도 있겠지만 그 결과는 모두 알다시피 ‘기말발표_진짜 마지막 최최종.pptx’ 같은 괴상한 파일일 테다. Ctrl+Z로 돌이킬 수 있는 범위에도 한계가 있다. 개발자는 버전 관리 시스템까지 활용해야 진정 마음 놓고 실수와 도전을 반복할 수 있다. 이제 버전 관리 시스템 활용 능력은 개발자의 필수 스킬로 여겨진다. 나 역시 일을 하다 보니 자연스레 깃 사용법을 체화했다. 결과적으로는 그 덕분에 마음의 평온을 찾고 개발자라는 직업을 더 좋아하게 됐다.


현실 세계에서 실물을 대상으로 일을 했다면 지금만큼 만족도를 느끼지는 못했을 것이다. 내가 간호사였다면 환자에게 주사 바늘을 잘못 꽂으면 어떡하나 불안해하고, 헤어 디자이너였다면 손님의 머리를 망치면 어떡하나 염려했을 게 분명하다. 현실에는 Ctrl+Z 키가 없으니 한번 바늘을 잘못 찌르면 그 자국이 선명하게 남을 테고, 잘못된 가위질 한 번이면 손님의 향후 몇 개월을 그르칠 수밖에 없다. 버전 관리 시스템을 사용하듯 머리카락을 0.5cm만큼 자른 모습을 저장해 두고, 0.5cm를 더 자른 모습을 또 저장해 두고, 그러다 실수했다 싶을 때 이전으로 돌아갈 수 있으면 좋으련만 역시 말도 안 되는 소리다.



이런 내가 어쩌다 와인바에서 일을 하게 됐다. 이제는 밤마다 컴퓨터 세상을 잠시 벗어나 진짜 세상 속에서 일을 한다. 역시나 컴퓨터 바깥으로 나오니 돌이킬 수 없는 것들이 많았다.


먼저 와인 리스트를 꾸릴 때다. 와인 발주 프로세스는 간단하다. 수입사의 포트폴리오를 보고 거기서 적당히 원하는 와인을 골라 적당히 수량을 맞춰 주문을 하면 된다. 물론 이 ‘적당히’라는 게 생각보다 쉽지가 않다. 어떤 와인을 얼마나 주문할지 결정하려면 생산자, 지역, 품종, 레이블, 수입사가 제공해 주는 시음 노트, 비비노Vivino 앱을 비롯한 인터넷 속 소비자 반응, 공급가, 가게에 이미 갖추고 있는 다른 와인 등 여러 변수를 따져야 한다(이 모든 특성을 때려 넣으면 발주를 가이드해 줄 인공지능 모델이 절실하다). 그나마 수입사에서 시음회를 열어 발주 전에 궁금한 와인을 슬쩍 맛볼 수 있다면 선택이 더 수월해진다.


그런데 기대를 품고 많이 발주한 와인이 기대보다는 별로일 때, 반대로 아주 훌륭한 와인인데 소량만 발주했다가 수입사 물량이 소진될 때면 여간 낭패가 아니다. 전자의 경우에 이미 발주한 건을 무를 수도 없는 노릇이고 후자의 경우에는 그 와인을 더 구해서 판매할 길이 막혔다는 뜻이다. 많이 발주해도 문제가 생길 수 있고 적게 발주해도 문제가 생길 수 있다니 심각한 딜레마다.


손님에게 와인을 추천하여 나갈 때도 부담감을 느낀다. 추천에 성공해서 손님의 입맛에 잘 맞으면 좋겠지만 그렇지 않은 경우도 당연히 있기 마련이다. 솔직하게 아쉬움을 표현하는 손님도 있고 대놓고 말하지는 않아도 어쩐지 실망스러운 낌새가 느껴지는 손님도 있다. 맛과 향을 느낀다는 것 자체가 주관적일 수밖에 없으니 나름대로 추천을 해도 손님의 성에 안 차는 일이 벌어질 수 있다. 이 사실을 머리로는 알지만 자꾸 아쉬운 마음이 든다. 왠지 저 손님이 더 좋아할 것 같은 와인이 몇 가지 머릿속에 떠오르기도 한다. 안타깝게도 이미 코르크를 열어버린 와인을 원래 상태로 돌이킬 방법은 없다.



개발자에게 버그는 불가피하다. 개발자도 사람이니 완벽할 수는 없는 데다가 프로그램의 규모가 커지면 커질수록 커버하지 못하는 부분이 생긴다. 그리고 전 세계 모든 개발자들은 이 사실을 진리로 받아들이고 있다. 빌 게이츠가 윈도우 98 출시를 앞두고 마련한 시연회에서 블루스크린 오류가 떴을 때, 청중은 박수를 치며 폭소했고 빌 게이츠도 “이래서 우리가 아직 윈도우 98을 출시하지 않은 거죠.That must be why we're not shipping Windows 98 yet.”라며 천연덕스럽게 농담을 했다. 시연장에 적막이 찾아오고 빌 게이츠가 어두운 표정으로 말을 잇지 못하는 분위기가 아니었다. 어차피 버그는 어딘가에 반드시 존재한다. 너무 가벼이 여겨서도 안 되지만 너무 무겁게 여겨서도 안 된다. 중요한 건 버그를 발견했을 때 잘 고치는 것이다.


개발자가 버그를 피할 수 없듯 와인바에서의 돌이킬 수 없는 상황들도 완벽히 피해 가기란 불가능하다. 개발자 마인드셋을 와인바에서도 발휘해야 한다. 언제든 실패할 수 있다는 사실을 머리뿐만 아니라 마음으로도 받아들여야 한다. 와인 발주에 지나치게 부담감을 느낄 필요도 없고 와인 추천에 실패했다며 아쉬움을 담아 둘 필요도 없다. 이미 벌어진 일은 그러려니 하고 다시 앞으로 나아가는 수밖에.


실제로 구제의 길이 전혀 없지는 않다. 처음에는 기대 이하였던 와인도 몇 달 묵혀 두면 신기하게 고유한 매력이 드러나기도 하고, 수입사에서도 와인에 따라서 재입고를 하기 때문에 다시 기회를 얻곤 한다. 와인 추천에 아쉬움이 있었더라도 감사하게 다시 가게를 찾아주는 손님들도 있다. 손님의 취향과 지난번 추천을 떠올리며 다시 와인 몇 가지를 꺼내어 보여 주면 된다. 이렇게 생각하면 부담감이 가시고 한결 평안해진다. 어쩌다 시작한 와인바 일이 어쩌면 나와 제법 잘 맞을지도 모르겠다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari