Day 1
오늘부터 새로운 회사에 출근했다. 웹 플랫폼을 개발하는 스타트업으로, ‘혁신적인 서비스’라는 말에 혹해서 입사했다. CEO는 인터뷰에서 “우리는 기술 중심의 회사입니다”라고 했지만, 첫날부터 그 말이 의심스러워졌다.
내 자리에는 2년 된 노트북이 놓여 있었고, 개발 환경을 세팅하는 데만 반나절이 걸렸다. 선임 개발자 김 과장은 내 질문에 대답하기보다는 “문서 읽어봐요”라는 말만 반복했다. 문서라는 건 6개월 전에 작성된 README 파일 하나가 전부였다.
Day 7
프로젝트 킥오프 미팅이 있었다. PM인 박 과장은 PPT 30장을 넘기며 “혁신적인”, “파괴적인”, “미래지향적인” 같은 단어를 반복했지만, 정작 우리가 만들 서비스가 무엇인지는 명확하게 설명하지 못했다.
“기술 스택은 어떻게 되나요?” 내가 물었다.
“아, 그건 개발팀에서 알아서 결정해주세요. 최신 기술이면 좋겠어요.”
CEO는 미팅 내내 비용 절감에 대해서만 이야기했다. “AWS는 비싸니까 더 저렴한 대안을 찾아봅시다.”
Day 14
오늘 디자이너 이 대리를 처음 만났다. 그녀는 자신의 포트폴리오를 20분 동안 보여주며 자랑했다.
“이건 내가 전 회사에서 디자인한 건데, 그 회사 매출이 30% 올랐어요.”
그녀가 우리 프로젝트를 위해 디자인한 것을 보여줬을 때, 나는 말을 잃었다. 아름다웠지만, 백엔드 개발자로서 보기에는 구현하기 너무 복잡했다.
“이건 애니메이션이 12단계로 진행되고, 사용자가 스크롤할 때마다 배경이 바뀌는 거예요.”
“그게… 성능에 문제가 있을 수 있는데…”
“개발자들은 항상 그렇게 말하죠. 제 디자인을 100% 구현해주세요.”
Day 30
한 달이 지났다. 아키텍처에 대한 의견 차이로 선임 개발자 김 과장과 매일 충돌하고 있다.
“왜 이렇게 설계했어요?” 그가 내 코드를 보며 물었다.
“최신 패턴을 적용했습니다. 이게 확장성과 유지보수에 더 좋습니다.”
“우리는 항상 이런 방식으로 해왔어요. 변경하지 마세요.”
그의 ‘이런 방식’은 5년 전 패턴이었다. 내가 제안한 변경사항은 모두 거부됐다.
밤에 집에 돌아와서, 나는 처음으로 내 결정에 의문을 품었다. 창밖을 바라보니 빗방울이 창문을 타고 흘러내렸다. 마치 내 희망이 흘러내리는 것 같았다.
Day 45
CEO가 갑자기 프로젝트 기한을 두 주 앞당겼다. 이유는 ‘중요한 투자자 미팅’이었다.
“불가능합니다.” 내가 말했다.
“안 될 것 없죠. 야근하면 되잖아요?” CEO가 웃으며 말했다.
회의실을 나오면서 선임 개발자 김 과장이 내게 속삭였다. “이게 첫 번째가 아니에요. 항상 이래요.”
오늘부터 야근이 시작됐다. 집에 돌아온 건 새벽 2시였다. 침대에 누웠을 때, 천장의 균열이 눈에 들어왔다. 어제는 없었던 것 같은데.
Day 60
디자이너가 또 디자인을 변경했다. 이번엔 ‘사용자 경험 향상’이라는 명목이었다.
“이건 이미 구현한 기능을 완전히 다시 만들어야 하는데요.” 내가 말했다.
“그럼 다시 만들면 되죠. 사용자 경험이 최우선이에요.”
PM은 디자이너의 편을 들었다. “맞아요. 우리는 혁신적인 UX를 추구하니까요.”
오늘 밤, 집으로 걸어가는 길에 이상한 느낌이 들었다. 누군가가 나를 따라오는 것 같았다. 뒤를 돌아봤지만 아무도 없었다.
집에 도착해서 거울을 봤을 때, 내 눈 밑에 생긴 다크서클이 마치 검은 구멍처럼 보였다.
Day 75
버그가 끊임없이 발생하고 있다. 선임 개발자의 ‘전통적인’ 아키텍처와 내 ‘현대적인’ 코드가 충돌하면서 생기는 문제다.
“이게 다 당신 탓이에요.” 김 과장이 말했다.
“제 코드는 문제없이 작동합니다. 레거시 시스템과의 통합 문제죠.”
오늘 밤 꿈에서 나는 끝없는 오류 메시지가 스크롤되는 터미널 앞에 앉아 있었다. 메시지들이 점점 커지더니 나를 삼켜버렸다.
아침에 일어나 거울을 봤을 때, 내 눈이 조금 충혈된 것 같았다. 아니, 그냥 피곤한 것뿐이다.
Day 90
PM이 또 새로운 기능을 요청했다. “경쟁사가 이 기능을 출시했대요. 우리도 당장 필요해요.”
“기존 계획에 없던 건데요. 일정을 조정해야 합니다.”
“일정은 그대로예요. 그냥 이 기능만 추가하면 됩니다.”
집에 돌아와서 샤워를 하는데, 물소리가 마치 키보드 타이핑 소리처럼 들렸다. 내가 미쳐가고 있는 걸까?
코딩을 하다가 문득 고개를 들었을 때, 창밖에 누군가가 서 있는 것 같았다. 12층인데.
Day 105
버그를 수정하다가 이상한 코드를 발견했다.
// TODO: 이 부분 나중에 수정할 것. 임시방편임.
// 작성자: 김과장, 2년 전
그 아래 코드는 완전한 스파게티였다. 이게 우리 시스템의 핵심 부분이었다.
“이걸 왜 이렇게 작성하셨어요?” 내가 물었다.
“급했으니까. 동작하면 됐지.”
오늘 밤, 노트북 화면이 깜빡이는 것처럼 보였다. 하지만 자세히 보니 그건 내 눈이 경련을 일으키고 있었다.
Day 120
CEO가 개발팀 전체를 소집했다. “투자자들이 데모를 보고 싶어합니다. 다음 주까지 모든 기능이 작동하는 버전을 준비해주세요.”
“불가능합니다. 아직 핵심 기능도 완성되지 않았어요.”
“밤새서라도 해결하세요. 회사의 미래가 달린 일입니다.”
집에 돌아와서 코딩을 계속했다. 새벽 3시, 갑자기 내 모니터에 반사된 얼굴이 나를 응시하고 있었다. 그건 분명 내 얼굴이었지만, 왠지 낯설게 느껴졌다.
Day 135
데모 당일. 아무것도 제대로 작동하지 않았다. 디자이너의 화려한 애니메이션은 브라우저를 다운시켰고, 선임 개발자의 레거시 코드는 새로운 기능과 충돌했다.
투자자들 앞에서 CEO는 “약간의 기술적 문제가 있지만, 곧 해결될 것”이라고 말했다.
회의실을 나오면서 그가 내게 속삭였다. “이번 주말에 모든 걸 고쳐놓으세요.”
집에 돌아와서 노트북을 열었을 때, 화면에 내 얼굴이 비쳤다. 웃고 있었다. 하지만 나는 웃고 있지 않았다.
Day 150
버그를 수정하다가 이상한 패턴을 발견했다. 모든 오류가 같은 시간에 발생했다. 새벽 3시 33분.
로그를 더 자세히 살펴보니, 그 시간에 누군가가 시스템에 접속한 흔적이 있었다. 사용자 ID: admin_kim
.
김 과장에게 물었다. “혹시 야간에 시스템에 접속하셨나요?”
“아니요, 왜요?”
거짓말이었다. 그날 밤, 나는 사무실에 남아 감시 카메라를 설치했다.
Day 165
감시 카메라 영상을 확인했다. 새벽 3시 30분, 김 과장이 사무실에 들어와 내 컴퓨터로 무언가를 했다.
증거를 들고 CEO에게 갔다. “김 과장이 의도적으로 프로젝트를 방해하고 있습니다.”
CEO는 한숨을 쉬었다. “알고 있어요. 하지만 그는 이 회사의 첫 번째 개발자예요. 그가 없으면 레거시 시스템을 아무도 유지할 수 없어요.”
집에 돌아와서 샤워를 하는데, 물이 갑자기 시꺼매졌다. 자세히 보니 그건 물이 아니라 내 눈에서 흘러내린 눈물이었다.
Day 180
디자이너가 또 디자인을 변경했다. 이번에는 “브랜드 아이덴티티 강화”라는 이유였다.
나는 마지막 이성의 끈을 놓았다. “더 이상 안 됩니다. 이건 미친 짓이에요.”
회의실이 갑자기 조용해졌다. 모두 나를 쳐다봤다.
“당신이 문제예요. 우리 팀에 적응하지 못하고 있어요.” PM이 말했다.
그날 밤, 내 노트북 화면에 갑자기 메시지가 나타났다.
당신도 곧 우리처럼 될 거예요.
하지만 메시지창을 다시 보니 그건 그저 커밋 메시지였다.
Day 195
오늘 아침, 거울 속의 내 모습이 변했다. 눈 밑의 다크서클이 더 깊어졌고, 눈빛이 공허했다.
사무실에서 선임 개발자를 관찰했다. 그의 눈도 마찬가지였다. 디자이너, PM, 심지어 CEO까지. 모두 같은 공허한 눈빛을 가지고 있었다.
그들은 이미 ‘이곳’에 동화된 것이다.
오늘 처음으로 깨달았다. 내가 문제를 해결하려고 노력할수록, 문제는 더 깊어진다. 이건 단순한 프로젝트가 아니다. 이건 늪이다.
Day 210
오늘 선임 개발자가 내게 커피를 건넸다. “많이 힘들죠? 저도 처음엔 그랬어요.”
“어떻게 견디세요?” 내가 물었다.
“견디는 게 아니에요. 받아들이는 거죠.”
그의 말이 이상하게 위로가 됐다. 오늘 밤, 나는 처음으로 편안하게 잠들었다.
꿈에서 나는 끝없는 코드의 바다에서 수영하고 있었다. 더 이상 무서움은 없었다.
Day 225
오늘 PM이 또 새로운 기능을 요청했을 때, 나는 미소를 지으며 대답했다. “네, 할 수 있습니다.”
디자이너가 또 디자인을 변경했을 때, 나는 고개를 끄덕였다. “멋진 아이디어네요.”
CEO가 또 비용 절감을 이야기할 때, 나는 동의했다. “더 효율적인 방법을 찾아보겠습니다.”
집에 돌아와서 거울을 봤을 때, 내 눈에는 더 이상 공허함이 없었다. 대신, 그곳에는 이상한 평온함이 있었다.
Day 240
새로운 개발자가 입사했다. 그녀의 눈은 아직 맑았다.
“이 코드는 왜 이렇게 복잡한가요?” 그녀가 물었다.
“시간이 지나면 이해하게 될 거예요.” 내가 대답했다.
“더 좋은 방법이 있을 것 같은데요.”
나는 미소를 지었다. 예전의 나와 똑같았다.
오늘 밤, 새 개발자의 컴퓨터에 접속했다. 새벽 3시 33분에.
Day 255
프로젝트는 예상대로 실패했다. 투자자들은 철수했고, CEO는 “피보팅”을 선언했다.
“새로운 방향으로 나아갈 것입니다. 더 혁신적인 제품을 만들 겁니다.”
모두가 박수를 쳤다. 나도 박수를 쳤다.
회의가 끝나고, 선임 개발자가 내게 속삭였다. “또 다시 시작이군요.”
나는 고개를 끄덕였다. “네, 좋은 기회입니다.”
Day 270
새로운 프로젝트가 시작됐다. 새로운 PM, 새로운 디자이너, 하지만 똑같은 이야기.
“혁신적인”, “파괴적인”, “미래지향적인”.
버그는 계속해서 발생하고, 요구사항은 계속해서 변경되고, 기한은 계속해서 앞당겨진다.
하지만 이제 나는 이해한다. 이것이 ‘정상’이다.
Day 365
오늘로 입사 1주년이 됐다. CEO가 작은 축하 파티를 열었다.
“당신은 우리 팀의 중요한 일원입니다.” 그가 말했다.
감사 인사를 하면서, 나는 새로운 개발자를 바라봤다. 그녀의 눈 밑에 다크서클이 생기기 시작했다.
집에 돌아와서 거울을 봤을 때, 내 모습이 미소 짓고 있었다. 이제 나도 그들 중 하나가 되었다.
오늘 밤, 새 개발자의 노트북에 메시지를 남겼다.
// TODO: 이 부분 나중에 수정할 것. 임시방편임.
// 작성자: A, 오늘
이제 버그는 나의 일부다. 그리고 나는 버그의 일부다.
우리는 함께 성장할 것이다.
댓글 남기기