빨간 줄이 남은 새벽

2부. 거인의 어깨 아래에서

by 로그캐빈
빠르기만 했던 내 코드 위로 빨간 줄이 번졌다.


면접에서 만난 부장님의 따뜻한 조언, 그건 이 회사의 한 면이었다.

다른 면은 이 사람이었다.

회사의 실질적인 에이스 개발팀장님.

사내에서 가장 까칠하다고 이름난 사람.

차장급인데 아직도 키보드를 손에서 놓지 않는 현역이었다.


나는 상경 직후 투입된 신규 프로젝트에서 그의 파트너로 배정되었다.

팀장님은 나의 그 '빠름'을 전혀 반기지 않았다.

"다 됐습니다."

내가 호기롭게 보고하면, 팀장님은 특유의 무표정한 얼굴로 내 소스 코드를 열었다.

마우스는 거의 움직이지 않았고, 단축키 몇 번만으로 파일이 연달아 열렸다.

그리고는 단 몇 초 만에, 송곳 같은 질문을 던졌다.

"여기서 사용자가 새로고침을 동시에 두 번 누르면 어떻게 될 것 같아?"
"DB 커넥션이 끊어졌을 때 예외 처리는 어디 있지?"

나는 대답할 수 없었다.

내가 만든 건 '정상 상황에서 돌아가는 기능'이었지, '가혹한 환경에서 견디는 시스템'이 아니었다.

팀장님은 내가 빠르게 마무리한 코드에서 수십 개의 구멍을 찾아내며 밀어붙였다.

"이거는… 돌아가는 거지, 되는 게 아니야."

그 말이 꽂히고 나면, 내 '완료'는 바로 '미완'이 됐다.


내가 제출한 코드를 반려하며

"한 땀 한 땀 바느질하는 마음으로 짜라."

그리고는

"다시 짜와."

라고 냉정하게 말했다.

그 말은 '수정해'가 아니었다. 처음부터 다시 생각하라는 뜻이었다.

화면에는 같은 코드가 떠 있었지만 내 머릿속 설계는 처음으로 돌아가 있었다.


팀장님은 내 코드를 '버리기'만 하진 않았다.

내가 막히는 부분이 생기면 밤을 새워서라도 옆에 앉아 로직의 흐름을 잡아주었다.

말은 짧고 날카로웠지만, 그가 손가락으로 짚어주는 흐름은 정확했다.



몇 달 뒤, 나는 현장으로 나갔다.

회사의 매출을 책임지는 메인 운영 프로젝트에 투입된 것이다.

프로젝트 현장의 분위기는 회사보다 한 겹 더 팽팽하고 차가웠다.

그곳은 대기업 원청업체의 시스템을 관리하는 현장이었고, 이미 주임과 대리급 개발자들이 여럿 포진해 있었다.


현장에 투입되자마자 원청 PM 부장님은 막내인 내게 트리뷰 구조의 세 화면 개발 미션을 던졌다.

운영 중인 시스템이라 DB를 잘못 건드리면 수천 명에게 장애가 터질 수 있었다.

그래서 나는 DB를 건드리지 않고 앞단에서 데이터를 다시 세우는 쪽으로 방향을 틀었다.

자바스크립트만으로 정면 돌파해 보기로 했다.

팀장님께 배운 대로 예외 케이스를 먼저 머릿속에 그렸다.

그리고 키보드 위에 손을 올렸다.


무아지경으로 코드를 짜다 보니 밤이 깊었다.

새벽 두 시를 넘겼을 무렵 마지막 함수를 닫고 새로고침을 눌렀다.

트리가 열렸다.

부모 노드를 클릭하면 자식이 펼쳐지고, 닫으면 접혔다.

데이터는 한 줄의 오류도 없었다.

가장 먼저 떠오른 건 성공이 아니라 실패의 경우였다.

나는 팀장님에게 혼나며 새긴 습관대로 예외 케이스를 하나씩 돌려봤다.

트리는 무너지지 않았다.


다음 날 PM 부장님과 시니어 개발자들 앞에서 로직을 설명하자, 놀라움과 당혹감이 뒤섞인 시선이 돌아왔다.

그리고 다음 날 아침, 내 자리에는 어제의 두 배 두께의 기획서가 놓여 있었다.


퇴근 후 현관문을 열었다.

신발은 늘 한 켤레뿐이었고, 방 안의 공기는 내가 나갔을 때 그대로였다.

월, 수, 금 연재