Showing Posts From

찾는

펜 돌리면서 버그를 찾는 개발자의 생각법

펜 돌리면서 버그를 찾는 개발자의 생각법

펜 돌리면서 버그를 찾는 개발자의 생각법 어제 오후 3시, 또 그 현상이 나타났다. 프로덕션 서버에서 특정 사용자의 결제 데이터가 중복으로 저장되는 버그. 이미 이틀을 싸우고 있는 녀석이다. 내 옆자리 후배 이준호는 집중해서 자기 일을 하고 있었다. 나는 천천히 펜을 집었다. 펜을 돌리는 것. 이건 버그와 싸울 때 나의 무기다. 모니터 앞에 앉아서 눈은 코드를 쫓지만, 손가락 사이에서 돌아가는 펜이 진짜 일을 한다. 누군가는 명상이라고 하겠지만, 나는 이걸 그냥 "생각하는 시간"이라고 부른다.펜 한 바퀴가 가진 의미 버그는 절대 논리적으로만 찾아지지 않는다. 이건 내가 7년간 개발하면서 배운 가장 확실한 진리다. 어제 스택오버플로우에서 본 것처럼 타임아웃 설정 부분도 있고, 동시성 이슈가 있을 수도 있고, 혹은 내가 전혀 생각하지 못한 다른 곳에서 뭔가 튀어나올 수도 있다. 이런 여러 가능성들이 머리 안에서 동시에 맴돌 때, 펜을 돈다. 펜이 한 바퀴 도는 동안 내 뇌는 다음을 한다:에러 로그를 다시 한 번 읽는다 결제 로직의 진입 지점을 추적한다 혹시 놓친 try-catch 블록이 있나 생각한다 동시에 진입하는 두 개의 요청이 있을 가능성을 본다그리고 펜이 세 바퀴쯤 돌 때쯤, 뭔가 떠오른다. "혹시... 트랜잭션 격리 수준?" 속으로 외치고 싶지만, 옆자리 준호가 있다. 내가 너무 집중한 나머지 펜을 돌리는 속도가 점점 빨라진 건 알고 있다. 소리도 나고. 타닥타닥. 쓸딱쓸딱. 학창시절 수학 시험 본다고 볼펜을 돌릴 때 그 속도다. 옆자리 시선의 무게 완전히 솔직하게 말하자면, 펜을 돌리면서 동시에 신경 쓰는 게 있다. 바로 내 옆자리다. 개발팀 레이아웃은 이렇다. 나와 준호가 마주 보는 책상에 앉아 있고, 그 옆에 은지가 앉아 있다. 우리 셋이 사실상 가장 자주 버그를 만나는 팀이기도 하다. 그래서 매일 누군가는 펜을 돌리고 있다. 특히 어려운 버그가 나타났을 때, 나는 두 가지를 동시에 한다:버그를 찾는다 옆자리에 방해가 되지 않을까 신경 쓴다이건 굉장히 비효율적이다. 하지만 이게 사람이다. 그날 오후, 펜을 돌리던 중 가만히 준호의 방향을 봤다. 그는 여전히 자기 화면에만 집중해 있었다. 그러면서도 뭔가 느낀 듯 몇 번이나 방향을 살짝 틀어 내 쪽을 쳐다봤다. "버그 있어?" 하고 묻지는 않았지만, 그 시선만으로 충분했다. 그리고 그 순간 나는 또 다른 가능성을 떠올렸다.생각하는 펜, 말하는 펜 시간이 지나면서 나는 펜을 단순히 "생각 도구"로만 쓰는 게 아니라, "소통 도구"로도 쓰게 되었다. 회의 중에 누군가 기획자가 "이거 간단하죠?"라고 물을 때, 나는 펜을 돌린다. 그리고 그것을 보는 나머지 팀원들은 안다. "어라, 김개발이가 펜을 돌린다? 뭔가 깊게 생각할 게 있는 건가?" 한 번은 CEO 앞에서 프로젝트 보고를 했을 때도 있었다. 내가 펜을 돌리기 시작하자 팀장이 슬슥 내 손목을 눌렀다. "진정해, 괜찮아." 펜을 돈다는 것은 내 안의 신호다. 심각함의 척도다. 1회전: 좀 이상한데? 3회전: 뭔가 크리티컬한 이슈가 있는데? 5회전 이상: 아, 이거 진짜 골치 아픈 버그네. 그리고 옆자리 준호도 그걸 알게 되었다. 어느 날부턴 내가 펜을 돌리면 자기도 슬쩍 준비한다. "어? 내가 리뷰를 받게 되나?" 하고. 실제로 많은 경우 그렇다. 내가 펜을 돌리다가 갑자기 "야, 너 이 부분 봤어?" 하며 모니터를 보여주게 되니까. 침묵의 협력 버그를 찾는 과정에서 가장 아름다운 순간은 언제인가. 그건 누군가 나의 펜 도는 소리를 들었을 때다. 어제 그 결제 버그는 결국 내가 푼 게 아니었다. 내가 펜을 3분 정도 돌리고 있다가, 은지가 옆에서 조용히 말했다. "혹시 데이터베이스 컨넥션풀 리셋 타임이랑 타이밍 맞나?" 정확했다. 정확했어. 나는 그 순간 웃음이 나왔다. 우리는 말이 없었지만, 펜을 돌리는 내 행동만으로도 같은 방향으로 생각하게 된 것이다. 아무도 "진정하세요" 하지 않았다. 아무도 "이미 확인했어?" 라고 질문하지 않았다. 그냥 은지는 조용히 나오면서, 자신이 생각한 것을 던져주었다. 이게 바로 개발팀의 협력이다. 코드를 공유하고, 깃허브 이슈를 열고, PR을 리뷰하는 것도 좋지만, 가끔은 그냥 "옆에 있어주는 것"이 최고의 협력이 될 때가 있다.왜 옆자리를 신경 쓰나 지금 생각해보면 이상하다. 왜 내가 펜을 돌리면서 옆자리를 신경 쓰는가. 사실은 이렇다. 개발자들은 대부분 혼자인 것처럼 느껴진다. 깊은 코드의 우물 속에 혼자 떨어져 있는 것 같다. 하지만 나는 항상 옆자리를 본다. 왜냐하면 그 옆자리가 내가 혼자가 아니라는 증거이기 때문이다. 연봉이 높다고 해서 행복한 건 아니고, 위치가 높다고 해서 덜 외로운 것도 아니다. 하지만 옆에 누군가 있다는 건 다르다. 특히 그 사람이 내가 펜을 돌릴 때 뭔가를 느끼고, 나도 그 사람이 펜을 돌릴 때 뭔가를 느낀다면 더욱. 매일 아침 9시에 출근해서 커피 3잔을 마시고, 점심은 김치찌개를 먹고, 배포일에는 10시까지 남아있는 이 루틴. 그 속에서 나를 지탱해주는 건 사실 성취감도 기술도 아니었다. 그냥 옆자리였다. 옆자리에서 "혹시 데이터베이스 컨넥션풀 리셋 타임이랑 타이밍 맞나?"라고 물어주는 은지. 내가 펜을 돌릴 때도 자기 일을 계속하지만 가끔 슬쩍 쳐다보는 준호. 팀장이 PR 리뷰를 몰아줄 때도 옆에서 "힘내" 하는 눈빛으로 응원해주는 그들. 펜은 계속 돈다 오늘도 슬랙 알림이 울렸다. "프로덕션 환경에서 API 응답이 간헐적으로 500 에러를 반환합니다." 내 손이 자동으로 펜을 집었다. 손가락 사이에서 펜이 회전을 시작했다. 옆자리 준호와 은지가 동시에 내 쪽을 봤다. 말 없이. "또 뭐야?" 라고 말하지 않았지만, 그들의 눈빛이 말해주고 있었다. 그리고 이번엔 내가 먼저 입을 열었다. "500 에러라고? 너희는 프로젝트에서 최근에 뭐 바뀐 거 없어?" 은지가 답했다. "어제 배포에서 타임아웃 설정만 조정했는데?" 그리고 준호가 덧붙였다. "혹시 그거 때문일까?" 이렇게 버그는 해결된다. 혼자가 아니라 함께. 펜을 돌리는 내 습관은 이상해 보일 수도 있지만, 사실은 아주 자연스러운 개발자의 신호 언어다. 그리고 그 신호를 받아주는 옆자리의 존재는, 내가 이 일을 계속할 수 있게 해주는 가장 소중한 것이다. 옆자리에 방해가 될까봐 신경 쓰면서도 펜을 도는 이유는, 사실은 나와 함께할 누군가를 바라는 마음이 아닐까. 버그를 혼자 잡는 것도 좋지만, 함께 잡는 게 훨씬 낫다는 걸 알기 때문이다. 내일도 펜을 돌릴 것 같다. 그리고 옆자리가 있을 것 같다. 그것으로 충분하다.펜 하나로 말 없이 나누는 이 신뢰가 결국 버그보다 더 중요한 것 같다.