Showing Posts From

나는

새벽 2시, 나는 왜 아직도 터미널을 열고 있는가

새벽 2시, 나는 왜 아직도 터미널을 열고 있는가

새벽 2시, 나는 왜 아직도 터미널을 열고 있는가 '이것만 하고 자자'는 거짓말 밤 10시. 노트북 화면에 떠 있는 시간을 본다. 충분하다. 오늘은 정말 이것만 하고 자겠다고 다짐한다. 간단한 버그 하나. React 컴포넌트의 렌더링 성능 문제. 5분이면 될 거 같은데. "아, 이거 상태 관리 때문인가? 그럼 리덕스도 한 번 체크해봐야겠는데." 11시 30분. 여전히 같은 화면이다. 근데 원인을 찾았다. 문제는 부모 컴포넌트의 불필요한 재렌더링. useMemo로 감싸면 될 것 같다. 손가락이 움직인다. 코드를 짜고, 테스트해보고, 아차, 이 부분도 최적화하면 더 나을 것 같은데. 새벽 12시. 한 숨을 돌린다. 커피잔이 반쯤 찼다. 아니 벌써 3번째인가. 기억이 안 난다. 슬랙을 본다. 대표님이 저녁에 올린 메시지. "내일 오전에 이 기능 구현 가능할까요?" 아, 이건 아직 안 했다. 지금 하는 이 최적화는 사실 그렇게 급하지 않은데. 그런데... 이미 여기까지 왔는데? 마무리하고 시작하자. 30분만 더.새벽 1시 15분. 이제 정말 끝났다. 빌드를 확인한다. 성공. 테스트를 돌린다. 통과. 배포해볼까? 아니지, 내일 오전에 하면 되지. 이제 정말 자야 한다. 슬랙에 체크 이모지라도 달아놓자. 그런데 문제가 하나 더 보인다. 예상 외의 발견들 버그를 고치다 보니 다른 곳이 눈에 띈다. 것도 아주 오래되고 답답한 부분들. 백엔드 API 응답 시간이 좀 길잖아. DB 쿼리 최적화할 시간도 있을 것 같은데. "아, 이것도 이미 알고 있던 거네. 왜 지금까지 안 했지?" 기술 부채다. 스타트업의 숙명. 급한 기능 개발에만 집중하다 보니 이런 것들이 쌓인다. 그런데 지금 이렇게 밤이 시간이 있으니까, 한 번 봐볼까? 쿼리를 수정해본다. 인덱스를 추가한다. 응답 시간이 200ms에서 50ms로 줄어든다. 정기적. 이제 정말 좋다. 그런데 혹시 DB 풀링 설정도 확인해볼까? 새벽 1시 50분. 노트북 화면에는 여섯 개의 탭이 떠 있다. 터미널, 코드 에디터, 데이터베이스 클라이언트, AWS 콘솔, 모니터링 대시보드, 브라우저. 각각에는 내가 지난 2시간 반 동안 들여놓은 정신과 에너지의 흔적들이 있다. 커밋 메시지를 쓴다. "fix: optimize database query and improve React component rendering" 좋다. 이 정도면 우아한 코드다. 내가 자랑스럽다. 그런데 프로덕션에 배포해도 되나? 한 번 더 테스트를...원맨밴드의 함정 지금 깨닫게 되는 건데, 이게 다 혼자 일 하기 때문이다. 내 옆에 다른 개발자가 있었다면, 어느 순간 "이거 내가 할 거야, 넌 자" 라고 누군가 말해줬을 것이다. 또는 코드 리뷰를 하다가 "이 정도면 충분해" 라고 누군가 멈춰 줬을 것이다. 하지만 지금 이 방에는 나밖에 없다. 내 정신 속 목소리도 나다. 악마 같은 나, 천사 같은 나, 둘 다 나다. 악마 나: "아직 API 응답도 좀 느린데?" 천사 나: "이제 정말 자야 해." 악마 나: "근데 이거 하나만 더..." 그리고 항상 악마 나가 이긴다. 왜냐하면 나는 스스로를 믿기 때문이다. "난 할 수 있어"라는 자신감과 "이건 내가 해야 해"라는 책임감이 섞여 있다. 스타트업이니까 그렇다. 12명이 일하는 회사인데 개발팀은 나 혼자다. 리팩토링? 그건 나중에. 테스트 커버리지? 나중에. 문서화? 나중에. 지금은 기능을 빨리 내야 한다. 내일 오전 회의에서 "이거 언제 되나요?" 라는 질문을 듣고 싶지 않으니까. 그래서 악마 나는 항상 이전을 가한다. "이것만 하고 자. 그럼 내일 아침에 대표님한테 완성된 거 보여줄 수 있어." 완성된 뭔가를 보여주는 걸 좋아한다. 실제로 동작하는 뭔가. 버그 없는 뭔가. 완벽한 뭔가. 그래서 계속 한다. 그리고 놓친다. 내일 아침에 일어났을 때 얼마나 피곤할지를. 밤 11시의 자신감이 새벽 2시의 후회가 되기까지 새벽 2시 정각. 나는 여전히 터미널을 열고 있다. 마지막 배포를 시도한다. 파이프라인이 돌아간다. 몇 분이 지난다. 성공. 모두가 자는 시간에 내 코드는 프로덕션에 올라간다. 어떤 위험도 무릅쓰고. (혹시 버그 있으면 어쩌지? 아니다. 테스트를 다 했잖아. 충분해. 정말 충분해.) 다시 노트북을 닫는다. 이번엔 정말 닫는다. 화면이 어두워진다. 한 숨을 돌린다. 이제 정말 끝이다. 오늘의 악순환이 끝났다. 내일은... 글쎄. 내일도 밤 10시가 오면 "이것만 하고 자자"라고 다짐할 것 같다. 그리고 새벽 2시가 오면, 나는 또 다른 문제를 발견하고 있을 것이다. 다른 버그, 다른 최적화 기회, 다른 기술 부채. 충전 케이블을 빼 놓으러 간다. 침대에 누웠다 일어난다. "아, 슬랙 응답은 했나?" 휴대폰을 든다. 메시지가 없다. 좋다. 아무 장애도 없었다는 뜻이다. 그래도 한 번 더 알림 설정을 확인한다. 음소거는 아닐까. 아니다, 켜져 있다. 침대에 누운다. 천장을 본다. 시간이 간다. 10분, 20분, 30분. 여전히 깨어 있다.악순환을 끊을 수 있을까? 내일 아침. 대표님이 온다. "어제 그 기능 됐어?" "네, 배포했습니다." "오, 빠르네! 그럼 이건 어때?" 또 다른 기능. 우선순위는 높다고 한다. 내일까지는 못 하겠지만, 모레 오전쯤이면 가능할 것 같다. 아마도. "알겠습니다." 다시 밤 10시가 온다. 언제쯤이면 이 악순환이 끝날까? 채용을 성공적으로 하면? 그럼 내 일량이 줄어들 텐데. 하지만 신입을 줄 일이 많지는 않을 것 같다. 어차피 복잡한 부분은 나만 알고 있으니까. 결국 더 많이 해야 할 것 같다. 신입 온온팩팅도 하고, 코드 리뷰도 하고. 아니면 퇴사를 하면? 그럼 서비스가 망할 텐데. 대표님이 다른 개발자를 찾을 때까지. 그걸 생각하니까 떠날 수가 없다. 책임감이 나를 묶는다. 결국 나는 여기 남는다. 밤 10시에 "이것만 하고 자자" 라고 다짐하고, 새벽 2시에 또 다른 버그를 발견하고, 새벽 4시에 침대에 누운다. 그리고 아침 9시에 깬다. 또 다른 메시지가 와 있다. "오전에 회의 있어요." 역시. 한숨을 쉰다. 하지만 일어난다. 이게 내 선택인지, 아니면 상황의 선택인지는 모르겠다. 하지만 분명한 건 새벽 2시에 나는 여전히 터미널을 열고 있다는 것이다. 그리고 내일도, 모레도 그럴 것 같다. 아마도 계속.결국 악순환은 한 가지 더 하다가 시작하는 게 아니라, 그것을 멈출 사람이 없다는 데서 비롯된다.