[개드립 소설] 3. 문와인이라는 남자
3-1장: 약손, 용미열각
자정이 넘은 원룸. 요새는 야근 대신 게임이었다. 우진은 모니터 앞에 앉아 스트리트파이터 6에 접속했다. 그의 주력 캐릭터는 '켄 마스터즈'. 우진에게는 별명이 두 개 있었다. 하수들은 그를 '켄신병자'라고 불렀다. 보통은 안 하는 시점에 오버드라이브 승룡권을 꽂아넣곤 했기 때문이다. 하수들은 꼭 얻어맞았다. "지르기만 하는 켄신병자한테 졌다"며 분통을 터뜨렸다. 하지만 대등한 상대를 만나면 우진의 켄은 완전히 다른 얼굴이었다. 화려함을 전부 버리고 약손과 약발로 상대의 멘탈을 긁어대며 틈이 날 때까지 기다렸다. 같은 사람인지 의심될 정도였다. 고수들은 그런 우진을 '짤짤이켄'이라고 불렀다.
오늘 상대는 만만치 않았다. 류 캐릭터가 파동권으로 거리를 깔고 앉으며 우진의 접근을 차단했다. 체력은 3할도 남지 않았다. 오버드라이브 게이지는 바닥이었다. 화면 구석에 몰린 켄의 등 뒤로 더 이상 물러날 공간이 없었다.
우진의 손가락은 필살기 커맨드 위에서 멈췄다. 쓰고 싶었다. 승룡권 한 방이면 역전할 수 있었다. 하지만 가드되면 끝이었다. 우진은 참았다.
대신 약손을 내밀었다. 4프레임. 이 게임에서 가장 빠르고, 가장 짧고, 가장 보잘것없는 기술. 데미지는 쥐꼬리만큼이었다. 그 약손이 상대의 앞잡기 시도와 부딪혔다. 작은 경직. 우진은 그 틈에 약발을 이었다. 약발이 상대의 가드를 긁었고, 상대는 반사적으로 버튼을 눌렀다. 그 순간이었다.
"용미열각!"
약발의 후딜과 상대의 선딜 사이, 0.1초도 안 되는 틈. 우진의 손가락이 그 간극을 뚫고 필살기 커맨드를 완성했다. 카운터 히트 메시지가 화면을 채웠다. 켄의 발이 류의 턱을 걷어 올리며 체력바가 역전되었다.
우진이 의자에 등을 기대며 숨을 내쉬었다. 약손, 약발, 필살기. 구석에서 꺼낸 건 화려한 콤보가 아니라 가장 가벼운 기술 두 개였다. 그 위에 얹은 필살기 한 방. 그게 전부였다. 우진은 모니터를 보며 조용히 미소 지었다.
새벽 2시. 우진은 냉장고에서 캔맥주를 꺼내 탭을 땄다. 랭크 포인트가 올랐다. 내일도 야근은 없을 것이다. 어차피 요즘은 자기 업무도 회사 표준 방식으로 프로시저 수정이 대부분이었다. 우진은 맥주를 한 모금 마시고 다시 매칭 버튼을 눌렀다.
3-2장: 문와인이라는 남자
결제 오류가 반복되자 경영진은 수석 개발자 문와인을 영입했다. 42살. 후드티 차림이었다. 팀원들은 그를 문 수석이라 불렀다. 그는 합류 첫날부터 결제 코드와 엑셀에 정리된 ERD 명세서를 확인하기 시작했다.
3일째 되던 날, 성치훈이 문 수석의 자리로 다가와 물었다. "수석님, 벌써 사흘 내내 자바 코드만 보고 계시네요? 거 스토어드 프로시저는 보셨어요? 거기 로직 다 들어있는데."
문 수석은 엑셀 창을 닫으며 대답했다. "전부 다 봤습니다. 프로시저도, 엑셀 ERD도요. 코드는 간결하게 작성되어 있습니다. 하지만 엑셀에만 존재하는 릴레이션과 DB 깊숙이 박힌 프로시저는 결제 애플리케이션 입장에선 통제력을 되찾아야 합니다. 지금 발생하는 엣지 케이스들은 코드가 복잡해서가 아니라, 소프트웨어로서의 '제어권'이 없어서 생기는 겁니다."
성치훈은 코웃음을 치며 반박했다. "제어권? 수석님, 소프트웨어의 핵심은 데이터에요. 이건 코볼, 파워빌더 시절부터 지금까지 똑같아요. 코딩 언어는 바뀌어도 데이터는 더 오래갑니다. 비즈니스 바뀌어도 데이터 구조는 안 변합니다. 오죽하면 요새 빅데이터라는 말이 나왔겠어요? 데이터가 있는 곳에서 로직이 돌아야 효율적이지, 그걸 자꾸 자바단으로 끌어올려려는 게 오히려 낭비 아닙니까?"
사무실에는 키보드 두드리는 소리조차 들리지 않았다. 팀원들은 모니터 뒤로 고개를 숙인 채 아무도 입을 열지 않았다.
문 수석은 성치훈의 반박에 대꾸하지 않고 팀원들을 화이트보드 앞으로 불렀다. 그는 복잡하게 얽힌 프로시저와 HashMap의 흐름도를 그리고, 빨간 마커로 몇 군데에 동그라미를 쳤다.
"여기가 지금 문제입니다. 로직이 어디에 있는지 아무도 모릅니다. 프로시저 안에 있는지, HashMap 키에 묶여 있는지, 엑셀 명세에만 존재하는지. 이 상태에서는 누가 고치든 다른 곳이 터집니다."
성치훈이 그 옆에서 실소를 터뜨렸다. "아이고, 수석님. 우리 우진 씨가 저번에 그거 하다가 회사 거덜 낼 뻔했거든요. 그냥 HashMap으로 하면 다 되는데 또 뭘 그렇게... 걱정 마세요. 인터페이스? 애노테이션? 그런 거 없어도 오류 한 번 안 나요. 예전엔 다 Hashtable 썼는데, 그것도 내가 주장해서 리팩토링해서 다 HashMap으로 바꿨습니다. 저번이랑 똑같아. 저렇게 복잡하게 쪼개면 결국 아무도 못 고쳐요. 어차피 화면단에서 보낸 거 그대로 DB에 던져주기만 하면 프로시저가 다 알아서 할 텐데, 제발 그 프로시저 좀 분석하세요. 우진 씨, 안 그래? 저 문 수석님 보니까 딱 너 예전 모습이다."
우진은 자리에 멈춰 서 있었다. 필살기에 집착했던 과거와 기본기에 매달렸던 현재가 겹쳐졌다. 우진은 문 수석의 뒷모습을 보며 아무 말도 하지 못했다.
"네 부장님, 잘 알겠습니다. 하지만 경영진이 저를 이 목적으로 뽑은 이상, 제가 맡은 임무를 수행해보겠습니다."
문 수석은 화이트보드 마커를 내려놓고 회의실을 나갔다.